Matematica e Design [1a ed. 2019]
 978-88-470-3986-5, 978-88-470-3987-2

Table of contents :
Front Matter ....Pages i-xiii
Richiami di base (Edie Miglio, Nicola Parolini, Anna Scotti, Christian Vergara)....Pages 1-23
Punti e vettori nello spazio (Edie Miglio, Nicola Parolini, Anna Scotti, Christian Vergara)....Pages 25-47
Matrici e trasformazioni geometriche (Edie Miglio, Nicola Parolini, Anna Scotti, Christian Vergara)....Pages 49-89
Curve parametriche (Edie Miglio, Nicola Parolini, Anna Scotti, Christian Vergara)....Pages 91-119
Superfici parametriche (Edie Miglio, Nicola Parolini, Anna Scotti, Christian Vergara)....Pages 121-150
Curve Freeform (Edie Miglio, Nicola Parolini, Anna Scotti, Christian Vergara)....Pages 151-175
Superfici Freeform (Edie Miglio, Nicola Parolini, Anna Scotti, Christian Vergara)....Pages 177-187
Curve e superfici di suddivisione (Edie Miglio, Nicola Parolini, Anna Scotti, Christian Vergara)....Pages 189-205
Back Matter ....Pages 207-211

Citation preview

UNITEXT 115

Edie Miglio · Nicola Parolini · Anna Scotti · Christian Vergara

Matematica e Design

UNITEXT - La Matematica per il 3+2 Volume 115

Editor-in-Chief Alfio Quarteroni, Politecnico di Milano, Milan, Italy; EPFL, Lausanne, Switzerland Series Editors Luigi Ambrosio, Scuola Normale Superiore, Pisa, Italy Paolo Biscari, Politecnico di Milano, Milan, Italy Ciro Ciliberto, Università Degli Studi di Roma “Tor Vergata”, Rome, Italy Camillo De Lellis, Institute for Advanced Study, Princeton, NJ, USA Victor Panaretos, Institute of Mathematics, EPFL, Lausanne, Switzerland Wolfgang J. Runggaldier, Università di Padova, Padova, Italy

The UNITEXT - La Matematica per il 3+2 series is designed for undergraduate and graduate academic courses, and also includes advanced textbooks at a research level. Originally released in Italian, the series now publishes textbooks in English addressed to students in mathematics worldwide. Some of the most successful books in the series have evolved through several editions, adapting to the evolution of teaching curricula.

More information about this subseries at http://www.springer.com/series/5418

Edie Miglio • Nicola Parolini • Anna Scotti • Christian Vergara

Matematica e Design

123

Edie Miglio MOX, Dipartimento di Matematica Politecnico di Milano Milano, Italy

Nicola Parolini MOX, Dipartimento di Matematica Politecnico di Milano Milano, Italy

Anna Scotti MOX, Dipartimento di Matematica Politecnico di Milano Milano, Italy

Christian Vergara LABS - Dipartimento di Chimica, Materiali e Ingegneria Chimica “Giulio Natta” Politecnico di Milano Milano, Italy

ISSN versione cartacea: 2038-5714 ISSN versione elettronica: 2532-3318 UNITEXT - La Matematica per il 3+2 ISSN versione cartacea: 2038-5722 ISSN versione elettronica: 2038-5757 ISBN 978-88-470-3986-5 ISBN 978-88-470-3987-2 (eBook) https://doi.org/10.1007/978-88-470-3987-2 © Springer-Verlag Italia S.r.l., part of Springer Nature 2019 Quest’opera è protetta dalla legge sul diritto d’autore e la sua riproduzione è ammessa solo ed esclusivamente nei limiti stabiliti dalla stessa. Le fotocopie per uso personale possono essere effettuate nei limiti del 15% di ciascun volume dietro pagamento alla SIAE del compenso previsto dall’art. 68. Le riproduzioni per uso non personale e/o oltre il limite del 15% potranno avvenire solo a seguito di specifica autorizzazione rilasciata da AIDRO, Corso di Porta Romana n. 108, Milano 20122, e-mail [email protected] e sito web www.aidro.org. Tutti i diritti, in particolare quelli relativi alla traduzione, alla ristampa, all’utilizzo di illustrazioni e tabelle, alla citazione orale, alla trasmissione radiofonica o televisiva, alla registrazione su microfilmo in database, o alla riproduzione in qualsiasi altra forma (stampata o elettronica) rimangono riservati anche nel caso di utilizzo parziale. La violazione delle norme comporta le sanzioni previste dalla legge. L’utilizzo in questa pubblicazione di denominazioni generiche, nomi commerciali, marchi registrati, ecc. anche se non specificatamente identificati, non implica che tali denominazioni o marchi non siano protetti dalle relative leggi e regolamenti. Immagine di copertina: Robot modellato con superfici di suddivisione. Realizzato da Nicolò Azzolin, Carlo Cocchetti e Andrea Picardi come progetto finale del corso di Computer Animation presso il Politecnico di Milano (2018). Questa edizione è pubblicata da Springer-Verlag Italia S.r.l., part of Springer Nature, con sede legale in Via Decembrio 28, 20137 Milano, Italy

Questo libro è dedicato a chi è curioso di trovare la Matematica nelle forme

Prefazione

Il testo è ispirato dalle lezioni tenute dagli autori nell’ambito dei corsi di “Curve e Superfici per il Design” presso la Facoltà di Design del Politecnico di Milano. Saper rappresentare opportunamente per via analitica curve e superfici nello spazio è di capitale importanza nell’ambito del Design e dell’Architettura, in vista della progettazione e costruzione di edifici ed oggetti. Infatti, ad una rappresentazione artistica di una curva o superficie, creata in base a criteri estetici e funzionali, deve seguirne una quantitativa, esprimibile mediante formule matematiche precise che ne garantiscano la riproducibilità e l’implementazione in software di modellazione. Per andare incontro a questa esigenza il presente libro vuole costituire una introduzione alla rappresentazione parametrica di curve e superfici nel piano e nello spazio. Il testo è corredato anche da numerosi esempi per permettere al lettore di applicare le tecniche proposte e verificarne la comprensione. Al fine di rendere ancora più concreta la trattazione, gli strumenti introdotti sono utilizzati per la soluzione di problemi di reale interesse applicativo, raccolti in schede denominate Real life applications. Inoltre per consentire una fruizione pratica dei concetti sviluppati nel libro, molte delle immagini che illustrano gli esempi proposti sono corredate da un QR code (come quello riportato qui a lato) che indirizza al materiale supplementare disponibile online (all’indirizzo https://www.mate.polimi.it/MathAndDesign). In particolare, per ciascuna immagine, sul sito web è possibile trovare il relativo codice sorgente per poterla riprodurre con software di grafica vettoriale open-source, nonché versioni animate e/o navigabili in 3D in modalità interattiva delle immagini stesse. Il primo capitolo contiene alcuni richiami ad argomenti di base necessari per la trattazione successiva: insiemi numerici, trigonometria e derivate. Nel secondo capitolo viene introdotto il concetto di vettore che costituisce l’elemento fondamentale per tutte le descrizioni parametriche discusse nei capitoli successivi. Il Capitolo 3 contiene gli elementi di base del calcolo matriciale e presenta le trasformazioni geometriche. Nei Capitoli 4 e 5 viene introdotta la rappresentazione parametrica di curve e superfici; in entrambi i casi si parte da curve e superfici

vii

viii

Prefazione

semplici (retta e piano) per arrivare alla descrizione di curve e superfici complesse ottenute per generazione utilizzando le trasformazioni geometriche precedentemente descritte. I Capitoli 6 e 7 introducono la rappresentazione di curve e superfici utilizzando funzioni spline (Bézier, B-spline e NURBS). Infine il Capitolo 8 presenta alcuni cenni alle curve e superfici di suddivisione, metodi di rappresentazione avanzati comunemente impiegati nella grafica computazionale. Questo testo è concepito per i corsi introduttivi di matematica alle scuole di Design ed Architettura. Per questo motivo la trattazione privilegia il carattere operativo rispetto al formalismo e all’astrazione. Le conoscenze richieste sono richiamate nei due capitoli iniziali e sono tutte introdotte nelle scuole superiori. Per concludere vorremmo ringraziare le persone che negli ultimi anni hanno svolto le esercitazioni ed i laboratori dei nostri corsi di “Curve e Superfici per il Design” presso il Politecnico di Milano, in particolare: Mario Argeri, Francesco Cattoglio, Luca Del Grosso, Alessio Fumagalli, Guido Iori, Andrea Mola, Mattia Penati, Roberto Porcù, Daniele Rossi, Sara Tomasoni e Stefano Zonca. Ringraziamo inoltre Franca Caliò per il continuo confronto e le fruttose interazioni sulla didattica della Matematica per l’Architettura ed il Design. Ringraziamo infine Francesca Bonadei che ha creduto da subito in questo progetto ed ci ha accompagnato con professionalità (e pazienza) durante la redazione del testo. Milano, Italy Febbraio 2019

Edie Miglio Nicola Parolini Anna Scotti Christian Vergara

Indice

1

Richiami di base . . . . . . . . . . . . . . . . . . . . . . . . 1.1 Insiemi numerici . . . . . . . . . . . . . . . . . . . . . 1.2 Richiami di trigonometria . . . . . . . . . . . . . . 1.3 Introduzione alle funzioni . . . . . . . . . . . . . . 1.4 Esempi di funzioni particolari . . . . . . . . . . . 1.4.1 Funzioni trigonometriche . . . . . . . . . 1.4.2 Funzioni polinomiali . . . . . . . . . . . . 1.4.3 Funzioni esponenziali e logaritmiche . 1.5 Continuità e derivabilità . . . . . . . . . . . . . . . 1.6 Un cenno alle funzioni di due variabili . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

1 1 3 6 10 10 14 15 17 21

2

Punti e vettori nello spazio . . . . . . . . . . . . . . . . . . . . . . 2.1 Sistemi di riferimento e punti . . . . . . . . . . . . . . . . . 2.1.1 Sistema di riferimento cartesiano . . . . . . . . . 2.1.2 Altri sistemi di riferimento . . . . . . . . . . . . . . 2.2 Real life applications: le coordinate geografiche . . . . 2.3 Real life applications: gli spazi dei colori . . . . . . . . . 2.4 Punti e vettori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.1 Definizione di vettore . . . . . . . . . . . . . . . . . . 2.4.2 Operazioni coi vettori: approccio geometrico . 2.4.3 Relazione fra punti e vettori . . . . . . . . . . . . . 2.4.4 Operazioni coi vettori: approccio algebrico . . 2.5 Coordinate omogenee . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

25 26 26 29 32 33 34 34 35 38 40 44

3

Matrici e trasformazioni geometriche . . . . . . . . . 3.1 Operazioni tra matrici . . . . . . . . . . . . . . . . . . 3.1.1 Somma e differenza di matrici . . . . . . 3.1.2 Prodotto tra uno scalare e una matrice . 3.1.3 Prodotto matriciale . . . . . . . . . . . . . . . 3.2 Alcune matrici particolari . . . . . . . . . . . . . . . 3.2.1 Matrici invertibili e determinante . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

49 50 50 52 52 54 57

. . . . . . . . . .

. . . . . . . . . .

. . . . . . .

. . . . . . . . . .

. . . . . . .

. . . . . . . . . .

. . . . . . .

. . . . . . . . . .

. . . . . . .

. . . . . . .

ix

x

Indice

3.3 Trasformazioni geometriche affini . . . . . . . . . . . 3.3.1 Identità . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2 Scalatura . . . . . . . . . . . . . . . . . . . . . . . . 3.3.3 Deformazione di taglio (o shear) . . . . . . . 3.3.4 Rotazione . . . . . . . . . . . . . . . . . . . . . . . 3.3.5 Riflessione . . . . . . . . . . . . . . . . . . . . . . . 3.3.6 Traslazione . . . . . . . . . . . . . . . . . . . . . . 3.3.7 Costruire una matrice di trasformazione . 3.4 Trasformazioni con coordinate omogenee . . . . . . 3.4.1 Traslazione con coordinate omogenee . . . 3.4.2 Trasformazioni affini arbitrarie . . . . . . . . 3.5 Composizione di trasformazioni . . . . . . . . . . . . . 3.5.1 Classificazione delle trasformazioni affini 3.6 Real life applications: i sette fregi . . . . . . . . . . . 3.7 Trasformazioni non affini . . . . . . . . . . . . . . . . . 3.7.1 Proiezione ortogonale . . . . . . . . . . . . . . . 3.7.2 Proiezione prospettica . . . . . . . . . . . . . . 4

5

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

60 62 62 64 67 70 72 74 75 76 76 77 80 81 83 83 85

Curve parametriche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1 Rappresentazione di una curva nel piano . . . . . . . . . . . . 4.1.1 Forma cartesiana . . . . . . . . . . . . . . . . . . . . . . . . 4.1.2 Forma parametrica . . . . . . . . . . . . . . . . . . . . . . . 4.2 Rette nel piano e nello spazio . . . . . . . . . . . . . . . . . . . . 4.2.1 Rette in forma parametrica . . . . . . . . . . . . . . . . . 4.2.2 Posizione reciproca di due rette nel piano e nello spazio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Generazione di curve parametriche . . . . . . . . . . . . . . . . 4.3.1 Circonferenza . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.2 Ellisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.3 Iperbole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.4 Parabola . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.5 Spirale di Archimede . . . . . . . . . . . . . . . . . . . . . 4.3.6 Elica cilindrica . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.7 Elica conica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4 Real life applications: la traiettoria di un pedale . . . . . . . 4.5 Retta tangente a una curva . . . . . . . . . . . . . . . . . . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

91 91 92 94 95 96

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

101 104 106 108 110 111 112 113 113 115 116

Superfici parametriche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1 Rappresentazione di superfici nello spazio . . . . . . . . . . . . . . 5.2 Piani . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.1 Forma parametrica di un piano passante per l’origine . 5.2.2 Forma parametrica di un piano generico . . . . . . . . . .

. . . . .

. . . . .

. . . . .

121 121 123 123 126

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

Indice

xi

5.3 Superfici di rivoluzione . . . . . . . . . . . . . . . 5.3.1 Superficie sferica . . . . . . . . . . . . . . 5.3.2 Superficie torica . . . . . . . . . . . . . . . 5.3.3 Ellissoide . . . . . . . . . . . . . . . . . . . 5.3.4 Cilindro retto a base circolare . . . . . 5.3.5 Superficie conica . . . . . . . . . . . . . . 5.4 Superfici rigate . . . . . . . . . . . . . . . . . . . . . 5.5 Real life applications: mappatura di pattern 5.6 Real life applications: St. Mary Axe . . . . . 5.7 Piano tangente . . . . . . . . . . . . . . . . . . . . . 5.8 Real life applications: creazione di texture .

. . . . . . . . . . .

. . . . . . . . . . .

129 130 131 133 135 138 139 143 145 146 149

. . . . . True Type . ......... .........

. . . . . . . .

. . . . . . . .

. . . . . . . .

151 152 157 160 162 168 169 172

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

177 178 180 181 185

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

189 189 192 195 197 203 204

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

6

Curve Freeform . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1 Curve di Bézier . . . . . . . . . . . . . . . . . . . . . . . . 6.1.1 Algoritmo di De Casteljau . . . . . . . . . . . 6.2 Proprietà delle curve di Bézier . . . . . . . . . . . . . . 6.3 Raccordo di curve di Bézier . . . . . . . . . . . . . . . 6.4 Real life applications: le curve di Bézier nei font 6.5 Curve B-spline . . . . . . . . . . . . . . . . . . . . . . . . . 6.6 Curve NURBS . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

7

Superfici Freeform . . . . . . . . . . . . . . 7.1 Superfici di Bézier . . . . . . . . . . . 7.2 Proprietà delle superfici di Bézier 7.3 Raccordo di superfici di Bézier . . 7.4 Superfici B-spline e NURBS . . . .

. . . . .

8

Curve e superfici di suddivisione . . . . . . . . . . . . . . 8.1 Curve di suddivisione . . . . . . . . . . . . . . . . . . . 8.1.1 L’algoritmo di Chaikin . . . . . . . . . . . . . 8.1.2 Le B-spline come curve di suddivisione 8.2 Superfici di suddivisione . . . . . . . . . . . . . . . . . 8.3 Real life applications: l’animazione digitale . . . 8.4 Real life applications: la stampa 3D . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . .

. . . . . . . . . . .

Riferimenti bibliografici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 Indice analitico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209

Gli Autori

Edie Miglio è Professore Associato di Analisi Numerica presso il Dipartimento di Matematica del Politecnico di Milano. Si occupa di modellistica numerica per problemi differenziali con particolare riferimento alla dinamica dei fluidi a superficie libera e geodinamica. È stato responsabile di diversi progetti di ricerca finanziati da industrie. È docente di Metodi Numerici nell’ambito dei corsi di Laurea in Ingegneria e Design. Nicola Parolini è Professore Associato di Analisi Numerica presso il Dipartimento di Matematica del Politecnico di Milano. Si occupa di modellistica numerica per problemi differenziali con particolare riferimento alla dinamica dei fluidi a superficie libera e all’interazione fluido-struttura. Da sempre interessato allo sviluppo di modelli matematici con applicazioni in ambito industriale, è stato responsabile di numerosi progetti di ricerca e consulenza finanziati da partner industriali. Tiene corsi di Metodi Numerici e Calcolo Scientifico in corsi di Laurea di Ingegneria e Design. Recentemente si è anche dedicato a progetti di formazione rivolti ad insegnanti di matematica delle scuole secondarie e ad attività di divulgazione scientifica. Anna Scotti è ricercatrice presso il Dipartimento di Matematica del Politecnico di Milano. Si è laureata in Ingegneria Aeronautica nel 2006 e ha conseguito il dottorato di ricerca in Ingegneria Matematica nel 2010. Da alcuni anni tiene corsi di Matematica per studenti di Design. La sua attività di ricerca si concentra sui metodi di approssimazione numerica applicati a problemi nell’ambito delle geoscienze, quali il flusso in mezzi porosi e la geomeccanica. Christian Vergara è professore associato di Analisi Numerica dal 2015, attualmente presso il LABS, Dipartimento di Chimica, Materiali e Ingegneria Chimica “Giulio Natta”, Politecnico di Milano. Ha ottenuto il titolo di Dottore di Ricerca con un dottorato in Ingegneria Matematica nel 2006. I suoi principali interessi di ricerca sono la approssimazione numerica per problemi di interazione fluido-struttura e di accoppiamento eterogeneo, la modellazione numerica del sistema cardiovascolare, sia in termini di fluido-dinamica del sangue che di attività elettrica del cuore, e l’applicazione a casi di interesse clinico.

xiii

1

Richiami di base

Non tutto ciò che può essere contato conta e non tutto ciò che conta può essere contato. (A. Einstein)

In questo capitolo si fornisce un breve richiamo degli insiemi numerici e delle loro proprietà. Si dà inoltre una breve introduzione alle funzioni, al concetto di limite e a quello di derivata. Si forniscono inoltre le basi della trigonometria e delle funzioni polinomiali, esponenziali e logaritmiche. Il sistema di numeri che siamo ogni giorno abituati (spesso costretti) ad utilizzare nella vita privata e al lavoro, cioè il sistema decimale, si basa semplicemente su un’esigenza “anatomica”: il numero delle nostre dita è 10, per cui è stato da sempre molto semplice “ricominciare” a contare una volta arrivati al 10 o ai suoi multipli. Niente vieterebbe di usare un’altra convenzione basata su un altro numero, differente da 10, è solo una questione di abitudine. Ad esempio, i calcolatori non “contano” in base 10 ma in base 8(=23 ) o 16(=24 ), in quanto la logica binaria (acceso/spento) su cui si basa il loro funzionamento rende molto più comodo usare queste basi. Dato lo scopo di questo libro, considereremo qui solamente la base 10, per cui un qualsiasi numero può essere visto come somma di opportuni coefficienti per le potenze di 10. Ad esempio, il numero 347,6 può essere scritto come: 3·102 + 4·101 + 7·100 + 6·10−1 (si ricorda che 100 = 1).

1.1 Insiemi numerici I numeri possono essere raggruppati in diversi modi, in base alle loro caratteristiche. L’insieme più grande di numeri che considereremo in questo testo è l’insieme dei

© Springer-Verlag Italia S.r.l., part of Springer Nature 2019 E. Miglio et al., Matematica e Design, UNITEXT - La Matematica per il 3+2 115, https://doi.org/10.1007/978-88-470-3987-2_1

1

2

1 Richiami di base

a

x

b

a

c

x

b

...

Figura 1.1 Fra due numeri a e b esiste sempre almeno un numero reale c compreso fra essi (continuità dei numeri reali)

numeri reali1 . I numeri reali sono tanti quanti i punti di una retta e la loro definizione può essere data proprio associando ad ogni punto della retta un numero reale. I numeri reali sono quindi indefinitamente vicini uno all’altro, così come i punti di una retta, in cui non esistono “buchi”. Infatti, dati due numeri reali, ne esiste sempre almeno un terzo compreso fra i due, proprio come fra due punti di una retta ne esiste sempre almeno un terzo compreso fra i due, si veda Figura 1.1. L’insieme dei numeri reali si indicherà con R e scriveremo x ∈ R per intendere che “un numero x appartiene all’insieme dei reali”. I numeri reali si “estendono” all’infinito, in particolare a “meno infinito” (−∞) e “più infinito” (+∞), anche se formalmente questi due estremi non appartengono all’insieme dei numeri reali. Un particolare sottoinsieme dei numeri reali è dato dai numeri naturali N: 0, 1, 2, 3, . . .. Questi numeri, come i numeri reali, sono infiniti, però di una infinità numerabile: possiamo cioè pensare di “contarli”. Al contrario l’insieme dei numeri reali, costituendo un “continuo” di numeri che non ammette interruzioni, è “più ampio” di quello dei numeri naturali, pur essendo entrambi infiniti. Formalmente, questo equivale a dire che non esiste una corrispondenza biunivoca (cioè “uno a uno”) fra i numeri reali e i numeri naturali. Se aggiungiamo ai numeri naturali anche i numeri negativi −1, −2, −3, . . ., otteniamo l’insieme dei numeri interi Z. Anch’essi sono numerabili e quindi esiste una corrispondenza biunivoca fra i numeri interi e i numeri naturali, anche se il primo insieme contiene il secondo. L’insieme dei numeri p esprimibili come rapporto di due numeri interi ( p = a/b, a, b ∈ Z) forma l’insieme dei numeri razionali Q. Pur contenendo ovviamente i numeri interi, anche i numeri razionali formano una inifinità numerabile. Questo

1 Non

consideriamo qui i numeri complessi, di cui i numeri reali sono un caso particolare.

1.1 Insiemi numerici

3

risultato, apparentemente paradossale, è stato dimostrato da Georg Cantor a fine 1800. Un altro insieme di numeri che contiene i numeri razionali, è quello dei numeri algebrici. Questi ultimi sono le soluzioni delle equazioni polinomiali del tipo a0 + a1 x + a2 x 2 + a3 x 3 + . . . = 0, √ con coefficienti ai razionali. Un esempio di numero algebrico non razionale è 2, che è di fatto soluzione ad esempio dell’equazione x 2 − 2 = 0. La sua irrazionalità fu mostrata nel VI secolo a.C. da Pitagora. I numeri algebrici sono anch’essi numerabili, risultato dimostrato anch’esso da Cantor. Ciò significa che esistono altri numeri irrazionali oltre agli algebrici che devono “riempire” tutti i “buchi” che questi ultimi lasciano in quanto “meno numerosi” di tutti i numeri reali. Tali numeri si dicono trascendenti e sono definiti proprio come numeri irrazionali (cioè non esprimibili come rapporto di interi) non algebrici (cioè che non sono radici di polinomi a coefficienti razionali). Poiché i numeri irrazionali non sono numerabili (se lo fossero, non sarebbe numerabile l’insieme complementare, ossia quello dei razionali), mentre i numeri algebrici lo sono, e poiché i numeri irrazionali sono dati dall’unione dei numeri algebrici e di quelli trascendenti, ne segue che i numeri trascendenti non sono numerabili. Possiamo quindi dire informalmente che “quasi tutti” i numeri sono trascendenti, essendo molti più dei rimanenti (cioè degli algebrici). Un esempio di numero trascendente è π.

1.2 Richiami di trigonometria La trigonometria è la branca della matematica che studia le relazioni che sussistono tra gli angoli ed i lati di un triangolo. Alla base della trigonometria vi è il Teorema di Talete (si veda Figura 1.2). Teorema 1.1 Una retta parallela ad un lato di un triangolo taglia gli altri due lati del triangolo in modo proporzionale. Con riferimento al triangolo di Figura 1.2 si ha quindi che: |AB  | |AC  | = , |B  B| |C  C| dove con |P Q| si è indicata la lunghezza del segmento di estremi P e Q, si veda Capitolo 2. Come diretta conseguenza del Teorema di Talete si ha che |AB  | |AC  | = |AB| |AC|

e

|B  C  | |AC  | = . |BC| |AC|

(1.1)

4

1 Richiami di base C r C

θ A

B

B

Figura 1.2 Rappresentazione grafica del Teorema di Talete C

r C

θ A

B

B

Figura 1.3 Rappresentazione grafica del Teorema di Talete nel caso di un triagolo rettangolo

Nel caso particolare costituito da un triangolo rettangolo (si veda la Figura 1.3) dalla prima delle (1.1) si ottiene |AB  | |AB| = . |AC  | |AC| In altri termini, dato un angolo θ, in un qualsiasi triangolo rettangolo di vertice A in corrispondenza di θ, il rapporto tra la lunghezza del cateto adiacente a θ e la lunghezza dell’ipotenusa è una costante; a tale costante viene dato il nome di coseno di θ e si indica con cos(θ). In modo analogo dalla seconda delle (1.1) si può ricavare che |B  C  | |BC| = ,  |AC | |AC| cioè il rapporto tra la lunghezza del cateto opposto a θ e la lunghezza dell’ipotenusa è una costante; a tale costante viene dato il nome di seno di θ e si indica con sin(θ). Il seno ed il coseno di un angolo sono quantità minori di 1 in quanto la lunghezza di un cateto è sempre inferiore alla lunghezza dell’ipotenusa. Inoltre, facendo sempre

1.2 Richiami di trigonometria

5

riferimento alla Figura 1.3, si ha, per il Teorema di Pitagora, che |AC|2 = |AB|2 + |BC|2 e dividendo entrambi i membri per |AC|2 si ottiene     |BC| 2 |AB| 2 + = (cos(θ))2 + (sin(θ))2 = 1. |AC| |AC|

(1.2)

La precedente relazione è detta relazione fondamentale della trigonometria. Combinando la prima e la seconda delle (1.1) si ha anche che |BC| |B  C  | = , |AB| |AB  | cioè il rapporto tra le lunghezze dei cateti è costante; a tale costante viene dato il nome di tangente dell’angolo θ e si indica con tan(θ). Si noti che tan(θ) =

|BC| |BC| |AC| sin(θ) = = , |AB| |AC| |AB| cos(θ)

cioè la tangente è il rapporto tra il seno ed il coseno dell’angolo. Le definizioni fornite di seno, coseno e tangente di un angolo permettono di comprenderne a fondo il significato geometrico che sarà di fondamentale importanza nel seguito del testo. Esempio 1.1 Si consideri il triangolo ABC di Figura 1.4 di cui sia nota la lunghezza del lato AC e l’ampiezza θ dell’angolo in A. Si vuole calcolare la lunghezza della proiezione ortogonale del lato AC sul lato AB, cioè la lunghezza del segmento AH in figura. Ricordando la definizione geometrica del coseno di un angolo si ha che |AH | = cos(θ) ⇒ |AH | = |AC| cos(θ). |AC| C

θ A

H

B

Figura 1.4 Calcolo della lunghezza della proiezione del lato AC sul lato AB

(1.3)

6

1 Richiami di base

Esempio 1.2 Si consideri il triangolo rettangolo di vertici A, B, C in Figura 1.5, dove si è indicata con I la lunghezza dell’ipotenusa e con C1 e C2 le lunghezze dei due cateti. Sia θ l’angolo che il cateto 1 forma con l’ipotenusa. Dalla definizione delle funzioni seno e coseno, abbiamo le seguenti uguaglianze, che mettono in relazione la lunghezza dei cateti e dell’ipotenusa: C1 = I cos(θ),

C2 = I sin(θ).

Dalle seguenti relazioni, ricaviamo che C2 = C1

sin(θ) = C1 tan(θ). cos(θ) B

I C2 θ C

A C1

Figura 1.5 Triangolo rettangolo con cateti e ipotenusa

Bisogna, tuttavia, sottolineare come le definizioni geometriche siano valide a rigore solo quando l’ampiezza dell’angolo in A è compresa tra 0 e 90◦ . L’estensione al caso di angolo qualunque richiede l’introduzione della circonferenza goniometrica che sarà oggetto della Sezione 1.4.1. In questo contesto facciamo solo notare come la circonferenza goniometrica riprenda le definizioni appena date nel caso particolare in cui l’ipotenusa del generico triangolo rettangolo abbia lunghezza unitaria.

1.3 Introduzione alle funzioni Dato un sottoinsieme D dei numeri reali, al limite coincidente con R stesso (D ⊆ R), si definisce funzione f una applicazione che associa ad ogni numero x ∈ D uno ed un solo numero y ∈ R, che viene indicato con y = f (x).

1.3 Introduzione alle funzioni

7

In Figura 1.6 sono rappresentate due curve: quella di sinistra è di fatto il grafico di una funzione, mentre quella di destra non lo è. Infatti, si noti come, in quest’ultima, ad alcuni valori di x corrispondano due valori di f (x). Osserviamo come in Figura 1.6 e nelle successive si sia fatto uso della rappresentazione cartesiana, che formalmente sarà introdotta solamente nel Capitolo 2. Qui, per il momento, si pensi solo ad un modo per visualizzare il concetto che ad un numero x ∈ D possa essere associato al più un valore f (x). L’insieme D è detto dominio della funzione f e l’insieme dei valori y ∈ R tali per cui esiste almeno un valore x ∈ D con y = f (x) è detto codominio C della funzione f . Diamo di seguito l’importante definizione di limite di una funzione. Iniziamo con il concetto di limite destro. Euristicamente, diremo che il limite destro di una funzione è pari a b per x che si avvicina da destra, cioè per valori maggiori, ad un valore a, ossia lim f (x) = b,

x→a +

quando la funzione assume valori arbitrariamente vicini a b qualora x si avvicini ad a da destra. In termini rigorosi, ciò accade quando ∀ε > 0, ∃δ > 0 tale che, se x − a < δ, allora | f (x) − b| < ε, si veda la Figura 1.7 in alto a sinistra. Nella precedente relazione abbiamo utilizzato il simbolo ∀ che significa “per ogni” e il simbolo ∃ che significa “esiste”. y

y

x

S`I

x

NO

Figura 1.6 Esempio di funzione (sinistra) e di curva non rappresentabile mediante una funzione (destra). Nell’ultimo caso, si osservi come ad un punto x corrispondano due valori di y = f (x)

8

1 Richiami di base δ

(a)



δ

(b)

y



b

b

x

a



(c)



y

x

a

y

b x

a

Figura 1.7 Definizione di limite destro (a), limite sinistro (b) e limite (c)

Analogamente, diremo che il limite sinistro di una funzione per x che si avvicina da sinistra, cioè per valori minori, ad un valore a è pari a b, ossia lim f (x) = b,

x→a −

quando la funzione assume valori arbitrariamente vicini a b qualora x si avvicini ad a da sinistra. In termini rigorosi, ciò accade quando ∀ε > 0, ∃δ > 0 tale che, se a − x < δ, allora | f (x) − b| < ε, si veda la Figura 1.7 in alto a destra. Si dice che una funzione ammette limite per x = a e che il suo valore è b se lim f (x) = lim f (x) = b

x→a +

x→a −

e si indica nel seguente modo lim f (x) = b,

x→a

1.3 Introduzione alle funzioni

9

cioè il limite di una funzione quando x si avvicina ad un valore a è pari a b se la funzione assume valori arbitrariamente vicini a b qualora x si avvicini ad a. In termini rigorosi, ciò accade quando ∀ε > 0, ∃δ > 0 tale che, se |x − a| < δ, allora | f (x) − b| < ε, si veda la Figura 1.7 in basso. Nelle precedenti definizioni sia a sia b possono assumere il valore +∞ o −∞. Non ci soffermiamo qui sulla definizione rigorosa di limite nel caso in cui a e/o b assumano valore infinito né sulle procedure per il calcolo dei limiti. Per maggiori dettagli si veda ad esempio [5]. Tuttavia, a scopo illustrativo, forniamo di seguito tre esempi di limiti di questo tipo. Esempio 1.3 Data la funzione f (x) =

x , si ha x +1 lim

x→+∞

f (x) = 1.

Esempio 1.4 Data la funzione f (x) =

1 (rappresentata in Figura 1.8), x −1

lim f (x) = +∞,

x→1+

lim f (x) = −∞.

x→1−

y

x=1

Figura 1.8 Esempio di una funzione con limiti infiniti per x → 1

x

10

1 Richiami di base

Esempio 1.5 Data la funzione f (x) = x 3 − 1 (rappresentata in Figura 1.9), lim

x→+∞

f (x) = +∞.

y

x=1

x

Figura 1.9 Esempio di una funzione che ammette un limite infinito per x → +∞

1.4 Esempi di funzioni particolari In questa sezione forniremo esempi di particolari classi di funzioni che saranno utili per il prosieguo del libro. In particolare, verranno date le definizioni e le principali proprietà delle funzioni trigonometriche, polinomiali, esponenziali e logaritmiche.

1.4.1 Funzioni trigonometriche Una particolare classe di funzioni è costituita dalle funzioni trigonometriche che, come anticipato nella Sezione 1.2, consentono di estendere la definizione di seno e coseno al caso di un angolo di ampiezza arbitraria. Per esse, la variabile assume il significato di angolo, perciò esse rivestono una particolare importanza nella geometria e di conseguenza nel design. L’estensione del concetto di seno e coseno passa attraverso l’introduzione della cosiddetta circonferenza goniometrica cioè la circonferenza di raggio unitario e di centro C. Sia θ l’angolo compreso fra l’asse orizzontale e una semiretta che parte da C e che interseca la circonferenza in P, si veda Figura 1.10. L’angolo θ è spesso misurato in radianti. Dato un angolo θ misurato in gradi, θ = X ◦ , il suo valore

1.4 Esempi di funzioni particolari

11

2π . Quindi, ad esempio, l’angolo di 90◦ corrisponde 360 a π/2 radianti, l’angolo di 180◦ a π radianti, l’angolo di 360◦ a 2π radianti. Muovendosi verticalmente dal punto P si incontra l’asse orizzontale nel punto Q. Si definisce:

espresso in radianti vale θ = X

– Seno dell’angolo θ la lunghezza del segmento che unisce Q a P. – Coseno dell’angolo θ la lunghezza del segmento che unisce C a Q. Le definizioni appena fornite ovviamente coincidono con quelle presentate nella Sezione 1.2 per θ ∈ [0, π/2]. Si noti come la lunghezza di un segmento si intenda qui con segno, in particolare essa è positiva (negativa) muovendosi da sinistra verso destra (da destra verso sinistra) o dal basso verso l’alto (dall’alto verso il basso). Seno e coseno quindi possono assumere valori compresi fra −1 e 1 (estremi inclusi). In Tabella 1.1 sono riportati i valori di seno e coseno per alcuni angoli θ ∈ [0, π/2]. Inoltre, notiamo che le funzioni seno e coseno assumono valori positivi o negativi in accordo con la Tabella 1.2. Per estendere i valori delle funzioni seno e coseno riportati in Tabella 1.1 (ma in generale anche per tutti gli altri valori di θ ∈ [0, π/2]), ad angoli maggiori di π/2 si

Figura 1.10 Definizione delle funzioni seno e coseno

P sin(θ)

θ C

Q cos(θ)

Tabella 1.1 Valori notevoli delle funzioni seno, coseno e tangente per θ ∈ [0, π/2] θ

sin(θ)

cos(θ)

tan(θ)

0 π 3 π 4 π 3 π 2

0 1 2 √ 2 2 √ 3 2 1

1 √ 3 2 √ 2 2 1 2 0

0 √ 3 3 1 √ 3 ∞

12

1 Richiami di base

Tabella 1.2 Segno delle funzioni seno, coseno e tangente al variare di θ ∈ [0, 2π] θ π 00

0, si veda Figura 1.16. Un valore notevole della base a usato sia per le funzioni esponenziali che per quelle logaritmiche è dato dal numero di Nepero e. Esso è un numero trascendente, il cui valore è pari a 2.7182.... ed assieme a π è tra le costanti più importanti in matematica perché compare in alcune identità fondamentali2 La funzione e x è l’unica

2 Si pensi ad esempio alla celebre identità eiπ + 1

per definire i numeri complessi.

= 0, con i =

√ −1 l’unità immaginaria necessaria

1.4 Esempi di funzioni particolari

17

y

y

x

x

Figura 1.16 Esempi di funzioni logaritmiche. Caso a > 1 (sinistra) e caso 0 < a < 1 (destra)

la cui derivata (si veda sezione successiva) è uguale alla funzione stessa. La funzione logaritmo in base e, loge x, viene chiamata logaritmo naturale e si indica con ln x.

1.5 Continuità e derivabilità Una funzione si dice essere continua per x = a se lim f (x) = f (a).

x→a

Se ciò non succede, la funzione si dice essere discontinua in x = a. Ciò può avvenire se: i) I limiti destro e sinistro esistono e sono finiti ma assumono valori diversi (discontinuità di prima specie o “a salto”). ii) Almeno uno dei due limiti destro e sinistro non esiste o assume valore ±∞ (discontinuità di seconda specie). iii) Il limite sinistro e destro esistono finiti e sono coincidenti, ma la funzione assume un valore diverso oppure non è ivi definita (discontinuità di terza specie o “eliminabile”). Si veda la Figura 1.17 per esempi qualitativi dei casi citati. Una funzione f si dice essere continua in un insieme D1 ⊆ D se è continua per ogni x ∈ D1 .

18

1 Richiami di base

(a)

(b)

y

y

x

x

y

(c)

x

Figura 1.17 Esempi di discontinuità: (a) la funzione ammette limiti sinistro e destro diversi per x = 1 (discontinuità di prima specie); (b) la funzione ammette limite a −∞ per x = −1 (discontinuità di seconda specie); (c) la funzione ammette limiti sinistro e destro finiti e coincidenti per x = 0, ma non è ivi definita

Esempio 1.13   La funzione y(x) = arctan x1 presenta una discontinuità di prima specie in     x = 0. Infatti, essendo rispettivamente tan − π2 = −∞ e tan π2 = ∞, si ha     π π 1 1 =− , = . lim arctan lim arctan − + x 2 x 2 x→0 x→0 Esempio 1.14 La funzione y(x) = x = 1. Infatti si ha

1 (x−1)2

presenta una discontinuità di seconda specie in

1 = +∞. x→1 (x − 1)2 lim

1.5 Continuità e derivabilità

19 y

θ

x

a

Figura 1.18 Rappresentazione geometrica del concetto di derivata

Esempio 1.15 La funzione y(x) = sin(x) x presenta una discontinuità di terza specie in x = 0. Infatti x = 0 non appartiene al dominio perché annulla il denominatore. Tuttavia, si ha lim

x→0−

sin(x) sin(x) = lim = 1. + x x x→0

Si consideri una funzione f continua in D1 . Allora, se per x = a esiste il limite lim

h→0

f (a + h) − f (a) , h

quest’ultimo prende il nome di derivata di f per x = a e si indica con f  (a). Dal punto di vista geometrico assume il significato di coefficiente angolare della retta tangente ad f per x = a, si veda il Capitolo 4 per la definizione di retta tangente. In altri termini, si ha f  (a) = tan(θ), con θ l’angolo compreso fra l’asse orizzontale e la tangente, si veda Figura 1.18. Esempi del calcolo della derivata di funzioni note sono (x) = 1, (x 2 ) = 2x, (x n ) = nx n−1 , (k f ) = k f  (per k costante), (sin(x)) = cos(x), (cos(x)) = − sin(x).

20

1 Richiami di base

Per la derivata del prodotto e del rapporto fra due funzioni f e g valgono le seguenti formule:   f f  g − f g = . ( f g) = f  g + f g  , g g2 Esempio 1.16 Data la funzione f (x) = cos(x)x 3 , il valore della derivata di f nel punto x = π vale     f  (π) = f  (x)|x=π = (cos(x)) x 3 + cos(x) x 3 |x=π   = − sin(x)x 3 + 3 cos(x)x 2 |x=π = −3π 2 . Richiamiamo infine la regola di derivazione per le funzioni composte. Date due funzioni a valori reali f (x) e g(x), la loro composizione è definita dalla funzione h(x) = g( f (x)), dove la funzione f , in questo caso, risulta essere l’argomento della funzione g. È possibile calcolare la derivata della funzione h rispetto al suo argomento x attraverso la regola di derivazione delle funzioni composte, che è data dalla seguente relazione h  (x) = g  ( f (x)) f  (x), vale a dire che la derivata di h(x) è data dalla derivata di g (la funzione più “esterna” della composizione) rispetto al suo argomento, per la derivata di f (la funzione più interna). L’utilizzo pratico di questa regola di derivazione è mostrato nel seguente esempio. Esempio 1.17 Data la funzione h(x) = cos(x 2 + 2x − 1), essa può essere letta come la composizione della funzione trigonometrica g(x) = cos(x) e della funzione polinomiale f (x) = x 2 + 2x − 1. Ricordando che la derivata del coseno è data da g  (x) = (cos(x)) = − sin(x) e che la derivata del polinomio è f  (x) = (x 2 + 2x − 1) = 2x + 2,

1.5 Continuità e derivabilità

21

applicando la regola di derivazione delle funzioni composte, si ha che la derivata di h è data da h  (x) = g  ( f (x)) f  (x) = − sin(x 2 + 2x − 1)(2x + 2).

1.6 Un cenno alle funzioni di due variabili Diamo in questa sezione qualche cenno alle funzioni di due variabili che rivestiranno un ruolo fondamentale nella rappresentazione parametrica di superfici, si veda Capitolo 5. Il dominio in questo caso è dato da un sottoinsieme D di R2 (al limite coincidente con R2 stesso) dove con R2 si è indicato l’insieme delle coppie ordinate di numeri reali x1 , x2 . Si definisce funzione di due variabili f un’applicazione che associa ad ogni coppia di numeri (x1 , x2 ) ∈ D uno ed un solo numero x3 ∈ R, che viene indicato con x3 = f (x1 , x2 ). Così come il grafico di una funzione di una variabile definisce una curva nel piano, una funzione di due variabili definisce una superficie nello spazio. Possiamo pensare che, dato un punto nel piano di coordinate (x1 , x2 ) = (a, b), f (a, b) rappresenti la “quota”, cioè l’altezza della superficie rispetto al piano in quel punto (si veda Figura 1.19).

Figura 1.19 Grafico di una funzione di due variabili

22

1 Richiami di base

Figura 1.20 Interpretazione geometrica delle derivate parziali rette tangenti al grafico della funzione

∂f ∂f , come pendenza di due ∂x1 ∂x2

Il concetto di limite si estende in maniera naturale dal caso di funzione di una variabile. In questo caso abbiamo lim

(x1 ,x2 )→(a,b)

f (x1 , x2 ) = l

se il valore della funzione tende a l quando x1 e x2 si avvicinano ad a e b rispettivamente. Ciò permette di estendere in maniera naturale anche il concetto di continuità. Per quanto riguarda il concetto di derivata, notiamo che in questo caso possiamo definire due derivate distinte, una fatta rispetto alla variabile x1 e l’altra rispetto alla variabile x2 . Queste prendono il nome di derivate parziali e si indicano con ∂f ∂f ∂x j , j = 1, 2. Dal punto di vista geometrico la derivata parziale ∂x j (a, b) è il coefficiente angolare della retta tangente alla superficie f nel punto (a, b) e la cui proiezione sul piano x1 x2 è parallela a x j come mostrato in Figura 1.20. Ciò è equivalente alla seguente definizione in termini di rapporto incrementale: data una funzione f (x1 , x2 ) continua in D1 ⊆ D, per (a, b) ∈ D1 si ha ∂f f (a + h, b) − f (a, b) (a, b) = lim . h→0 ∂x1 h

1.6 Un cenno alle funzioni di due variabili

Analoga definizione può essere data per

23 ∂f ∂x2 (a, b),

cioè

f (a, b + h) − f (a, b) ∂f (a, b) = lim . h→0 ∂x2 h Le regole per il calcolo operativo delle derivate parziali sono le stesse utilizzate per il caso di derivata di funzione di una variabile (detta anche ordinaria), purché la variabile rispetto a cui non si sta derivando sia considerata come una costante. Esempio 1.18 Data la funzione in due variabili f (x1 , x2 ) = e−x1 sin(2πx2 ), i valori delle derivate parziali nel punto (x1 , x2 ) = (−2, 1/8) sono dati da √ ∂f −x1 2 2 (−2, 1/8) = −e sin(2πx2 )|(x1 =−2,x2 =4) = −e , ∂x1 2 e

√ ∂f −x1 2 2 (−2, 1/8) = 2πe cos(2πx2 )|(x1 =−2,x2 =4) = 2πe . ∂x2 2

2

Punti e vettori nello spazio

Punto! Due punti! . . . ma sì, fai vedere che abbondiamo... (Dal film Totò, Peppino e la malafemmina)

In questo capitolo si introducono i concetti di punti e vettori che rappresentano le entità matematiche elementari sulla base delle quali sarà possibile definire una rappresentazione analitica di curve e superfici nel piano e nello spazio. La rappresentazione analitica (ovvero mediante espressioni matematiche) di curve e superfici risulta essere fondamentale in vista della progettazione e costruzione di edifici e oggetti. Ad una rappresentazione, diciamo, artistica di una curva o superficie, creata dalla mente e dalla mano del designer in base a criteri estetici e funzionali, ne deve quindi seguire una quantitativa, esprimibile mediante formule matematiche precise che ne garantiscano la riproducibilità e l’implementazione in software opportuni. Questo (apparente) ossimoro fra creatività artistica e rigore matematico sta alla base della progettazione nell’ambito del design. La rappresentazione analitica di curve e superfici si basa sulla creazione di un legame, espresso mediante formule matematiche, fra i punti dello spazio che costituiscono la curva o la superficie. Perciò, risulta fondamentale come primo passo saper rappresentare i punti nello spazio. Vedremo come ai punti risulta intimamente connesso il concetto di vettore.

© Springer-Verlag Italia S.r.l., part of Springer Nature 2019 E. Miglio et al., Matematica e Design, UNITEXT - La Matematica per il 3+2 115, https://doi.org/10.1007/978-88-470-3987-2_2

25

26

2 Punti e vettori nello spazio

2.1 Sistemi di riferimento e punti Al fine di individuare in maniera non arbitraria la posizione di un punto nello spazio, dobbiamo introdurre un sistema di riferimento, cioè un ambiente nel quale misurare le distanze rispetto ad alcuni punti di riferimento. Il più noto e utilizzato è quello cartesiano, dal nome del filosofo e scienziato Cartesio che lo propose nel XVII secolo.

2.1.1 Sistema di riferimento cartesiano Partiamo dal caso più semplice di sistema cartesiano monodimensionale, ossia immaginiamo che il mondo sia rappresentato da una retta (asse x) sulla quale individuiamo un punto rispetto al quale misurare le distanze e che chiamiamo origine O. In generale, i punti intesi come entità fisiche verranno identificati da lettere maiuscole. Per calcolare le distanze è necessario introdurre una unità di misura. Al fine di discriminare fra punti caratterizzati dalla stessa distanza, è necessario introdurre un orientamento, ovvero un senso di percorrenza della retta; in particolare si suole assumere che spostandosi verso destra rispetto all’origine i punti abbiano distanza positiva, al contrario spostandosi verso sinistra abbiano distanza negativa, si veda Figura 2.1. Questo permette di identificare in maniera univoca un punto P con la sua distanza x P (intesa con segno) dall’origine. Quest’ultima prende il nome di coordinata. Ovviamente si ha x O = 0 qualsiasi sia l’unità di misura adottata. Dati due punti P e Q, la distanza con segno di Q da P è definita da d P→Q = x Q − x P , mentre la distanza assoluta è definita da d P Q = |x P − x Q |, dove il simbolo | · | rappresenta il valore assoluto. Ovviamente si ha d P→Q = −d Q→P . Il segmento che unisce P a Q viene indicato con P Q e la sua lunghezza con |P Q|, che di fatto corrisponde alla distanza assoluta d P Q . 1 P xP = − 32

O

Q

xQ = 2

x

Figura 2.1 Localizzazione dei punti P e Q in un sistema cartesiano monodimensionale. Le corrispondenti coordinate x Q > 0 e x P < 0 sono date dalla distanza con segno dall’origine O

2.1 Sistemi di riferimento e punti

27

Figura 2.2 Proiezione ortogonale H di P su r P

r H

Il passaggio al caso bidimensionale, ovvero alla rappresentazione di un punto nel piano, si ottiene considerando due rette orientate. Nel caso del sistema cartesiano considereremo due assi perpendicolari che chiameremo asse x ed asse y. Al fine di misurare le distanze del punto dall’origine (identificata come il punto di intersezione degli assi), definiamo innanzitutto la distanza fra un punto P ed una retta r: essa è data da d P→r = d P→H , dove H è il punto di proiezione ortogonale di P su r, si veda Figura 2.2. La posizione di un punto P è quindi individuata univocamente dalla sua distanza x P dall’asse y (ascissa) e dalla sua distanza y P dall’asse x (ordinata). Si userà di seguito la notazione P = (x P , y P ) per evidenziare la corrispondenza fra un punto P e le sue coordinate x P , y P . Ovviamente si ha O = (0, 0). La distanza assoluta fra due punti P e Q è data dal teorema di Pitagora ed è definita da  d P Q = (x P − x Q )2 + (y P − y Q )2 . L’estensione al caso tridimensionale, ovvero di rappresentazione di punti nello spazio, è facilmente ottenibile considerando un terzo asse orientato (z) perpendicolare ai precedenti e in modo che i tre assi costituiscano una terna destrorsa1 . Le tre coordinate che identificano un punto P nello spazio sono date dalle tre distanze con segno di P dai tre piani π yz , πx z , πx y , ovvero   P = x P = d P→π yz , y P = d P→πx z , z P = d P→πx y , ove d Q→π = d Q→H , con H la proiezione ortogonale di Q sul piano π. Dal teorema di Pitagora si ha  d P Q = (x P − x Q )2 + (y P − y Q )2 + (z P − z Q )2 .

1 Una terna di assi orientati a, b e c che si intersecano in un punto O

si dice destrorsa se un osservatore posto con i piedi in O e con la testa rivolta nel verso di c, per sovrapporre a su b ruotando a nel piano di a e b di un angolo θ < π, vedrebbe una rotazione in senso orario.

28

2 Punti e vettori nello spazio

Spesso è utile determinare il punto medio M di un segmento con estremi nei punti P e Q. Esso si ottiene considerando i valori medi delle coordinate, ad esempio nel piano: xP + xQ yP + yQ xM = , yM = . 2 2 Analogamente, il punto medio tra due punti P e Q nello spazio è definito da xM =

xP + xQ , 2

yM =

yP + yQ , 2

zM =

zP + zQ . 2

Esempio 2.1 Dati i punti P = (2, 3) e Q = (−1, 2), il punto medio M è dato da xM =

xP + xQ 2 + (−1) 1 = = , 2 2 2

yM =

yP + yQ 3+2 5 = = . 2 2 2

La distanza è invece data da  √ d P Q = (x P − x Q )2 + (y P − y Q )2 = 10. In generale le operazioni tra punti non sono lecite. Si considerino, ad esempio due punti P e Q rappresentati in due sistemi di riferimento diversi x y ed x  y  (si veda la Figura 2.3); nel primo sistema di riferimento le coordinate dei due punti sono rispettivamente P = (1, 1) e Q = (2, 0.5), mentre nel secondo P = (−3, −2) e Q = (−2, −2.5). Supponiamo di definire la somma dei punti come: P + Q = (x p + x Q , y P + y Q ). Effettuando la somma dei punti usando la loro rappresentazione nel primo sistema di riferimento si ha R1 = P + Q = (3, 1.5), se invece usiamo la rappresentazione nel secondo sistema si ha R2 = P + Q = (−5, −4.5), cioè si ottengono due diversi punti. In altri termini: i punti P nel piano Q sono entità indipendenti dal sistema di riferimento ma la loro somma non lo è. Quindi l’operazione non è lecita. In modo analogo supponiamo di definire la moltiplicazione di un punto P per uno scalare α come αP = (αx P , αy P , αz P ) . Se prendiamo ad esempio un sistema di riferimento per cui (x P , y P , z P ) = (1, 2, 0) ed un altro per cui (x P , y P , z P ) = (0, 1, 0), è facile notare come il prodotto per lo scalare α = 2 produca (2, 4, 0) per il primo sistema di riferimento e (0, 2, 0) per il secondo, portando ancora a due diversi punti. In generale una operazione per essere

2.1 Sistemi di riferimento e punti

29

Figura 2.3 Somma tra punti in due sistemi di riferimento

y

x y

R1 P

Q x

R2

lecita deve fornire un risultato che sia indipendente dal sistema di riferimento quando gli elementi su cui l’operazione viene eseguita sono entità che non dipendono dal sistema di riferimento. Per approfondimenti si vedano [11] e [16]. Come sarà chiaro nella Sezione 2.4.3, sarà invece perfettamente lecito considerare la differenza fra due punti. Una volta definito in maniera rigorosa come rappresentare i punti nello spazio, possiamo pensare di utilizzare tale procedura per rappresentare delle figure complesse come ad esempio dei poligoni. L’idea è quella di memorizzare solamente le coordinate dei vertici ed assumere che essi siano collegati da segmenti di linea retta. In generale, si può pensare di “unire” due vertici consecutivi con una curva più complessa, ottenendo così figure non poligonali più generali. La formulazione matematica delle curve, a partire dalle rette fino a curve di forma generale, verrà trattata in modo esteso nei Capitoli 4 e 6. Uno dei maggiori problemi nel costruire un poligono nello spazio è garantirne la planarità, cioè che i suoi vertici stiano su uno stesso piano. Un triangolo è sempre planare; questo è il motivo per cui spesso nei software i poligoni vengono costruiti in maniera approssimata come collezione di triangoli, si veda Figura 2.4.

2.1.2 Altri sistemi di riferimento In alcuni contesti risulta essere più conveniente rappresentare i punti del piano in un sistema di riferimento non cartesiano. Ad esempio, in presenza di figure con simmetria assiale, si può pensare di rappresentare un punto fornendo la sua distanza assoluta dall’origine ρ e l’angolo θ compreso fra il segmento O P e l’asse x: si parla in questo caso di coordinate polari , si veda Figura 2.5. Dato un punto P, nel piano, dalla definizione di seno e coseno di un angolo si ha x P = ρ P cos (θ P ) , e ρP =



y P = ρ P sin (θ P ) 

x 2P

+

y 2P ,

θ P = arctan

yP xP

 .

30

2 Punti e vettori nello spazio

Figura 2.4 Esempio di superficie reale ottenuta come composizione di triangoli (fotografia realizzata da Roberto Lapi, riprodotta su gentile concessione di Fiera Milano S.p.A.)

y

P

yP ρP θP O

Figura 2.5 Sistema di coordinate polari

xP

x

2.1 Sistemi di riferimento e punti

31

z

Figura 2.6 Sistema di coordinate sferiche

P θP

xP

O φP

ρP yP P

y

x

Le precedenti espressioni permettono di passare dalle coordinate polari a quelle cartesiane e viceversa. Nello spazio, le coordinate polari diventano cilindriche aggiungendo la coordinata z. Queste sono particolarmente utili nel caso di simmetrie cilindriche. Infine, nel caso di simmetrie sferiche, un possibile sistema di riferimento alternativo per rappresentare punti nello spazio è dato dalle coordinate sferiche, si veda Figura 2.6. Le coordinate in questo caso sono, oltre alla distanza dall’origine ρ (analoga al caso precedente), l’angolo θ fra il segmento O P  e l’asse x, con P  proiezione ortogonale di P su πx y , e l’angolo ϕ fra il segmento O P e l’asse z. Di conseguenza si ha x P = ρ P sin (ϕ P ) cos (θ P ) ,

y P = ρ P sin (ϕ P ) sin (θ P ) , z P = ρ P cos (θ P ) ,

e ρP =



 x 2P + y 2P + z 2p ,

θ P = arctan

yP xP



 ,

ϕ P = arccos

zP ρP

 .

32

2 Punti e vettori nello spazio

Esempio 2.2 Dato il punto Q = (4, −6), la sua rappresentazione polare è data da 

√ 2 + y 2 = 2 13, xQ Q     y θ P = arctan x QQ = arctan − 23 = −0.98. ρQ =

2.2 Real life applications: le coordinate geografiche Ogni punto della superficie terrestre è individuato da due numeri, la latitudine e la longitudine. Si tratta di due angoli che formano un sistema di coordinate sulla superficie della terra (che possiamo considerare approssimativamente una sfera di raggio R). Dato un punto sulla superficie della terra identificato in coordinate sferiche dalla terna (R, θ, φ), la sua latitudine δ è il complementare dell’angolo θ, quindi determinata dalla relazione δ = 90◦ − θ, e la sua longitudine l è definita dalla relazione l = φ − 180◦ . In base a questa definizione il polo Nord corrisponde a δ = 90◦ ed il polo Sud a δ = −90◦ (anche indicato come 90◦ Sud). Le circonferenze ottenute intersecando la superficie terrestre con piani perpendicolari all’asse di rotazione sono formate da punti con la stessa latitudine e sono dette paralleli: in particolare il parallelo con δ = 0◦ è l’Equatore, mentre a δ = ±23◦ 26 16” si trovano i Tropici. Le circonferenze ottenute invece tagliando la superficie con piani passanti per l’asse di rotazione contengono punti con la stessa longitudine e sono dette meridiani. Il meridiano che corrisponde a l = 0 passa per Greenwich (Londra). Conoscendo il raggio della terra e le coordinate di due città è possibile calcolarne la distanza “in linea d’aria”. Consideriamo ad esempio Milano, le cui coordinate sono approssimativamente δ1 = 45.46◦ , l1 = 9.19◦ , e La Havana, con δ2 = 23.12◦ e l2 = −82.39◦ . La distanza più breve è quella percorsa lungo una circonferenza massima, cioè ottenuta tagliando la superficie terrestre con un piano passante per il centro, come mostrato in Figura 2.7. Per calcolare la lunghezza dell’arco di circonferenza dal punto M (Milano) al punto H (La Havana) è necessario introdurre la legge dei coseni in geometria sferica. Consideriamo un triangolo formato da circonferenze massime come mostrato in Figura 2.7. Se indichiamo con a, b e c gli archi che formano i lati del triangolo sferico e con α, β e γ i corrispondenti angoli sottesi dal centro della sfera, mentre con C indichiamo l’angolo opposto all’arco c sulla superficie, la legge sferica dei coseni afferma che cos(γ) = cos(α) cos(β) + sin(α) sin(β) cos(C). Osserviamo che nel nostro caso α e β sono legati alla latitudine delle due

2.2 Real life applications: le coordinate geografiche

33

città, in particolare α = 90◦ − δ1 = 44.54◦ e β = 90◦ − 23.12◦ = 66.89◦ . Inoltre l’angolo C corrisponde alla differenza fra le longitudini delle due città, C = l1 − l2 = 91.56◦ . Otteniamo quindi cos(γ) = 0.2622 cioè γ = 74.80◦ . Sapendo che il raggio medio della Terra è R = 6371km otteniamo la distanza cercata con la formula M H = Rπ

γ = 8317km. 180◦

Figura 2.7 A sinistra, distanza fra due punti sulla superficie terrestre; a destra, legge dei coseni in geometria sferica

Si introduce di seguito un esempio pratico in cui il concetto di coordinate non è riferito come usualmente accade all’ambito geometrico. In particolare, nel seguente caso le coordinate rappresentano un modo per rappresentare i colori.

2.3 Real life applications: gli spazi dei colori Esistono diversi modi per codificare i colori visibili dall’uomo in forma numerica: questi metodi si chiamano modelli di colore. Sappiamo che si possono creare colori diversi mescolando le tinte dei tre colori primari rosso, giallo e blu. Questo è un modello detto sottrattivo perché il colore risultante dipende dalle frequenze assorbite (“sottratte”) da ciascuno dei tre componenti primari: a partire dal bianco, aggiungendo colore si filtrano alcune lunghezze d’onda. Al contrario un modello additivo si basa sulla combinazione della luce emessa: si parte dal buio e si aggiungono sorgenti luminose con diversa lunghezza d’onda per comporre il colore desiderato. Normalmente, per analogia con il funzionamento della retina umana, si utilizzano come colori primari dello spazio additivo il rosso, il verde e il blu. Nel modello risultante, noto come modello RGB (Red-Green-Blue) ogni colore si può rappresentare, in analogia con le

34

2 Punti e vettori nello spazio

coordinate cartesiane 3D, come un punto la cui posizione è data dalla quantità di rosso, verde e blu. L’insieme dei colori forma un cubo i cui vertici opposti sono il nero e il bianco, come mostrato in Figura 2.8. Ad esempio, il verde è rappresentato dalla terna (0, 255, 0) mentre il viola da (128, 0, 128). Il modello RGB non è l’unico: spesso i colori vengono rappresentati da una terna di numeri che rappresentano rispettivamente la loro tinta (Hue), la saturazione (Saturation) e la luminosità, detta brightness o value. La tinta è un valore che varia con continuità dal rosso, al giallo, verde, blu, magenta per tornare al rosso: si può quindi interpretare come un angolo. Nel modello HSV un colore è un punto nello spazio tridimensionale individuato dalle coordinate cilindriche H, che è l’angolo di rotazione, S ossia la distanza dall’asse, e V che rappresenta la coordinata lungo l’asse del cilindro, come illustrato in Figura 2.8.

Figura 2.8 Spazi di colore RGB e HSV

2.4 Punti e vettori In questa sezione introdurremo il concetto di vettore, le operazioni ad esso collegate e il suo rapporto con il concetto di punto precedentemente introdotto e descritto.

2.4.1 Definizione di vettore Un vettore v è un’entità matematica caratterizzata da un modulo o intensità v, da una direzione e da un verso (si veda Figura 2.9). A differenza del punto, che ha una precisa localizzazione ma non direzione e lunghezza, il vettore non ha una precisa localizzazione. In altri termini, un vettore rappresenta sempre un incremento (o decremento) di qualche grandezza fisica, come lo spostamento o la forza effettiva, giusto per fornire qualche esempio.

2.4 Punti e vettori

35

(a)

(b)

v1

(c)

v1 v2

(d)

v1 v2

v1 v2

v2

Figura 2.9 Due vettori con; (a) uguale direzione e verso, diverso modulo; (b) uguale direzione, verso opposto e modulo diverso; (c) uguale direzione e modulo, verso opposto; (d) diverse direzioni

2.4.2 Operazioni coi vettori: approccio geometrico A differenza dei punti, è possibile sommare due vettori. Questo grazie alla delocalizzazione dei vettori. Avvalendoci della analogia con gli spostamenti, possiamo definire la somma fra due vettori v e w come il cammino rettilineo che si percorrerebbe posizionando w al termine di v. Questo metodo prende il nome di regola del parallelogramma, si veda Figura 2.10. È possibile anche moltiplicare un vettore v per uno scalare α (cioè un numero reale), producendo un allungamento o accorciamento, cioè un nuovo vettore w = αv con modulo pari ad |α|v, stessa direzione di v e verso concorde con v se α > 0, discorde se α < 0, si veda Figura 2.11. Questo permette di definire anche la differenza fra due vettori come v − w = v +(−1)w (si veda Figura 2.12 a sinistra). Applicando la regola del parallelogramma per sommare v e (−1)w si può notare (si veda Figura 2.12 a destra) come il vettore

v+w

w

v

v

v+w

w

Figura 2.10 Somma di vettori con il metodo del parallelogramma

(a)

(b)

(c) v1

v1 v2

v2

v1 v2

Figura 2.11 Due vettori v1 e v2 multipli: (a) v2 = 2v1 ; (b) v2 = −v1 ; (c) v2 = 21 v1

36

2 Punti e vettori nello spazio

v−w v

v

w

v−w

w

−w

Figura 2.12 Differenza di vettori con il metodo del parallelogramma e il metodo “punta-coda”

Figura 2.13 Angolo compreso fra due vettori e definizione delle proiezioni vw , wv

differenza congiunga la punta di w con la punta di v (metodo “punta-coda”). Il prodotto scalare fra due vettori v e w è invece definito come la lunghezza vw della proiezione di v su w moltiplicata per il modulo di w, si veda Figura 2.13. Il risultato è quindi uno scalare e l’operazione viene indicata con v · w. Equivalentemente, se θ è l’angolo fra i due vettori, si ha v · w = v w cos θ. Se esso è nullo e v  = 0 e w  = 0, allora si ha θ = 21 π o θ = 23 π, cioè i due vettori sono ortogonali. Un altro tipo di prodotto fra vettori è dato dal prodotto vettoriale, indicato come v × w, che restituisce il vettore ortogonale ai due precedenti, e il cui verso è identificato dalla regola della vite (immaginando di avvitare v su w, si veda Figura 2.14) e di modulo pari a v w sin θ. Si noti come il prodotto vettoriale sia stato definito direttamente nel caso tridimensionale non essendoci una controparte in due dimensioni. È possibile anche definire operazioni fra punti e vettori. In particolare, si può pensare di sommare ad un punto P un vettore v. Questa operazione consiste nel “traslare” il punto P di una quantità che coincide proprio con v. Quello che si ottiene è un nuovo punto Q = P + v, si veda Figura 2.15. Si fa notare come la

2.4 Punti e vettori

37

Figura 2.14 Prodotto vettore e interpretazione del verso del vettore risultante secondo la regola della vite

Q

Figura 2.15 Somma tra punto e vettore

P

v

precisa localizzazione di P e la delocalizzazione di v permettano di individuare univocamente Q indipendentemente dal sistema di riferimento. Concludiamo questa sezione facendo notare che dati due vettori non paralleli u e v nel piano, ogni altro vettore z può essere rappresentato come combinazione lineare di u e v, ossia z = z u u + z v v, per due opportuni scalari z u e z v , che prendono il nome di componenti. I vettori u e v costituiscono una base per R2 e si diranno vettori di base. Dati due vettori di base e una coppia di scalari, ad essi è associato univocamente un vettore. Viceversa, dati due vettori di base e un altro vettore, ad essi sono associati univocamente le due componenti del terzo vettore. Analogamente, dati tre vettori non paralleli u, v e w nello spazio, ogni altro vettore z può essere rappresentato come combinazione lineare di u, v e w, ossia z = z u u + z v v + z w w. Anche in questo caso, diremo che i vettori u, v e w costituiscono una base per R3 . La scelta più classica consiste nel prendere vettori di base ortogonali e di modulo unitario. In particolare, si introduce la base canonica nel piano cartesiano, data dai vettori i e j di modulo unitario ed allineati rispettivamente con gli assi cartesiani x ed y. Analogamente, la base canonica nello spazio è definita dai vettori i, j e k di modulo unitario ed allineati rispettivamente con gli assi cartesiani x, y e z.

38

2 Punti e vettori nello spazio

2.4.3 Relazione fra punti e vettori Un vettore viene spesso rappresentato da una freccia che parte da un punto P e punta ad un altro punto Q, di lunghezza v e direzione parallela a P Q, si veda Figura 2.16. Per enfatizzare i due punti estremi del vettore, il vettore può essere indicato con la −→ notazione P Q. È immediato calcolare il modulo di un vettore nel piano utilizzando il teorema di Pitagora  v = |P Q| = (x Q − x P )2 + (y Q − y P )2 . In modo del tutto analogo, il modulo di un vettore nello spazio è dato da  v = |P Q| = (x Q − x P )2 + (y Q − y P )2 + (z Q − z P )2 . Consideriamo ora la base canonica precedentemente introdotta, cioè la base formata dai vettori di modulo unitario allineati con gli assi cartesiani e rappresentiamo un vettore in tale sistema. Il vettore v che congiunge P a Q può essere rappresentato algebricamente nel seguente modo ⎡ ⎤ ⎡ ⎤ vx xQ − xP v = ⎣ vy ⎦ = ⎣ yQ − yP ⎦ , (2.1) vz zQ − zP

y Q v

yQ

P yP

xP

Figura 2.16 Vettore che congiunge i punti P e Q

xQ

x

2.4 Punti e vettori

39

dove con vx , v y e vz si sono indicate le componenti di v rispetto agli assi cartesiani x, y e z. D’ora in avanti, se non diversamente specificato, le coordinate di un vettore verranno intese rispetto ad assi cartesiani. Notiamo che abbiamo usato la notazione di indicare un vettore v come colonna. Qualora lo si volesse rappresentare come vettore riga, lo si indicherà con v T . Con questa scelta è facile vedere come le componenti dei vettori che costituiscono la base canonica nel piano siano i= e nello spazio



 0 1 , , j= 1 0

⎡ ⎤ ⎡ ⎤ ⎡ ⎤ 0 0 1 i = ⎣0⎦, j = ⎣1⎦, k = ⎣0⎦. 1 0 0

Dalla precedente notazione, notiamo come sia possibile definire un vettore come differenza fra due punti, in particolare v = P − Q. Dato un vettore v, definiamo versore associato a v il vettore v di direzione parallela a quella di v e modulo unitario. Le sue componenti sono facilmente ottenibili grazie a ⎡ ⎤ vx /v  v = ⎣ v y /v ⎦ . vz /v Infatti, si ha  v =

  1  2  vx2 +  v 2y +  vz2 = vx + v 2y + vz2 = 1. v

I vettori i, j e k che costituiscono la base canonica, essendo di modulo unitario, sono versori. Nel piano, ogni vettore v può essere rappresentato in maniera semplice come combinazione lineare dei versori allineati con gli assi cartesiani: v = vx i + v y j. Analogamente, ogni vettore nello spazio è dato da v = vx i + v y j + vz k, dove vx , v y e vz costituiscono le componenti cartesiane del vettore.

40

2 Punti e vettori nello spazio

Esempio 2.3 Dato il vettore v = [3, −4]T nel piano, il suo modulo è dato da v =



32 + (−4)2 = 5.

Le componenti del versore  v associato a v sono quindi date da

 v=

  3/5 vx /v . = −4/5 v y /v

Come già osservato, un vettore non ha, a differenza dell’entità punto, una precisa localizzazione nello spazio. Ciò significa che il vettore v che congiunge i punti P e Q può essere equivalentemente rappresentato come freccia A − B che unisce altri due punti A e B diversi da P e Q, purché ⎧ ⎨ x B − x A = vx = x Q − x P , yB − y A = vy = yQ − yP , ⎩ z B − z A = vz = z Q − z P . Una scelta naturale per rappresentare un vettore è data da v = V − O, con x V = vx , yV = v y e z V = vz , che porta ad identificare un punto V con il vettore v le cui componenti uguagliano le coordinate del punto. Bisogna però sottolineare che, nonostante questa identificazione, un punto ed un vettore rimangono due entità matematicamente diverse, il primo non avendo dimensione e il secondo non avendo una precisa localizzazione.

2.4.4 Operazioni coi vettori: approccio algebrico Grazie alla definizione di un vettore per componenti, possiamo di seguito reinterpretare per via algebrica le operazioni coi vettori definite precedentemente per via geometrica. La somma fra due vettori è un vettore definito per via algebrica nel seguente modo ⎡ ⎤ vx + wx v + w = ⎣ vy + wy ⎦ , vz + wz e in maniera analoga la differenza (come somma fra v e −w). È facile mostrare che questa definizione coincide con la regola del parallelogramma. Si veda Figura 2.17, una rappresentazione grafica nel caso bidimensionale. Il prodotto fra un vettore un vettore v nel piano e uno scalare α può essere definito per via algebrica nel seguente modo

 αvx αv = . αv y

2.4 Punti e vettori

41

y

y

v+w Q

wy w vy

v

P

v

v−w

x

−w w vx

wx

x

Figura 2.17 Somma e differenza di vettori

Analogamente, moltiplicando per uno scalare un vettore v nello spazio, si ha ⎡

⎤ αvx αv = ⎣ αv y ⎦ . αvz Il nuovo vettore w = αv è per costruzione parallelo a v. Infatti, considerando per semplicità il caso piano, è facile mostrare che, se θ è l’angolo che v forma con l’asse x, si ha che tan θ = v y /vx . Tuttavia, poiché w y /wx = (αv y )/(αvx ) si anche w y /wx = tan θ. Nella Sezione 2.4.2, abbiamo introdotto il prodotto scalare tra due vettori v e w come v · w = vw cos θ. La stessa operazione può essere definita per via algebrica nel seguente modo v · w = v x w x + v y w y + vz vz , ovvero il prodotto scalare è dato dalla somma dei prodotti componente per componente dei due vettori. Considerando per semplicità il caso piano, con il vettore w allineato con l’asse x, è facile mostrare l’equivalenza tra le definizioni geometrica ed algebrica del prodotto scalare. Sia θ l’angolo fra i due vettori (cioè quello che v forma con l’asse x). Allora si ha v · w = v cos θwx + v sin θw y = vw cos θ,

(2.2)

avendo notato che w y = 0 e w = wx . Questo risultato è invariante rispetto alla rotazione degli assi cartesiani.

42

2 Punti e vettori nello spazio

Come da definizione geometrica, il prodotto scalare rappresenta la lunghezza del vettore vw ottenuto proiettando v su w, moltiplicata per la lunghezza di w stesso (o viceversa). Infatti, per costruzione e grazie alla (2.2) si ha vw  = v cos θ = v

v·w v·w = =v· w. v w w

(2.3)

Esempio 2.4 Dati i vettori v = [1, 2]T e w = [−3, 1]T , il prodotto scalare fra di essi è dato da v · w = 1 · (−3) + 1 · 2 = −1. L’angolo compreso fra i due vettori si ottiene nel seguente modo cos θ = da cui

√ 5 2 −1 v·w = √ √ =− , v w 50 5 10 

√  5 2 θ = arccos − . 50

Esempio 2.5 Dato il triangolo di vertici A = (1, 1), B = (3, 2), C = (2, 3), vogliamo calcolarne l’area (si veda Figura 2.18). Scegliamo come base il segmento AB e come altezza il segmento C H , con H la proiezione di C su AB. Si ha  √ |AB| = (3 − 1)2 + (2 − 1)2 = 5. La lunghezza del segmento AH può essere calcolato come proiezione ortogonale di AC su AB, per cui, notando che AB = [2, 1] e AC = [1, 2], dalla (2.3) si ha √ AB · AC 4 5 2·1+1·2 |AH | = = = . √ |AB| 5 5 L’altezza |C H | è quindi data dal teorema di Pitagora √  5 3 |C H | = |AC|2 − |AH |2 = 5 e l’area è quindi A=

3 |AB||C H | = . 2 2

2.4 Punti e vettori

43

y C

B H A

x

O Figura 2.18 Calcolo dell’area di un triangolo

Come già osservato, un altro tipo di prodotto fra vettori è dato dal prodotto vettoriale , definito per via algebrica da ⎤ ⎡ v y wz − vz w y v × w = ⎣ vz w x − v x wz ⎦ . (2.4) vx w y − v y wx Esempio 2.6 Dati i vettori v = [2, 1, −3]T e w = [1, 0, 4]T , il prodotto vettoriale fra di essi è dato da ⎤ ⎤ ⎡ ⎡ 4 1 · 4 − (−3) · 0 v × w = ⎣ −2 · 4 + (−3) · 1 ⎦ = ⎣ −11 ⎦ . −1 2·0−1·1 L’angolo compreso fra i due vettori è invece determinato da  √ v × w 42 + 112 + 12 69 sin θ = = =√ , √ v w 119 22 + 12 + 32 12 + 02 + 42 da cui

 θ = arcsin

69 119

  0.27π.

44

2 Punti e vettori nello spazio

Esempio 2.7 Si vuole mostrare che due vettori v e w paralleli hanno prodotto vettoriale nullo. Dati due vettori paralleli, esiste sempre un numero reale α tale che w = αv. Allora dalla definizione (2.4) di prodotto vettoriale, si ha ⎤ ⎡ ⎤ v y αvz − vz αv y 0 v × w = v × αv = ⎣ −vx αvz + vz αvx ⎦ = ⎣ 0 ⎦ . 0 vx αv y − v y αvx ⎡

Esempio 2.8 Si vuole mostrare che il prodotto vettoriale di due vettori generici è sempre ortogonale ai due vettori che lo determinano. Infatti, si ha (v × w) · v =(v y αvz − vz αv y )vx + (−vx αvz + vz αvx )v y + (vx αv y − v y αvx )vz = 0, ovvero i vettori (v × w) e v, avendo prodotto scalare nullo, sono ortogonali. Analogo risultato si trova calcolando (v × w) · w. Le operazioni con vettori e punti permettono, dati due punti P0 e P1 e un parametro scalare α, di definire il punto P dato dalla relazione P = P0 + α(P1 − P0 ). Facendo variare α fra 0 e 1 si ha una rappresentazione parametrica dei punti del segmento P0 P1 , data da ⎤ x P0 + α(x P1 − x P0 ) P(α) = ⎣ y P0 + α(y P1 − y P0 )⎦ . z P0 + α(z P1 − z P0 ) ⎡

Questo tipo di rappresentazione verrà discussa in dettaglio nel Capitolo 4.

2.5 Coordinate omogenee Sappiamo che la posizione dei punti nel piano Euclideo E2 può essere definita mediante le coordinate cartesiane, cioè da coppie ordinate del tipo (x, y). Denotiamo con (X, Y, W ) le coordinate di un punto nello spazio R3 . Il piano Euclideo può essere identificato con il piano W = 1 dello spazio R3 , cioè ad ogni punto (x, y) di E2 viene

2.5 Coordinate omogenee

45

Figura 2.19 Rappresentazione in coordinate omogenee del piano

fatto corrispondere il punto (x, y, 1) di R3 (si veda Figura 2.19). L’insieme dei punti (λx, λy, λ) con λ ∈ R e λ  = 0, costituisce la retta blu di Figura 2.19. In pratica ai punti di E2 (di solito individuati da 2 coordinate) associamo 3 coordinate che sono definite a meno di un fattore di scala non nullo: esse sono chiamate coordinate omogenee (introdotte da Möbius nel 1827); la terza componente della rappresentazione in coordinate omogenee viene detta peso. Si noti che la rappresentazione in coordinate omogenee di un punto del piano Euclideo non è unica: ad esempio il punto del piano di coordinate cartesiane (3, 5) può essere rappresentato in coordinate omogenee come (3, 5, 1), (6, 10, 2) o ancora da (−9, −15, −3) cioè da una generica terna di numeri del tipo (3λ, 5λ, λ) con λ ∈ R e λ = 0; in altri termini tutti i punti della retta blu di Figura 2.19 sono rappresentazioni, in coordinate omogenee, dello stesso punto del piano Euclideo. Dato un punto di coordinate omogenee (X, Y, W ), le corrispondenti coordinate cartesiane (x, y) si ottengono come segue x = X/W,

y = Y /W.

(2.5)

Le terne in cui il peso è pari a zero definiscono i punti all’infinito. In modo analogo lo spazio Euclideo può essere visto come un sottoinsieme di uno spazio a 4 dimensioni in cui le coordinate sono (X, Y, Z , W ); un punto nello spazio Euclideo di coordinate (x, y, z) può essere quindi rappresentato in coordinate omogenee da una quaterna di numeri del tipo (λx, λy, λz, λ) con λ ∈ R e λ = 0. A rigore la notazione in coordinate omogenee che abbiamo appena introdotto, è relativa alla rappresentazione dei punti. Il corrispondente vettore p rappresentativo del punto P di coordinate (x, y) viene scritto in modo diverso a seconda dei contesti:

46

2 Punti e vettori nello spazio

1. Come differenza tra punti, cioè ⎡ ⎤ ⎡ ⎤ x 0 p = P − O = ⎣ y ⎦ − ⎣0⎦; 1 1 2. Aggiungendo semplicemente una terza componente pari ad 1, cioè ⎡ ⎤ x p = ⎣y⎦. 1

(2.6)

(2.7)

Consideriamo, ad esempio, i punti A = (3, 5) e B = (2, 1); una la loro rappresentazione in coordinate omogenee è A = (3, 5, 1) e B = (2, 1, 1). Se utilizziamo la rappresentazione vettoriale dei punti in coordinate omogenee data dalla (2.6) abbiamo ⎡ ⎤ ⎡ ⎤ ⎡ ⎤ 3 0 3 (2.8) a = A − O = ⎣5⎦ − ⎣0⎦ = ⎣5⎦, 0 1 1 ⎡ ⎤ ⎡ ⎤ ⎡ ⎤ 2 0 2 b = B − O = ⎣1⎦ − ⎣0⎦ = ⎣1⎦. 0 1 1

(2.9)

In questo modo possiamo sommare i vettori a e b per ottenere il risultato che ci aspettiamo applicando la regola del parallelogramma, cioè a + b = [5, 6, 0]T . Se avessimo utilizzato la rappresentazione vettoriale data dalla (2.7) la somma sarebbe stata ⎤ ⎡ ⎤ ⎡ ⎤ ⎡ ⎤ ⎡ 2.5 5 2 3 (2.10) a + b = ⎣5⎦ + ⎣1⎦ = ⎣6⎦ = ⎣ 3 ⎦, 1 2 1 1 cioè avremmo ottenuto le coordinate del punto medio del segmento A − B. In questo testo sarà utilizzata la seconda convenzione che, seppur meno rigorosa, è quella più comune nel contesto della grafica computazionale dove l’introduzione delle coordinate omogenee è funzionale alla possibilità di rappresentare tutte le trasformazioni geometriche (comprese le traslazioni e le trasformazioni prospettiche) mediante l’operazione di moltiplicazione tra una matrice ed un vettore. Esempio 2.9 Dati i seguenti punti del piano rappresentati in coordinate omogenee: ( px , p y , w) = (2, 6, 2)

( px , p y , w) = (3, 9, 3)

( px , p y , w) = (3, 9, 0),

verifichiamo di seguito se essi si riferiscano allo stesso punto o meno.

2.5 Coordinate omogenee

47

Dalla prima rappresentazione abbiamo   P = px /w p y /w = (1 3) , mentre dalla seconda   Q = px /w p y /w = (1 3) , per cui P = Q. Dalla terza invece abbiamo   R = px /w p y /w = (+∞ + ∞) , che rappresenta quindi il punto all’infinito sulla retta y = 3x.

3

Matrici e trasformazioni geometriche

Continuai la mia strada, in mezzo alle trasformazioni del mondo, anch’io trasformandomi. (Italo Calvino)

In questo capitolo, vengono introdotte le matrici che sono un ingrediente chiave per definire le trasformazioni geometriche nel piano e nello spazio. Le trasformazioni geometriche sono, a loro volta, alla base della grafica computazionale in quanto consentono di descrivere, muovere e deformare entità geometriche nel piano e nello spazio. Nei precedenti capitoli, abbiamo visto come, dato un sistema di riferimento nel piano e nello spazio, sia possibile definire la posizione di un punto attraverso l’utilizzo di un vettore. Per definire e rappresentare graficamente entità geometriche più complesse dei punti, quali ad esempio le curve e le superfici, è utile introdurre gli strumenti matematici con cui è possibile effettuare le trasformazioni che permettono di ottenere tali entità. Vedremo infatti nel Capitolo 4 come molte curve nel piano e nello spazio possono essere ottenute applicando una trasformazione ad un punto assegnato, mentre nel Capitolo 5 le trasformazioni verranno utilizzate per generare superfici a partire da curve. Dal punto di vista matematico, è utile introdurre il concetto di matrice che consentirà di rappresentare matematicamente molte trasformazioni utilizzate nella geometria e nella grafica computazionale.

© Springer-Verlag Italia S.r.l., part of Springer Nature 2019 E. Miglio et al., Matematica e Design, UNITEXT - La Matematica per il 3+2 115, https://doi.org/10.1007/978-88-470-3987-2_3

49

50

3 Matrici e trasformazioni geometriche

3.1 Operazioni tra matrici Una matrice è una tabella ordinata di elementi. In particolare, definiamo una matrice di dimensioni n ×m come una tabella di elementi organizzati in n righe ed m colonne, cioè ⎡ ⎤ a11 a12 · · · a1m ⎢a21 a22 · · · a2m ⎥ ⎢ ⎥ A=⎢ . . . . ⎥, ⎣ .. .. . . .. ⎦ an1 an2 · · · anm dove ai j rappresenta l’elemento della matrice sulla i-esima riga e j-esima colonna. In generale, gli elementi della matrice possono essere numeri interi, reali o complessi. In questa trattazione ci limiteremo a considerare il caso di matrici a valori reali, tuttavia molte delle proprietà e delle operazioni che verranno introdotte possono essere estese a matrici con elementi non appartenenti all’insieme dei numeri reali. È possibile definire diverse operazioni sulle matrici (somma, differenza e prodotto tra matrici, prodotto tra scalare e matrici). Per poter definire tali operazioni è necessario rispettare alcuni vincoli di compatibilità sulle dimensioni delle matrici. Tali vincoli verranno specificati in seguito per ciascuna operazione. Gli insiemi di matrici su cui si possono definire le operazioni e le operazioni stesse definiscono una algebra delle matrici. Vediamo qui di seguito le principali operazioni tra matrici e le rispettive proprietà di cui godono.

3.1.1 Somma e differenza di matrici È possibile definire l’operazione di somma o differenza tra due (o più matrici) di dimensioni uguali. Date due matrici A, B ∈ Rn×m la loro somma è data dalla matrice C ∈ Rn×m di uguali dimensioni definita da ⎡

c11 ⎢c21 ⎢ C = A+B =⎢ . ⎣ ..

c12 c22 .. .

... ... .. .

⎤ ⎡ a11 + b12 a12 + b12 c1m ⎢ a21 + b21 a22 + b22 c2m ⎥ ⎥ ⎢ .. .. .. ⎥ = ⎢ . . . ⎦ ⎣

cn1 cn2 · · · cnm

· · · a1m · · · a2m .. .

⎤ + b1m + b2m ⎥ ⎥ ⎥, .. ⎦ .

an1 + bn1 an2 + bn2 · · · anm + bnm

dove il generico elemento della matrice somma cij = aij + bij è dato dalla somma dei corrispondenti elementi di A e B. È evidente che tale operazione, per essere ben definita, richiede che le matrici abbiano tutte le stesse dimensioni.

3.1 Operazioni tra matrici

51

Esempio 3.1 Date le matrici A e B di dimensioni 2 × 3 definite da   −1 1 0 1 2 −1 , , B= A= −1 1 1 2 0 −2 la somma C = A + B è data dalla matrice C ∈ R2×3 definita da    0 3 −1 −1 1 0 1 2 −1 . = + C = A+B = 1 1 −1 −1 1 1 2 0 −2

Analogamente si definisce l’operazione di differenza tra matrici. Date due matrici A, B ∈ Rn×m la loro differenza è data dalla matrice C ∈ Rn×m di uguali dimensioni definita da ⎡ ⎤ ⎡ ⎤ a11 − b12 a12 − b12 · · · a1m − b1m c11 c12 · · · c1m ⎢c21 c22 · · · c2m ⎥ ⎢ a21 − b21 a22 − b22 · · · a2m − b2m ⎥ ⎢ ⎥ ⎢ ⎥ C = A−B =⎢ . . . ⎥, .. .. . ⎥=⎢ .. .. ⎣ .. .. . . .. ⎦ ⎣ ⎦ . . . . cn1 cn2 · · · cnm

an1 − bn1 an2 − bn2 · · · anm − bnm

dove il generico elemento della matrice differenza cij = aij − bij è dato dalla differenza dei corrispondenti elementi di A e B. Esempio 3.2 Date le matrici A e B di dimensioni 3 × 2 definite da ⎡ ⎤ ⎡ ⎤ 21 12 ⎣ ⎦ ⎣ 3 1 A= , B = 1 0⎦ , 22 01 la differenza C = A − B è data dalla matrice C ∈ R2×3 definita da ⎡ ⎤ ⎡ ⎤ ⎡ ⎤ 21 12 1 −1 C = A − B = ⎣3 1⎦ − ⎣1 0⎦ = ⎣2 1 ⎦ . 22 01 2 1

52

3 Matrici e trasformazioni geometriche

3.1.2 Prodotto tra uno scalare e una matrice Il prodotto tra uno scalare (reale) α e una matrice A ∈ Rn×m di dimensioni arbitrarie è dato dalla matrice B ∈ Rn×m con uguali dimensioni definita da ⎡

αa11 αa12 ⎢αa21 αa22 ⎢ B = αA = ⎢ . .. ⎣ .. . αan1 αan2

⎤ · · · αa1m · · · αa2m ⎥ ⎥ . ⎥, .. . .. ⎦ · · · αanm

dove il generico elemento della matrice bi j = α ai j è dato dal prodotto tra lo scalare e il corrispondente elemento di A. Esempio 3.3 Dato lo scalare α = 2 e la matrice A ∈ R3×3 definita da ⎤ ⎡ 2 1 1 A = ⎣ 1 0 1 ⎦, −2 1 −1 il prodotto C = α A è dato dalla matrice C ∈ R3×3 definita da ⎡

⎤ ⎡ ⎤ 2 1 1 4 2 2 C = α A = 2⎣ 1 0 1 ⎦ = ⎣ 2 0 2 ⎦. −2 1 −1 −4 2 −2

3.1.3 Prodotto matriciale È infine possibile introdurre il prodotto tra due matrici. Tale operazione è possibile solo quando il numero di colonne della prima matrice coincide con il numero di righe della seconda. In particolare, data la matrice A ∈ Rn×l e la matrice B ∈ Rl×m , la matrice prodotto C ∈ Rn×m è definita da ⎡

c11 ⎢c21 ⎢ C = AB = ⎢ . ⎣ ..

c12 c22 .. .

... ... .. .

⎤ c1m c2m ⎥ ⎥ .. ⎥ , . ⎦

cn1 cn2 . . . cnm

3.1 Operazioni tra matrici

53

l dove il generico elemento della matrice ci j = k=1 aik bk j , per i = 1, . . . , n e j = 1, . . . , m, è dato dal prodotto scalare tra la i-sima riga di A e la j-sima colonna di B. Ad esempio, l’elemento c11 è dato da c11 = a11 b11 + a12 b21 + · · · + a1l bl1 . Esempio 3.4 Date le matrici A ∈ R3×2 e B ∈ R2×4 definite da ⎡ ⎤  1 2 −1 1 0 2 , A = ⎣ 0 1⎦ B= −2 2 1 1 −1 2 il prodotto C = A B è dato dalla matrice C ∈ R3×4 definita da ⎤ ⎡ ⎤ −5 5 2 4 1 2 −1 1 0 2 C = A B = ⎣ 0 1⎦ −2 2 1 1 = ⎣−2 2 1 1⎦ . −3 3 4 0 −1 2 ⎡

Un caso particolare di prodotto tra matrici e vettori è rappresentato dal prodotto tra un vettore riga uT = u 1 u 2 · · · u n , visto come matrice di dimensioni 1 × n e un vettore colonna di pari lunghezza ⎡ ⎤ v1 ⎢ v2 ⎥ ⎢ ⎥ v = ⎢ . ⎥, ⎣ .. ⎦ vn visto come matrice di dimensioni n × 1. È immediato verificare che il prodotto matriciale tra di essi equivale al prodotto scalare tra vettori, infatti applicando le regole del prodotto matriciale si ha

u1 u2 · · · un

uT v =

⎡ ⎤ v1 ⎢ v2 ⎥ ⎢ ⎥ ⎢ .. ⎥ = u 1 v1 + u 2 v2 + · · · + u n vn = u · v. ⎣.⎦ vn

54

3 Matrici e trasformazioni geometriche

Un altro caso particolare è quello che definisce il cosiddetto prodotto esterno tra vettori, nel quale un vettore colonna di lunghezza n è moltiplicato per un vettore riga di pari dimensioni fornendo come risultato una matrice di dimensioni n × n data da ⎤ ⎡ ⎤ ⎡ u 1 v1 u 1 v2 · · · u 1 vn u 1 v 1 v2 · · · v n ⎢ u 2 v1 u 2 v2 · · · u 2 vn ⎥ ⎢u 2 ⎥ ⎢ ⎥ ⎢ ⎥ uv T = ⎢ . ⎥ =⎢ . .. . . .. ⎥ . ⎣ .. ⎣ .. ⎦ . . . ⎦ u n v1 u n v2 · · · u n vn

un

Come vedremo nella Sezione 3.3, le matrici quadrate 2 × 2 e 3 × 3 saranno utilizzate per rappresentare rispettivamente le trasformazioni nel piano e nello spazio quando si considerano coordinate cartesiane. Analogamente, in coordinate omogenee, avremo a che fare con matrici 3 × 3 per trasformazioni nel piano e 4 × 4 per trasformazioni nello spazio. L’azione di trasformazione avverrà moltiplicando una matrice per il vettore (colonna) corrispondente ad un punto. Questo è possibile applicando il prodotto tra matrici in quanto, per esempio, il vettore colonna che rappresenta un punto nel piano in coordinate cartesiane può essere visto come una matrice di dimensioni 2 × 1. Analogamente, un vettore colonna che rappresenta un punto nello spazio corrisponde ad una matrice di dimensioni 3 × 1.

3.2 Alcune matrici particolari Esistono classi di matrici che godono di proprietà particolari. Tra queste una classe importante è quella rappresentata dalle matrici quadrate ovvero quelle matrici che hanno un numero di righe pari al numero di colonne. Data una matrice quadrata A ∈ Rn×n definiamo diagonale della matrice l’insieme degli elementi aii , per i = 1, . . . , n, con indice di riga pari all’indice di colonna. Una matrice quadrata A ∈ Rn×n è detta matrice diagonale se gli unici elementi non nulli giacciono sulla sua diagonale, cioè se ai j = 0, per i = j. Esempio 3.5 La matrice A ∈ R3×3 definita da ⎡

⎤ 200 A = ⎣0 1 0⎦ 003 è una matrice diagonale in quanto tutti gli elementi extra-diagonali, ovvero ai j per i = j, sono nulli. Una matrice diagonale che ha tutti gli elementi diagonali pari a 1 è detta matrice identità. In particolare, denoteremo con In la matrice identità di ordine n.

3.2 Alcune matrici particolari

55

Esempio 3.6 La matrice I3 ∈ R3×3 definita da ⎤ 100 I3 = ⎣0 1 0⎦ 001 ⎡

è la matrice identità di ordine 3. Una matrice quadrata è detta triangolare inferiore se ha tutti gli elementi sopra la diagonale nulli, cioè se ai j = 0 per ogni j > i. Analogamente, una matrice quadrata è detta triangolare superiore se ha tutti gli elementi sotto la diagonale nulli, cioè se ai j = 0 per ogni j < i. Data una matrice A ∈ Rn×m si definisce matrice trasposta di A la matrice A T ∈ Rm×n ottenuta da A scambiandone le righe con le colonne, ovvero ⎡

a11 ⎢a12 ⎢ AT = ⎢ . ⎣ ..

a21 a22 .. .

··· ··· .. .

⎤ am1 am2 ⎥ ⎥ .. ⎥ , . ⎦

a1n a2n · · · amn

dove il generico elemento aiTj coincide con l’elemento a ji della matrice di partenza. Una matrice quadrata A ∈ Rn×n è detta simmetrica se coincide con la sua trasposta, ovvero A = A T . Esempio 3.7 La matrice A ∈ R3×3 definita da ⎤ 213 A = ⎣1 3 2 ⎦ 320 ⎡

è simmetrica in quanto ai j = a ji , per ogni i, j = 1, . . . , 3. Una matrice quadrata A ∈ Rn×n è detta invertibile se esiste una matrice A−1 ∈ tale che

Rn×n

A A−1 = A−1 A = In . Se esiste, la matrice A−1 è detta matrice inversa di A.

56

3 Matrici e trasformazioni geometriche

Esempio 3.8 Data la matrice A ∈ R3×3 definita da ⎡

⎤ 101 A = ⎣2 1 1⎦ 313

verifichiamo che la matrice A−1 definita da ⎤ ⎡ 2 1 −1 A = ⎣−3 0 1 ⎦ −1 −1 1 è la sua inversa. Infatti, valgono le seguenti identità ⎤ ⎤ ⎡ ⎤⎡ 100 2 1 −1 101 = ⎣2 1 1⎦ ⎣−3 0 1 ⎦ = ⎣0 1 0⎦ = I3 , 001 −1 −1 1 313 ⎡

A A−1

⎤⎡ 10 2 1 −1 A−1 A = ⎣−3 0 1 ⎦ ⎣2 1 31 −1 −1 1 ⎡

⎤ ⎤ ⎡ 100 1 1⎦ = ⎣0 1 0⎦ = I3 . 001 3

Una matrice quadrata invertibile è detta ortogonale se A−1 = A T , ovvero se la sua inversa coincide con la sua trasposta. Esempio 3.9 La A ∈ R3×3 definita da

⎡ √3 ⎢ A=⎣

2 1 2

0 è invertibile e la sua inversa

A−1

− 21 0



⎥ 0⎦ 0 1

√ 3 2

è data da ⎤ ⎡√ 3 1 0 2 2 ⎥ ⎢ √ 3 ⎥ 1 A=⎢ ⎣− 2 2 0⎦ , 0 0 1

3.2 Alcune matrici particolari

57

infatti si ha ⎡√ A A−1

⎢ =⎢ ⎣

3 1 2 − √2 3 1 2 2

0

⎤⎡√

0 1

0



⎡ ⎤ 100 ⎥ ⎥ 0⎦ = ⎣0 1 0⎦ = I3 . 001 0 1

3 1 ⎥ ⎢ 2 √2 ⎥⎢ 0⎦ ⎣− 21 23

0

0

Si nota inoltre che, in questo caso la matrice inversa A−1 coincide con la trasposta A T e quindi la matrice A è ortogonale.

3.2.1 Matrici invertibili e determinante Il fatto che una matrice sia o meno invertibile, ovvero che esista o meno una corrispondente matrice inversa, è una delle proprietà fondamentali che permettono di caratterizzare la natura della matrice stessa e delle operazioni ad essa associate. Come vedremo nel dettaglio nelle prossime sezioni, una matrice può essere utilizzata per rappresentare una trasformazione geometrica nel piano e nello spazio, ovvero una operazione che sposta o deforma un dato oggetto in una nuova posizione. L’esistenza dell’inversa di una matrice A che rappresenta una determinata trasformazione geometrica, corrisponde all’esistenza di una trasformazione inversa che, se applicata all’oggetto trasformato, lo riporta nella configurazione di partenza (si veda Figura 3.1). Osservazione 3.1 L’invertibilità di una matrice gioca un ruolo fondamentale anche quando essa viene utilizzata per definire un sistema lineare. Si consideri, per esempio, y A

A−1

Figura 3.1 Trasformazione e trasformazione inversa

x

58

3 Matrici e trasformazioni geometriche

un sistema lineare di n equazioni in n incognite ⎧ a11 x1 + a12 x2 + · · · + a1n xn = b1 , ⎪ ⎪ ⎪a x + a x + ··· + a x = b , ⎨ 21 1 22 2 2n n 2 . ⎪ .. ⎪ ⎪ ⎩ an1 x1 + an2 x2 + · · · + ann xn = bn .

(3.1)

Esso può essere scritto in forma matriciale compatta come Ax = b, dove A ∈ Rn×n è la matrice quadrata di elementi ai j con i, j = 1, . . . , n e x = [x1 , x2 , . . . , xn ]T e b = [b1 , b2 , . . . , bn ]T ∈ Rn sono, rispettivamente, il vettore delle incognite e dei termini noti. Se la matrice A è invertibile, il sistema (3.1) ammette una soluzione unica data da x = A−1 b. Per ogni matrice quadrata è possibile definire un numero, detto determinante della matrice, che è fondamentale per caratterizzarne l’esistenza o meno dell’inversa. Se, infatti, una matrice quadrata ha determinante diverso da zero, la matrice è invertibile. Vediamo come si può definire il determinante di matrici quadrate di dimensioni arbitrarie. Una matrice quadrata A di dimensioni 1 × 1 è definita dall’unico elemento a11 e il suo determinante è pari al suo valore, ovvero detA = det a11 = a11 . Il determinante di una matrice quadrata A di dimensioni 2 × 2 è definito da  a11 a12 = a11 a22 − a12 a21 , detA = det a21 a22 ovvero è pari al prodotto degli elementi della diagonale principale meno il prodotto degli elementi della diagonale secondaria. In generale, per matrici quadrate di dimensioni arbitrarie A ∈ Rn×n , il determinante può essere calcolato utilizzando il cosiddetto sviluppo di Laplace per righe. Scelta la riga i-sima, si ha detA =

n 

ai j Ci j ,

(3.2)

j=1

dove il termine Ci j è il complemento algebrico relativo alla posizione (i, j) definito dalla relazione Ci j = (−1)i+ j detAi j ,

3.2 Alcune matrici particolari

59

con Ai j che denota la matrice di dimensioni (n − 1) × (n − 1) (detta minore) ottenuta da A eliminando la i-sima riga e la j-sima colonna. Si noti come il termine (−1)i+ j attribuisca segni alternati, positivi e negativi, ai termini della sommatoria. Esempio 3.10 Si vuole calcolare il determinante della matrice A di dimensioni 3 × 3 definita da ⎡ ⎤ 2 2 3 A = ⎣ 3 −1 2⎦ . −2 1 1 Utilizzando la formula (3.2), scelta la prima riga per lo sviluppo, si ha    −1 2 3 2 3 −1 2 3 4 + 2 (−1) det + 3 (−1) det det(A) = 2 (−1) det 1 1 −2 1 −2 1 = 2(−2 − 1) − 2(3 + 4) + 3(3 − 2) = −6 − 14 + 3 = −17. Data una generica matrice A di dimensioni 3 × 3 definita da ⎤ ⎡ a11 a12 a13 A = ⎣a21 a22 a23 ⎦ , a31 a32 a33 il suo determinante calcolato utilizzando lo sviluppo di Laplace (3.2) è dato da detA = a11 a22 a33 + a12 a23 a31 + a13 a21 a32 − a31 a22 a31 − a11 a23 a33 − a12 a21 a31 . La cosiddetta regola di Sarrus, applicabile solo alle matrici di dimensioni 3 × 3, permette di memorizzare facilmente quest’ultima relazione: definita la matrice rettangolare estesa ottenuta ripetendo a destra della matrice A le sue prime due colonne a11 a12 a13 a11 a12 a21 a22 a23 a21 a22 , a31 a32 a33 a31 a32

il determinante di A si ottiene sommando i prodotti degli elementi che stanno sulle 3 diagonali principali della matrice estesa (indicati dalle linee rosse) e sottraendo i prodotti degli elementi che stanno sulle 3 diagonali secondarie (indicati dalle linee blu). Il determinante delle matrici gode delle seguenti proprietà: • Determinante nullo: il determinante di una matrice è nullo se la matrice ha una riga (o una colonna) composta solo da zeri, oppure se due o più righe (o due o più

60

3 Matrici e trasformazioni geometriche

colonne) sono linearmente dipendenti, ovvero se una riga (o colonna) può essere scritta come combinazione lineare delle altre. Il determinante di una matrice è diverso da zero se e solo se la matrice è invertibile. • Determinante di matrici triangolari (e, in particolare, diagonali): se A è triangolare (superiore o inferiore), allora detA =

n 

aii .

i=1

• Determinante del prodotto tra matrici (Teorema di Binet): det(AB) = detA detB. • Determinante della matrice trasposta: det(A T ) = detA. • Determinante della matrice inversa: se A è invertibile, allora det(A−1 ) =

1 . detA

• Determinante di una matrice ortogonale: se A è ortogonale, allora det(A) = ±1.

3.3 Trasformazioni geometriche affini Come già anticipato le matrici rappresentano uno strumento estremamente efficace per rappresentare le trasformazioni geometriche nel piano e nello spazio. Una trasformazione è una funzione che associa ad un punto nel piano (o nello spazio) un altro punto nel piano (o nello spazio). In questa sezione andremo ad introdurre le principali trasformazioni geometriche, ricavandone la rappresentazione matriciale e discutendone le principali proprietà. In generale, data una matrice quadrata A ∈ Rn×n invertibile e un vettore d ∈ Rn , una trasformazione affine associa a un vettore p ∈ Rn un altro vettore p ∈ Rn dato da p = A p + d.

(3.3)

Qui ci limitiamo a considerare le trasformazioni affini che rappresentano trasformazioni geometriche nel piano e nello spazio. Lavorando in coordinate cartesiane, una trasformazione nello spazio è associata ad una matrice A ∈ R3×3 , mentre per

3.3 Trasformazioni geometriche affini

61

una trasformazione nel piano la matrice associata A ha dimensioni 2 × 2. La matrice A definita da ⎤ ⎡ a11 a12 a13 A = ⎣a21 a22 a23 ⎦ a31 a32 a33 e il vettore d di coordinate

⎡ ⎤ d1 d = ⎣d2 ⎦ d3

definiscono una trasformazione affine che mappa un punto nello spazio P associato al vettore p di coordinate [ px , p y , pz ]T in un nuovo punto P  associato al vettore p di coordinate ⎡ ⎤ ⎡ ⎤⎡ ⎤ ⎡ ⎤ px a11 a12 a13 px dx ⎣ p y ⎦ = ⎣a21 a22 a23 ⎦ ⎣ p y ⎦ + ⎣d y ⎦ . a31 a32 a33 pz dz pz Le proprietà della matrice A riflettono quelle della trasformazione a cui è associata. In particolare, il fatto che la matrice A sia invertibile (ovvero abbia il determinante diverso da zero) garantisce l’esistenza di una trasformazione inversa, associata alla matrice inversa A−1 che trasporta P  in P, ovvero ⎤ ⎡ ⎤−1 ⎡  ⎤ px − dx a11 a12 a13 px ⎣ p y ⎦ = ⎣a21 a22 a23 ⎦ ⎣ p y − d y ⎦ . pz a31 a32 a33 pz − dz ⎡

Il valore che assume il determinante fornisce indicazioni sulle caratteristiche della trasformazione geometrica a cui la matrice è associata. In particolare, quando una trasformazione nel piano rappresentata dalla matrice A viene applicata ad una figura piana di area S, l’area della figura trasformata sarà pari a S  = |det(A)| S. Analogamente dato un solido di volume V , una trasformazione nello spazio applicata ad esso definisce un solido trasformato di volume V  = |det(A)| V. Le trasformazioni a determinante unitario hanno quindi la proprietà di mantenere invariati l’area (nel piano) o il volume (nello spazio) degli oggetti a cui sono applicate. In generale, tutte le trasformazioni affini trasformano segmenti di retta in segmenti di retta, inoltre preservano il parallelismo tra due segmenti e conservano il rapporto fra segmenti paralleli (in particolare il punto medio di un segmento corrisponde al punto medio del segmento trasformato). Tuttavia, in generale una trasformazione

62

3 Matrici e trasformazioni geometriche

affine non è un’isometria cioè non conserva le distanze tra punti e non conserva gli angoli. Introduciamo ora alcune trasformazioni affini elementari descrivendone le principali caratteristiche. Iniziamo con il considerare le trasformazioni affini nella forma (3.3) con vettore d nullo.

3.3.1 Identità La trasformazione più semplice è quella che trasforma un oggetto in se stesso. Essa è detta trasformazione identità e, non sorprendentemente, è definita dalla matrice identità A = In . Infatti, dato un generico punto P nello spazio associato al vettore p di coordinate [ px , p y , pz ]T , il punto P  ottenuto attraverso la matrice identità è associato al vettore p di coordinate ⎡

⎤ ⎡ ⎤⎡ ⎤ ⎡ ⎤ px 100 px px ⎣ p y ⎦ = ⎣0 1 0⎦ ⎣ p y ⎦ = ⎣ p y ⎦ , 001 pz pz pz ovvero coincide con P. È banale verificare che l’identità è una trasformazione invertibile con In−1 = In e che conserva l’area (nel piano) o il volume (nello spazio) dell’oggetto a cui è applicata, infatti det(I2 ) = det(I3 ) = 1.

3.3.2 Scalatura La trasformazione di scalatura (o scaling) rappresenta l’amplificazione o la contrazione delle coordinate di un punto, rispetto ad un centro di scalatura. Introduciamo la scalatura nel caso in cui il centro di scalatura sia l’origine degli assi. Vedremo più avanti (Sezione 3.5) come, componendo opportunamente diverse trasformazioni, sarà sempre possibile ricondursi a questo caso. La matrice di scalatura S rispetto all’origine è una matrice diagonale definita da ⎡ ⎤ λx 0 0 S = ⎣ 0 λy 0 ⎦ , 0 0 λz dove λx , λ y e λz sono numeri reali non nulli che rappresentano, rispettivamente, il fattore di scalatura lungo le direzioni x, y e z.

3.3 Trasformazioni geometriche affini

63

Il suo effetto, quando è applicata ad un generico punto P associato al vettore p di coordinate [ px , p y , pz ]T , è quello di amplificarne le diverse coordinate del rispettivo fattore di scalatura, ovvero il punto trasformato P  sarà associato al vettore p di coordinate ⎡ ⎤ ⎡ ⎤⎡ ⎤ ⎡ ⎤ px λx 0 0 px λx px ⎣ p y ⎦ = ⎣ 0 λ y 0 ⎦ ⎣ p y ⎦ = ⎣λ y p y ⎦ . 0 0 λz pz λz pz pz Nel piano, le matrici di scalatura sono di dimensioni 2 × 2 ottenute restringendo le matrici appena introdotte alle prime due righe e due colonne. Esempio 3.11 Si vuole applicare al quadrato ABC D di lato 2 mostrato in Figura 3.2 (sinistra) una scalatura di un fattore 2 in direzione x e di un fattore 1/2 in direzione y. Tale trasformazione è rappresentata dalla matrice  S=

20 . 0 21

Applicando la trasformazione ai vettori associati ai vertici del quadrato è facile vedere (Figura 3.2, destra) come il quadrato venga trasformato in un rettangolo di vertici A , B  , C  , D  le cui coordinate sono date da           20 0 20 2 bx ax 0 4 , , = = = = a y by 0 0 0 21 0 0 21 0           20 2 20 0 cx dx 4 0 , . = = = = cy d y 1 1 0 21 2 0 21 2

y D

A

y C

B

Figura 3.2 Scalatura in due dimensioni

x

D

C

A

B x

64

3 Matrici e trasformazioni geometriche y

λ=2 λ=1 λ = 0.5 x

λ = −0.5 λ = −1 λ = −2

Figura 3.3 Scalatura uniforme in due dimensioni

Quando i fattori di scalatura nelle diverse direzioni sono uguali, si parla di scalatura uniforme, che è rappresentata da una matrice della forma ⎡ ⎤ λ00 S = ⎣0 λ 0⎦ . 00λ Un esempio di scalatura uniforme in due dimensioni, al variare del fattore di scalatura λ è mostrato in Figura 3.3. Per valori del fattore di scalatura λ maggiori di 1 l’oggetto viene allontanato dal centro di scalatura, per valori compresi tra 0 e 1 l’oggetto si avvicina al centro di scalatura, mentre per valori negativi l’oggetto oltre che aumentare (per λ < −1) o ridurre (per −1 < λ < 0) la distanza dal centro di scalatura, viene anche ”ribaltato” rispetto all’origine. La scalatura è una trasformazione invertibile, infatti, per λx , λ y e λz non nulli, si ha det(A) = λx λ y λz  = 0; inoltre la matrice inversa è data da ⎤ ⎤−1 ⎡ 1 ⎡ λx 0 0 λx 0 0 ⎥ ⎢ 1 S −1 = ⎣ 0 λ y 0 ⎦ = ⎣ 0 λ y 0 ⎦ . 0 0 λz 0 0 λ1z

3.3.3 Deformazione di taglio (o shear) La deformazione di taglio (detta anche di shear) muove un punto in una direzione assegnata di una quantità proporzionale alla distanza con segno da una retta (nel piano) o da un piano (nello spazio) paralleli alla direzione di spostamento. Un esempio

3.3 Trasformazioni geometriche affini

65

y

y

x

x

Figura 3.4 Deformazione di taglio nel piano in direzione x

nel piano è mostrato in Figura 3.4 dove lo deformazione di taglio è in direzione x e la sua intensità è proporzionale alla distanza dall’asse x. Nel piano la matrice associata ad una deformazione di taglio in direzione x è data da  1m Dx = , 0 1 dove m è detto fattore di deformazione il cui valore pesa il livello di deformazione imposto. Ad esempio, la deformazione visualizzata in Figura 3.4 è ottenuta considerando un fattore di deformazione m = 1. Analogamente la deformazione in direzione y è rappresentata dalla matrice 1 0 . m1

 Dy =

Nello spazio, è possibile definire deformazioni di taglio in direzioni x, y e z con una deformazione proporzionale alla distanza da uno dei piani paralleli alla direzione considerata. A titolo di esempio, la deformazione in direzione x proporzionale alla distanza z dal piano x y è rappresentata dalla matrice ⎤ 10m Dxz = ⎣0 1 0 ⎦ . 00 1 ⎡

In generale, la matrice di deformazione di taglio è data dalla matrice identità modificata ponendo uguale al fattore di deformazione m l’elemento sulla riga associata alla direzione di deformazione e sulla colonna associata alla distanza dal piano di riferimento.

66

3 Matrici e trasformazioni geometriche

Esempio 3.12 Dato il triangolo rettangolo ABC mostrato in Figura 3.5, si applichi la deformazione nel piano in direzione x rappresentata dalla matrice 1 21 Dx = . 01 

Il triangolo ABC viene trasformato nel triangolo A B  C  di vertici    ax 1 = a y 0    bx 1 = by 0    cx 1 = cy 0

y

A

  0 0 , = 0 1 0   1 2 2 2 , = 0 1 0   1 4 2 2 . = 4 4 1 1 2

y

C

x

B

A

C

B

x

Figura 3.5 Deformazione di taglio nel piano in direzione x

Essendo caratterizzate da matrici triangolari con elementi unitari sulla diagonale principale, tutte le deformazioni di taglio hanno determinante unitario e quindi conservano l’area (nel piano) e il volume (nello spazio). Inoltre sono trasformazioni sempre invertibili e la matrice inversa è ottenuta invertendo il segno del fattore di deformazione. Ad esempio, si ha Dx−1



1m = 0 1

−1

1 −m . = 0 1 

3.3 Trasformazioni geometriche affini

67 y

Figura 3.6 Rotazione nel piano

P

P

β

x

3.3.4 Rotazione Un’altra importante trasformazione è la rotazione. Iniziamo con l’introdurre la rotazione nel piano. Come nel caso della scalatura, anche la rotazione è definita rispetto ad un centro di rotazione. Anche in questo caso possiamo considerare il caso particolare in cui il centro di rotazione sia l’origine degli assi. Rotazioni rispetto ad altri punti possono essere ottenute attraverso un’opportuna composizione di trasformazioni (si veda Sezione 3.5). Come mostrato in Figura 3.6, ruotando nel piano un punto P associato al vettore p di coordinate [ px , p y ]T di un angolo β (preso positivo in senso antiorario) si ottiene un punto P  associato al vettore p di coordinate px = px cos(β) − p y sin(β), p y = px sin(β) + p y cos(β), ovvero la matrice di rotazione di un angolo β attorno all’origine è data da cos(β) − sin(β) . sin(β) cos(β)

 R=

Esempio 3.13 Si vuole applicare al triangolo ABC mostrato in Figura 3.7 (sinistra), una rotazione di un angolo β = π/3 attorno all’origine. La matrice di rotazione corrispondente è data da √   1 3 − cos(π/3) − sin(π/3) 2 = √2 = . sin(π/3) cos(π/3) 3 1



Rπ/3

2

2

68

3 Matrici e trasformazioni geometriche

I vertici del triangolo ruotato A B  C  sono quindi dati da √      1 − 23 2 1 ax 2 √ = √ , = 3 1 a y 0 3 2 2   √    3  1 2 bx 4 2 − 2 √ √ = , = 3 1 by 0 2 3 2 2  √  √     1 3 3 − cx 4 2 − 2 2 = √ 21 . = √ 3 1 cy 1 2 3+ 2

2

2

y

y

C B

C

A β

A

Bx

x

Figura 3.7 Rotazione nel piano di β = π/3 attorno all’origine degli assi

Nello spazio, è possibile definire una rotazione in funzione di un generico asse di rotazione (identificato da una retta orientata) e di un angolo. Ci limitiamo qui a ricavare le matrici di rotazione nello spazio relative agli assi cartesiani (si veda Figura 3.8). In particolare, una rotazione di un angolo β attorno all’asse z è definita dalla seguente matrice ⎡ ⎤ cos(β) − sin(β) 0 Rz = ⎣ sin(β) cos(β) 0⎦ , 0 0 1 da cui è facile verificare che un punto P nello spazio che viene fatto ruotare attorno all’asse z subirà una variazione delle coordinate x e y, mentre manterrà invariata la coordinata z, infatti ⎤⎡ ⎤ ⎡ ⎤ ⎡ ⎤ px px cos(β) − sin(β) 0 px cos(β) − p y sin(β) P  = ⎣ p y ⎦ = ⎣ sin(β) cos(β) 0⎦ ⎣ p y ⎦ = ⎣ px sin(β) + p y cos(β)⎦ . 0 0 1 pz pz pz ⎡

3.3 Trasformazioni geometriche affini

69

z

z

z

P

P

P

x

y

y

x

x

P

P

P

y

Figura 3.8 Rotazioni nello spazio attorno agli assi cartesiani x, y e z

Analogamente possiamo introdurre le matrici di rotazione rispetto all’asse x ⎤ 1 0 0 Rx = ⎣0 cos(β) − sin(β)⎦ , 0 sin(β) cos(β) ⎡

e rispetto all’asse y

⎤ cos(β) 0 sin(β) 1 0 ⎦. Ry = ⎣ 0 − sin(β) 0 cos(β) ⎡

È sempre possibile rappresentare una arbitraria rotazione nello spazio come composizione di due rotazioni attorno ad assi non allineati e quindi, in particolare, attorno a due dei tre assi cartesiani. Tutte le rotazioni sono trasformazioni invertibili a determinante unitario. Essendo un moto rigido non sorprende che le aree (nel piano) e i volumi (nello spazio) siano conservati. Se si considera, ad esempio, la rotazione attorno all’asse y si ha det(R y ) = cos(β)2 + sin(β)2 = 1. Inoltre, la trasformazione inversa si ottiene considerando la stessa rotazione con un angolo opposto (ovvero con segno invertito). Per esempio, si ha ⎡

⎤−1 ⎡ ⎤ ⎡ ⎤ cos(β) 0 sin(β) cos(−β) 0 sin(−β) cos(β) 0 − sin(β) ⎣ 0 ⎦. 1 0 ⎦ =⎣ 0 1 0 ⎦=⎣ 0 1 0 R −1 y = − sin(β) 0 cos(β) − sin(−β) 0 cos(−β) sin(β) 0 cos(β)

Si noti come la matrice di rotazione risulti essere ortogonale, ovvero la sua inversa coincida con la trasposta. Ciò è vero in generale per tutte le rotazioni.

70

3 Matrici e trasformazioni geometriche

3.3.5 Riflessione Nel piano, la riflessione rispetto ad una retta r (detta asse di riflessione) è la trasformazione che associa ad un punto un altro punto nel semipiano opposto rispetto all’asse, che si trova alla stessa distanza da quest’ultimo e tale che il segmento congiungente i due punti sia ortogonale all’asse. In Figura 3.9, il triangolo ABC viene riflesso rispetto ad una retta passante per l’origine nel triangolo A B  C  . Analogamente, nello spazio la riflessione rispetto ad un piano (detto piano di riflessione) è la trasformazione che associa ad un punto un altro punto nel semispazio opposto rispetto al piano, che si trova alla stessa distanza da quest’ultimo e tale che il segmento congiungente i due punti sia ortogonale al piano. Sia in due che in tre dimensioni, la matrice di riflessione M (da mirror) è data da M = I − 2nˆ nˆ T ,

(3.4)

dove I è la matrice identità (I = I2 nel piano e I = I3 nello spazio) e nˆ è il versore normale (ovvero perpendicolare) all’asse di riflessione (nel piano) e al piano di riflessione (nello spazio). Essendo nˆ un vettore colonna di dimensioni 2 × 1 nel piano (3 × 1 nello spazio) la matrice risultante dal prodotto di nˆ per il suo trasposto sarà di dimensioni 2 × 2 nel piano e 3 × 3 nello spazio. La formula (3.4) che definisce la matrice di riflessione può essere ricavata attraverso alcuni semplici passaggi partendo dalla definizione di punto riflesso. Per semplicità facciamo riferimento alla Figura 3.10 che rappresenta il caso bidimenˆ sionale in cui un punto P viene riflesso rispetto alla retta r di versore normale n. Sia p il vettore che rappresenta il punto P. Per calcolare il punto riflesso si calcola innanzitutto il punto H , proiettando P sulla retta di riflessione. Successivamente si trova il punto riflesso P  , rappresentato dal vettore p , in modo che |P H | = |H P  |, e che i tre punti P, H , P  siano allineati. y

y C B

C

A

A

Bx

Figura 3.9 Riflessione nel piano rispetto ad una retta passante per l’origine

x

3.3 Trasformazioni geometriche affini

71 y

Figura 3.10 Derivazione della matrice di riflessione

n ˆ x p P H p P

Ricordiamo che p · nˆ è la proiezione del vettore p in direzione normale alla retta ˆ n. ˆ Di conseguenza di riflessione; notiamo quindi che p = h + (p · n) ˆ n, ˆ h = p − (p · n) e quindi ˆ n. ˆ p = p − 2 (p · n)

(3.5)

Vogliamo ora trovare la matrice M tale per cui p = Mp. Riscriviamo quindi (3.5) in modo equivalente come ˆ · n) ˆ = p − 2n( ˆ nˆ · p) p = p − 2n(p ˆ nˆ T p) = (I − 2nˆ nˆ T )p = Mp, = p − 2n( da cui si ottiene la (3.4). Esempio 3.14 Dato il punto P di coordinate (1, 2)T e la retta r bisettrice del I e III quadrante, si vuole determinare il punto P  ottenuto riflettendo P rispetto alla retta r , si veda Figura 3.11. La retta r ha vettore normale dato da n = (1, −1). Il corrispondente versore si ottiene riscalando n con il suo modulo   √2  n 1 1 2√ nˆ = = . =√ −1 n 2 − 22

72

3 Matrici e trasformazioni geometriche

La matrice di riflessione è quindi data da  √  √ √  2 2 2 10 − 2√ 2 2 −2 M = I − 2nˆ nˆ = 2 01 − 2  1   01 −1 10 , − 2 2 1 12 = = 10 01 −2 2 

T

da cui è facile calcolare le coordinate di P  date da      px 1 01 2 . = = p y 2 10 1 Si noti come la riflessione rispetto alla bisettrice del I e III quadrante ha come effetto lo scambio delle coordinate x e y del punto. y P

P

x Figura 3.11 Riflessione nel piano rispetto alla bisettrice del primo e terzo quadrante

La riflessione è una trasformazione sempre invertibile e il determinante della matrice associata è sempre pari a -1. Consideriamo per semplicità il caso piano, si ha  2   nx nx n y 10 det(M) = det(I − 2nˆ nˆ T ) = det −2 = n y n x n 2y 01  1 − 2n 2x −2n x n y = det = (1 − 2n 2x )(1 − 2n 2y ) − 4n 2x n 2y = −1, −2n y n x 1 − 2n 2y dove si è usato il fatto che il versore normale nˆ = [n x , n y ]T ha modulo unitario.

3.3.6 Traslazione Introduciamo, infine, un’ultima trasformazione affine elementare ottenuta a partire dalla trasformazione identità e aggiungendo un vettore d non nullo. Tale trasforma-

3.3 Trasformazioni geometriche affini

73

zione è la traslazione, che associa ad un punto P associato al vettore p di coordinate [ px , p y , pz ]T un punto P  associato al vettore p di coordinate ⎤ ⎡ ⎤⎡ ⎤ ⎡ ⎤ ⎡ ⎤ px 100 px dx px + dx ⎣ p y ⎦ = ⎣0 1 0⎦ ⎣ p y ⎦ + ⎣d y ⎦ = ⎣ p y + d y ⎦ . 001 pz dz pz + dz pz ⎡

La traslazione nel piano si ottiene omettendo la terza componente nella somma tra i vettori. Esempio 3.15 Applicando al triangolo ABC mostrato in Figura 3.12 la traslazione nel piano definita dal vettore d = [2, 3]T si ottiene il triangolo A B  C  di vertici      ax 2 2 0 , = + = a y 3 3 0      bx 4 2 2 , = + = by 3 3 0      cx 4 2 2 . = + = cy 4 3 1

y

y

C

A

B

C

A

B

Figura 3.12 Traslazione nel piano

x

x

74

3 Matrici e trasformazioni geometriche

Anche in questo caso si tratta di una trasformazione rigida e quindi, essendo la matrice associata data dall’identità, la trasformazione conserva l’area (nel piano) e il volume (nello spazio).

3.3.7 Costruire una matrice di trasformazione Abbiamo visto come ogni trasformazione affine è associata a una corrispondente matrice quadrata e ad una eventuale traslazione. È possibile valutare la matrice associata ad una particolare trasformazione se si conosce l’effetto che la trasformazione ha quando è applicata alla base canonica. La base canonica è formata dai versori ⎡ ⎤ 1 i = ⎣0⎦ , 0

⎡ ⎤ 0 k = ⎣0⎦ . 1

⎡ ⎤ 0 j = ⎣ 1⎦ , 0

Se una trasformazione porta la base canonica nei versori i , j , k , la trasformazione è rappresentata dalla matrice ottenuta affiancando i versori colonna trasformati. Infatti, se consideriamo una generica matrice di trasformazione A di elementi ai j , osserviamo che ⎤⎡ ⎤ ⎡ ⎤ ⎡ a11 1 a11 a12 a13 i = Ai = ⎣a21 a22 a23 ⎦ ⎣0⎦ = ⎣a21 ⎦ , 0 a31 a32 a33 a31 cioè la prima colonna di A coincide con il primo vettore trasformato. Analogamente si mostra che j corrisponde alla seconda colonna di A e k alla terza. Consideriamo ora un esempio bidimensionale, ricordando che la base canonica nel piano cartesiano è formata dai vettori i = [1, 0]T , j = [0, 1]T . Esempio 3.16 Si consideri la rotazione nel piano di un angolo β in senso antiorario; la base canonica viene trasformata (si veda Figura 3.13) nei versori ruotati cos(β) , i = sin(β) 



− sin(β) j = . cos(β) 



La matrice di rotazione nel piano è infatti definita da R = [i |j ] =

 cos(β) − sin(β) . sin(β) cos(β)

3.4 Trasformazioni con coordinate omogenee

75

y j

j

i

x

i

Figura 3.13 Rotazione della base canonica

3.4 Trasformazioni con coordinate omogenee Abbiamo appena visto come la traslazione possa essere definita attraverso l’operazione di somma vettoriale. Tutte le altre trasformazioni che sono state introdotte (identità, scalatura, shear, rotazione, riflessione) sono invece applicate attraverso l’azione di una matrice su un vettore (ovvero un prodotto tra una matrice quadrata e un vettore colonna di dimensioni compatibili). Come risulterà più chiaro nella Sezione 3.5, al fine di facilitare l’operazione di composizione tra trasformazioni, risulta utile identificare una rappresentazione matriciale anche della traslazione. Per fare ciò è necessario fare ricorso alle coordinate omogenee, che sono state introdotte nel Capitolo 2. Tutte le trasformazioni (identità, scalatura, shear, rotazione, riflessione) introdotte nelle Sezioni 3.3.1-3.3.5 si applicano attraverso un prodotto matrice vettore tra la matrice A (di dimensioni 2 × 2 nel piano e 3 × 3 nello spazio) associata alla trasformazione e il vettore colonna associato al punto che si vuole trasformare. In coordinate omogenee, ciascuna di queste trasformazioni può essere ottenuta considerando la matrice estesa data, nel caso di trasformazione nello spazio, da = A

0 a11 0 a = 21 a31 0 0 0 0 01 A

a12 a22 a32 0

a13 a23 a33 0

0 0 0 1

in cui cioè la matrice A è stata orlata con una riga e una colonna in più aventi tutti gli elementi nulli tranne quello diagonale che vale 1. Le matrici estese in coordinate omogenee risulteranno quindi di dimensioni 4 × 4 per trasformazioni nello spazio e, analogamente, di dimensioni 3 × 3 per trasformazioni nel piano.

76

3 Matrici e trasformazioni geometriche

Un punto P nello spazio è identificato in coordinate omogenee dal vettore  p = [ px , p y , pz , 1]T , e la sua trasformazione nel punto P  in coordinate omogenee è ottenuta ancora una volta attraverso un prodotto matrice vettore, in particolare  attraverso la matrice A: ⎡ ⎤ ⎡ ⎤⎡ ⎤ px px a11 a12 a13 0 ⎢ p y ⎥ ⎢a21 a22 a23 0⎥ ⎢ p y ⎥ ⎢ ⎥=⎢ ⎥⎢ ⎥ ⎣ pz ⎦ ⎣a31 a32 a33 0⎦ ⎣ pz ⎦ . 0 0 0 1 1 1

3.4.1 Traslazione con coordinate omogenee Utilizzando le coordinate omogenee è possibile definire la traslazione associata ad un vettore d = [d1 , d2 , d3 ]T attraverso la seguente matrice estesa di dimensioni 4 × 4: ⎡

1 ⎢0 D=⎢ ⎣0 0

0 1 0 0

0 0 1 0

⎤ dx dy ⎥ ⎥, dz ⎦ 1

dove la matrice identità è stata orlata a destra con il vettore traslazione e in basso con un vettore di zeri e uno sulla diagonale. Dato, infatti, un punto P associato al vettore  p di coordinate omogenee [ px , p y , pz , 1]T , il punto traslato P  è associato al vettore  p in coordinate omogenee dato dal seguente prodotto matrice vettore: ⎡

⎤ ⎡ px 1 ⎢ p y ⎥ ⎢0 ⎢ ⎥=⎢ ⎣ pz ⎦ ⎣0 0 1

0 1 0 0

0 0 1 0

⎤ ⎤⎡ ⎤ ⎡ dx px px + dx ⎥ ⎢ ⎥ ⎢ dy ⎥ ⎥ ⎢ py ⎥ = ⎢ py + dy ⎥ . ⎦ ⎣ ⎦ ⎣ dz pz pz + dz ⎦ 1 1 1

3.4.2 Trasformazioni affini arbitrarie Grazie alle coordinate omogenee possiamo definire attraverso una matrice una arbitraria trasformazione affine della forma (3.3). La generica trasformazione affine nello spazio x = A x + d è infatti definita dalla matrice dx a11 dy a21 T = = dz a31 0 0 0 1 0 A

a12 a22 a32 0

a13 a23 a33 0

dx dy , dz 1

3.4 Trasformazioni con coordinate omogenee

77

che, applicata al generico punto P nello spazio, esegue la trasformazione associata alla matrice A seguita dalla traslazione identificata dal vettore d. Esempio 3.17 La roto-traslazione nello spazio data dalla rotazione di un angolo β = 2π/3 attorno all’asse x seguita dalla traslazione data dal vettore d = [1, 1, 2]T è definita dalla matrice ⎤ ⎡ ⎤ ⎡ cos(β) − sin(β) 0 dx 0 −1 0 1 ⎢ sin(β) cos(β) 0 d y ⎥ ⎢1 0 0 1⎥ ⎥. ⎥=⎢ T =⎢ ⎣ 0 0 1 dz ⎦ ⎣0 0 1 2⎦ 0 0 01 0 0 0 1 Si noti come l’orlatura della matrice A mediante il vettore d sia possibile solamente nel caso in cui la traslazione avvenga dopo la trasformazione identificata da A. In caso contrario, sarà necessario considerare le regole di composizione fra trasformazioni, che verranno introdotte nella prossima sezione.

3.5 Composizione di trasformazioni Abbiamo visto come, grazie anche all’utilizzo delle coordinate omogenee, sia possibile rappresentare sotto forma di matrice tutte le trasformazioni geometriche affini fino a qui introdotte. È possibile rappresentare in modo analogo anche trasformazioni più complesse, nel caso in cui esse possano essere ottenute come composizione di trasformazioni elementari. Per ottenere infatti la matrice corrispondente alla composizione di due o più trasformazioni è sufficiente moltiplicare le rispettive matrici. Esse andranno intese in coordinate omogenee se fra le trasformazioni coinvolte vi sia almeno una traslazione. In caso contrario è possibile utilizzare le matrici standard. Si consideri per esempio la composizione tra una prima trasformazione definita dalla matrice A1 seguita da una seconda trasformazione definita dalla matrice A2 . Applicando la prima trasformazione al generico punto rappresentato dal vettore p otteniamo il punto trasformato p = A1 p. Se a quest’ultimo applichiamo la seconda trasformazione A2 otteniamo un nuovo punto p = A2 p = A2 A1 p = Ap, dove A = A2 A1 è la matrice che rappresenta la trasformazione composta. Si noti che l’ordine con cui sono moltiplicate le matrici nella composizione è importante in quanto il prodotto tra matrici (e quindi anche la composizione tra trasformazioni)

78

3 Matrici e trasformazioni geometriche

non gode, in generale, della proprietà commutativa, come evidenziato nel seguente esempio. Esempio 3.18 Dato il punto P nel piano, di coordinate [2, −1]T , vogliamo calcolare il punto ottenuto applicando in successione una riflessione rispetto all’asse x e una rotazione di un angolo π/2 in senso antiorario (si veda Figura 3.14, sinistra). Notando che il versore normale alla retta di riflessione è in questo caso dato da [0 1]T , la riflessione e la rotazione considerate sono rappresentate rispettivamente dalle matrici:  1 0 , Mx = 0 −1 0 −1 . = 1 0 

Rπ/2

Le coordinate del punto trasformato P  si ottengono quindi valutando il seguente prodotto tra le matrici di trasformazione e il punto iniziale:           px −1 2 01 2 0 −1 px 0 −1 1 0 . = = = = p y p y 2 1 0 −1 0 −1 −1 1 0 1 0 Si può notare come la trasformazione risultante dalla composizione della riflessione e della rotazione corrisponda in questo caso alla matrice di riflessione rispetto alla bisettrice del primo e terzo quadrante, data da  01 M= 10 come appare evidente anche dalla Figura 3.14 (sinistra) dove è rappresentata la sequenza di trasformazioni. Come detto, l’ordine con cui le trasformazioni sono applicate è importante. Se, infatti, applichiamo prima la rotazione di π/2 in senso antiorario e successivamente la riflessione rispetto all’asse x otteniamo un punto diverso (si veda Figura 3.14, destra), ovvero            px px 1 0 1 0 0 −1 2 0 −1 2 1 = = = = .   py 0 −1 p y 0 −1 1 0 −1 −1 0 −1 −2

In questo caso la matrice ottenuta dalla composizione delle due trasformazione è data da  0 −1 , M= −1 0

3.5 Composizione di trasformazioni

79

e corrisponde ad una riflessione rispetto alla bisettrice del secondo e quarto quadrante. y P

y P



P x

x

P

P P 

Figura 3.14 Composizione di una riflessione seguita da una rotazione (a sinistra) e composizione delle stesse trasformazioni in ordine inverso (a destra)

La composizione di trasformazioni, realizzata attraverso il prodotto tra le matrici corrispondenti, consente di ottenere, a partire dalle trasformazioni di base introdotte precedentemente, una collezione potenzialmente illimitata di trasformazioni arbitrariamente complesse. In particolare, è utile mostrare come la composizione può essere utilizzata per generalizzare alcune trasformazioni che sono state introdotte per casi particolari. Nel seguente esempio, vediamo come, a partire dalla rotazione nel piano rispetto all’origine, opportunamente composta con delle traslazioni, è possibile derivare la rotazione attorno ad un punto arbitrario. Esempio 3.19 Si vuole determinare la matrice associata alla rotazione di un angolo β = π/2 in senso antiorario del punto P di coordinate [2, 1]T attorno al punto Q di coordinate [1, 1]T , come visualizzato in Figura 3.15 (sinistra). Tale trasformazione può essere ottenuta effettuando la traslazione determinata dal vettore d = O − Q, che porta il centro di rotazione Q nell’origine degli assi, seguita da una rotazione attorno all’origine e da una ulteriore traslazione uguale alla precedente ma di verso opposto (si veda Figura 3.15, destra). In questo caso, per consentire di comporre traslazioni e rotazione, è opportuno lavorare in coordinate omogenee. Il punto P è rappresentato in coordinate omogenee dal vettore [2, 1, 1]T ; la prima traslazione da applicare è quella che sposta il centro di rotazione Q

80

3 Matrici e trasformazioni geometriche

nell’origine degli assi ed è definita dalla matrice ⎤ 1 0 −1 T = ⎣0 1 −1⎦ . 00 1 ⎡

La rotazione di π/2 attorno all’origine è rappresentata dalla matrice ⎤ 0 −1 0 = ⎣1 0 0 ⎦ . 0 0 1 ⎡

Rπ/2

Il punto trasformato P  è quindi ottenuto applicando in sequenza la traslazione T , la rotazione Rπ/2 e la traslazione inversa T −1 , ovvero ⎤ ⎡ ⎤⎡ ⎤⎡ ⎤⎡ ⎤ ⎡ ⎤⎡ ⎤ ⎡ ⎤ px 101 0 −1 0 1 0 −1 2 0 −1 2 2 1 ⎣ p y ⎦ = ⎣0 1 1⎦ ⎣1 0 0⎦ ⎣0 1 −1⎦ ⎣1⎦ = ⎣1 0 0⎦ ⎣1⎦ = ⎣2⎦ . 001 0 0 1 00 1 1 0 0 1 1 1 1 ⎡

y

y

P

P Q

Q

P x

O

P x

Figura 3.15 Rotazione attorno ad un punto arbitrario come singola trasformazione (a sinistra) e come composizione di trasformazioni semplici (a destra)

3.5.1 Classificazione delle trasformazioni affini Nelle sezioni precedenti abbiamo considerato trasformazioni espresse nella forma x = A x + d. Abbiamo chiamato tali trasformazioni affini se det A = 0, ossia se la matrice A è invertibile. Le trasformazioni affini hanno la caratteristica di trasformare rette in

3.5 Composizione di trasformazioni

81

y

y

D

C

B A=

C

A

D

B

D

x

C

D A = A

C

B

x

B

Figura 3.16 Confronto fra una rotazione di angolo π nel piano ed una riflessione rispetto alla bisettrice del II-IV quadrante: osserviamo che la seconda inverte il senso di percorrenza dei vertici della figura, essendo un’isometria inversa

rette e di conservare il parallelismo. Nella Sezione 3.7 vedremo alcuni esempi di trasformazioni non affini. Un sottoinsieme delle trasformazioni affini è costituito dalle trasformazioni isometriche o isometrie, che hanno la caratteristica di conservare le distanze fra i punti e la misura degli angoli, rispettivamente. Appartengono a questa categoria la traslazione, le rotazioni e la riflessione, mentre non è un’isometria il taglio. Ovviamente, poiché sono conservati distanze e angoli, le isometrie mantengono invariati anche aree e volumi, quindi avranno determinante pari a 1 in modulo. In Figura 3.16 confrontiamo una rotazione, con determinante pari a 1, ed una riflessione con determinante pari a −1. Osserviamo che in entrambi i casi la forma del poligono è invariata. Tuttavia, mentre la rotazione conserva il senso di percorrenza antiorario dei vertici, la riflessione inverte l’orientazione del poligono. In questo senso, diremo che le rotazioni appartengono all’insieme delle isometrie dirette, mentre le riflessioni sono isometrie inverse.

3.6 Real life applications: i sette fregi Un fregio è un motivo geometrico nel piano che si ripete con regolarità lungo una direzione. Diversi fregi possono essere ottenuti componendo in modo opportuno alcune trasformazioni affini (rotazioni, riflessioni e traslazioni). Si può dimostrare che i possibili gruppi di simmetria, ovvero l’insieme delle trasformazioni del piano che trasformano la figura in se stessa, sono solo sette. In Figura 3.17 sono mostrati i sette fregi che si possono ottenere a partire da una figura piana (evidenziata in blu nell’immagine) componendo una traslazione ripetuta in direzione orizzontale con diverse trasformazioni nel piano.

82

3 Matrici e trasformazioni geometriche

(a)

(b)

(c)

(d)

(e)

(f)

(g)

Figura 3.17 I sette fregi ottenibili con trasformazioni affini a partire da una figura iniziale (evidenziata in blu)

In particolare, il primo fregio (a) è ottenuto applicando solo la traslazione in direzione orizzontale. Il secondo fregio (b) è il risultato della traslazione e di una riflessione rispetto ad un asse orizzontale. Il terzo fregio (c) è ottenuto componendo la traslazione con una riflessione rispetto ad un asse verticale. Il quarto fregio (d) è frutto della traslazione e di una rotazione di 180 gradi. Il quinto fregio (e) è ottenuto componendo la traslazione con una rotazione di 180 gradi e una riflessione rispetto ad un asse orizzontale. Il sesto fregio (f) è il risultato della traslazione composta con due riflessioni rispetto ad un asse verticale e ad uno orizzontale. Infine, il settimo fregio (g) è ottenuto da una glissoriflessione, ovvero una riflessione rispetto ad un asse orizzontale composta con la traslazione. Per una descrizione dettagliata dei diversi gruppi di simmetria e una discussione del ruolo dei fregi (e più in generale dei motivi geometrici ripetuti) nell’Architettura e nel Design si può fare riferimento a [15].

3.7 Trasformazioni non affini

83

3.7 Trasformazioni non affini Le trasformazioni affini permettono di descrivere un ampio spettro di trasformazioni geometriche. Tuttavia esistono anche trasformazioni non affini che ricoprono un ruolo importante nell’ambito della grafica computazionale. Una presentazione esaustiva delle trasformazioni non affini e, più in generale, non lineari, va al di là degli obiettivi di questo testo. Ci limitiamo qui ad introdurre le più rilevanti ovvero le proiezioni ortogonali e prospettiche.

3.7.1 Proiezione ortogonale Nel piano, la proiezione ortogonale su una retta r è la trasformazione che associa ad un punto P il punto P  che giace sulla retta e ha distanza minima da P, in modo tale che segmento P P  risulti ortogonale alla retta (si veda Figura 3.18, sinistra). Analogamente, nello spazio, la proiezione ortogonale su un piano τ di normale n è la trasformazione che associa ad un punto P il punto P  sul piano τ , che si trova a minima distanza da P, in modo tale che il segmento P P  risulti ortogonale al piano (si veda Figura 3.18, destra). La matrice di proiezione ortogonale si ottiene mediante passaggi del tutto analoghi a quelli utilizzati per costruire la matrice di riflessione (3.4) ed è definita da PO = I − nˆ nˆ T , dove I è la matrice identità e nˆ è il versore normale retta (nel piano) o al piano (nello spazio) su cui stiamo proiettando. La proiezione ortogonale non è una trasformazione affine, in quanto la matrice a cui è associata non è mai invertibile, ovvero ha sempre determinante nullo. Infatti, z

y

P P

P x x

P

Figura 3.18 Proiezione ortogonale nel piano (sinistra) e nello spazio (destra)

y

84

3 Matrici e trasformazioni geometriche

considerando per semplicità il caso piano, si ha    2 nx nx n y 10 T − = det(PO ) = det(I − nˆ nˆ ) = det n y n x n 2y 01  1 − n 2x −n x n y = det = (1 − n 2x )(1 − n 2y ) − n 2x n 2y = 0, −n y n x 1 − n 2y dove si è usato il fatto che il versore normale nˆ = [n x , n y ]T ha modulo unitario. Abbiamo già notato in precedenza come il determinante rappresenti il rapporto tra l’area (nel piano) e il volume (nello spazio) della figura trasformata rispetto a quella di partenza. Nel caso della proiezione, come evidenziato in Figura 3.19, è chiaro che tale rapporto è necessariamente zero. Come detto, la proiezione non è una trasformazione invertibile, non è quindi possibile definire una trasformazione inversa che riporti l’oggetto trasformato nella configurazione originale. Dal punto di vista geometrico, ciò è associato al fatto che esistono diverse figure che sottoposte alla stessa proiezione forniscono lo stesso risultato (si veda Figura 3.20). y

z

x

y

x

Figura 3.19 Proiezione di una figura piana su una retta (sinistra) e di un solido su un piano (destra) Figura 3.20 Diverse figure che hanno la stessa proiezione ortogonale

y

x

3.7 Trasformazioni non affini

85

Esempio 3.20 Dato il punto P di coordinate (3, 1)T e la retta r passante per l’origine perpendicolare al vettore n = [−2 1]T , si vuole determinare la proiezione P  di P sulla retta r . Il versore corrispondente al vettore n si ottiene riscalando n con il suo modulo   2√5  − 5 n 1 −2 √ = nˆ = . =√ 1 5 |n| 5 5

La matrice di proiezione è quindi data da 

1 PO = I − nˆ nˆ = 0  1 = 0 T

√   2 √5   √ 2 5 5 − 5 0 − − 5 5 √ − 5 1 5  4 1 2 − 25 0 5 − = 25 45 , 1 − 25 51 5 5

da cui è facile calcolare le coordinate di P  date da   1 2   qx 1 3 , = = 25 45 q y 2 1 5 5

si veda Figura 3.21. y

P P x Figura 3.21 Proiezione nel piano sulla retta passante per l’origine con normale n = [−2, 1]T

3.7.2 Proiezione prospettica L’ultima trasformazione che introduciamo è la cosiddetta proiezione prospettica. Tale trasformazione consente di determinare la proiezione di un punto P di coordinate nello spazio su un piano di proiezione π rispetto ad un centro di proiezione C che identifica la posizione nello spazio di un osservatore.

86

3 Matrici e trasformazioni geometriche

Per semplicità consideriamo il caso particolare, mostrato in Figura 3.22, in cui il piano di proiezione coincide con il piano yz, ovvero il luogo dei punti tali che x = 0. Dato il punto P di coordinate [ px , p y , pz ]T , per calcolarne la proiezione prospettica immaginiamo di congiungere con una retta il punto P e l’osservatore C: il punto proiettato P  si ottiene intersecando questa retta con il piano x = 0. È facile dimostrare che, essendo i tre punti P, P  e C allineati, valgono le seguenti relazioni tra le loro coordinate p y − c y px pz px

py − cx px − cz pz = − cx px =

− cy , − cx − cz , − cx

da cui si possono valutare le coordinate del punto proiettato P  , imponendo che il punto P  giaccia sul piano yz, come segue: ⎤⎡ ⎤ ⎤ ⎡ 0 0 px p y −c y ⎥ ⎢ c y px −cx p y ⎥ ⎣ p y ⎦ = ⎢ ⎣c y − cx px −cx ⎦ ⎣ px −cx ⎦ . cz px −cx pz z pz cz − cx ppz −c −c p −c ⎡

x

x

Figura 3.22 Proiezione prospettica di un punto sul piano x y

x

x

3.7 Trasformazioni non affini

87

Lavorando in coordinate omogenee è possibile esprimere tramite una matrice la trasformazione di proiezione prospettica. Indichiamo con ⎡

⎤ px ⎢ py ⎥ ⎥  p=⎢ ⎣ pz ⎦ , 1 il vettore in coordinate omogenee che corrisponde al punto P, e con ⎡

⎤ 0 ⎢ ⎥  = ⎢c y px − cx p y ⎥ , p ⎣ cz p x − c x pz ⎦ px − cx il vettore proiettato P  , dove, in quest’ultimo caso, abbiamo sfruttato le proprietà delle coordinate omogenee riscalando le coordinate con il peso w = px − cx . Possiamo quindi definire la trasformazione attraverso la corrispondente matrice di proiezione prospettica data da ⎡

⎤ 0 0 0 −cx 0 0 ⎥ ⎥ 0 −cx 0 ⎦ 0 0 −cx

0 ⎢c y PP = ⎢ ⎣cx 1

e vale la seguente relazione tra le coordinate omogenee dei punti P e P  ⎡

⎤ ⎡ 0 0 ⎢c y px − cx p y ⎥ ⎢c y ⎢ ⎥ ⎢ ⎣ cz p x − c x pz ⎦ = ⎣ cz 1 px − cx

⎤⎡ ⎤ px 0 0 0 ⎢ py ⎥ −cx 0 0 ⎥ ⎥⎢ ⎥. 0 −cx 0 ⎦ ⎣ pz ⎦ 0 0 −cx 1

La matrice di proiezione prospettica si può analogamente riscrivere come ⎡

0 000

⎢ cy ⎢− cx 1 0 PP = ⎢ ⎢− cz 0 1 ⎣ cx − c1x



⎥ 0⎥ ⎥. 0⎥ ⎦ 001

88

3 Matrici e trasformazioni geometriche

Figura 3.23 Proiezione prospettica sul piano yz per diverse posizioni del piano di proiezione: in blu l’oggetto e in rosso la sua proiezione sul piano yz

3.7 Trasformazioni non affini

89

Osserviamo che la matrice PP è singolare in quanto ha una riga completamente nulla, e, per questo motivo, non esiste la sua inversa. Come nel caso della proiezione ortogonale (Figura 3.19), non sorprende che anche la proiezione prospettica sia rappresentata da una matrice a determinante nullo. La proiezione prospettica è fortemente dipendente dalla posizione reciproca dell’oggetto che viene proiettato, l’osservatore e il piano di proiezione. In Figura 3.23, sono visualizzate due situazioni: la prima in cui il piano di proiezione è collocato in mezzo tra l’osservatore e l’oggetto, mentre nella seconda l’oggetto è tra l’osservatore e il piano di proiezione. Osserviamo che il peso del punto proiettato è pari alla differenza x P − x E , ed è quindi nullo quando l’osservatore e il punto si trovano alla stessa ascissa x (ovvero alla stessa distanza con segno dal piano di proiezione): in questo caso, infatti, il punto è correttamente proiettato all’infinito. Per una discussione più approfondita dell’utilizzo della proiezione prospettica (e di altre trasformazioni) nell’ambito della grafica computazionale, si può fare riferimento a [22].

4

Curve parametriche

Una linea è un punto che è andato a fare una passeggiata. (Paul Klee)

In questo capitolo vengono presentati gli strumenti matematici utili per descrivere le curve nel piano e nello spazio. In particolare, si introduce la forma parametrica delle curve, che consente di descrivere in modo efficace curve di forma arbitraria. Vengono presentati numerosi esempi di curve, a partire dalle più semplici (le rette) fino a quelle più complesse ottenute, ad esempio, applicando trasformazioni composte. Per rappresentare un oggetto in un sistema di riferimento assegnato nel piano o nello spazio è necessario introdurre opportuni strumenti matematici che consentono di definire curve e superfici di forma arbitraria.

4.1 Rappresentazione di una curva nel piano Iniziamo questo capitolo richiamando rapidamente le diverse possibili modalità con cui una curva nel piano o nello spazio può essere rappresentata matematicamente. In particolare, vediamo come le curve possano essere rappresentate come insiemi di livello di campi scalari, attraverso la cosiddetta forma cartesiana, o come immagini di funzioni vettoriali quando espresse in forma parametrica.

© Springer-Verlag Italia S.r.l., part of Springer Nature 2019 E. Miglio et al., Matematica e Design, UNITEXT - La Matematica per il 3+2 115, https://doi.org/10.1007/978-88-470-3987-2_4

91

92

4 Curve parametriche

Figura 4.1 Curva nel piano definita implicitamente come livello zero di una superficie in 3 dimensioni

4.1.1 Forma cartesiana Una prima forma di rappresentazione di una curva nel piano è basata sulla cosiddetta forma cartesiana implicita, definita dal luogo dei punti di coordinate (x, y) che soddisfano la relazione f (x, y) = 0,

(4.1)

dove f è una funzione nelle due variabili indipendenti x e y. La curva descritta dall’equazione (4.1) rappresenta il livello zero della funzione f il cui grafico è il luogo dei punti di coordinate (x, y, f (x, y)) nello spazio tridimensionale (si veda Figura 4.1). Quando la funzione f (x, y) può essere scritta nella forma f (x, y) = y − g1 (x) oppure nella forma f (x, y) = x − g2 (y) è possibile introdurre una rappresentazione della curva equivalente a quella implicita e denominata forma cartesiana esplicita, data rispettivamente da y = g1 (x), dove l’ordinata y dei punti appartenenti alla curva è espressa come funzione esplicita della corrispondente ascissa x, oppure da x = g2 (y),

4.1 Rappresentazione di una curva nel piano y

93 y

x

x

Figura 4.2 Alcune figure sono rappresentabili in forma cartesiana esplicita (sinistra), altre no (destra)

dove, viceversa, l’ascissa x è espressa come funzione esplicita della corrispondente ordinata y. Molte curve nel piano possono essere rappresentate in forma cartesiana esplicita, come grafici di funzioni di una variabile di tipo polinomiale, esponenziale, logaritmico, trigonometrico e tutte le possibili combinazioni tra esse, si veda Capitolo 1. Tuttavia, le funzioni espresse in forma cartesiana esplicita presentano dei limiti nel rappresentare alcune tipologie di forme anche piuttosto semplici, si pensi ad esempio ad una circonferenza nel piano (si veda Sezione 4.3.1). In generale, la forma cartesiana esplicita non consente di rappresentare curve per le quali ad un valore delle ascisse corrispondono più valori sulle ordinate come mostrato in Figura 4.2, se non suddividendo la curva in porzioni ciascuna esprimibile come relazione esplicita di y rispetto a x. Inoltre, le figure descritte da curve in forma cartesiana esplicita sono strettamente connesse al sistema di riferimento considerato. È infatti evidente che quand’anche una funzione in forma cartesiana esplicita fosse in grado di rappresentare una forma desiderata, la stessa forma, soggetta per esempio ad una rotazione rigida, potrebbe risultare non più rappresentabile come grafico di una funzione nello stesso sistema di riferimento (si veda Figura 4.3). Nonostante, in generale, le funzioni in forma cartesiana implicita consentano di superare alcuni limiti delle funzioni in forma cartesiana esplicita, ad esempio permettendo di rappresentare con un’unica curva funzioni a più valori (vedremo ad esempio la circonferenza in Sezione 4.3.1), tuttavia non risultano uno strumento efficace in generale, in quanto non sempre è facile definire la funzione f (x, y) tale che il suo livello zero segua una forma arbitraria. Inoltre, la rappresentazione cartesiana è di difficile estensione al caso di curve nello spazio. Nella prossima sezione si introdurrà un diverso tipo di rappresentazione delle curve utile a superare molti dei limiti evidenziati per la forma cartesiana.

94

4 Curve parametriche y

y

x

x

Figura 4.3 Esempio di figura rappresentabile in forma cartesiana esplicita (sinistra) che non lo è più a valle di una rotazione (destra)

4.1.2 Forma parametrica Il modo più efficace per definire le curve nel piano (e, vedremo fra poco, anche nello spazio) è basato sulla cosiddetta forma parametrica nella quale ciascuna delle coordinate dei punti (x, y) appartenenti alla curva è espressa come funzione esplicita di un parametro indipendente t: 

x = f x (t), y = f y (t),

(4.2)

dove il parametro può variare in un intervallo limitato (a ≤ t ≤ b) o illimitato (Figura 4.4, sinistra). Come vedremo in seguito, le curve parametriche più utilizzate nella grafica computazionale sono definite attraverso funzioni polinomiali, ma, in generale, una curva in forma parametrica della forma (4.2) può essere definita a partire da funzioni arbitrarie del parametro t [24]. È immediato vedere come questo tipo di rappresentazione possa essere facilmente estesa al caso di curve nello spazio tridimensionale: ⎧ ⎪ ⎨x = f x (t), y = f y (t), ⎪ ⎩ z = f z (t),

(4.3)

dove (x, y, z) rappresenta il generico punto appartenente alla curva e f x , f y , f z sono tre funzioni del parametro indipendente t (Figura 4.4, destra).

4.2 Rette nel piano e nello spazio

95 y

y

(fx (t), fy (t), fz (t))

(fx (t), fy (t))

x

x

z

Figura 4.4 Esempi di curve parametriche nel piano (sinistra) e nello spazio (destra) y

α q x

Figura 4.5 Retta nel piano: significato geometrico dell’equazione in forma cartesiana

4.2 Rette nel piano e nello spazio Iniziamo considerando la curva più semplice, ovvero la retta, che è l’entità fondamentale di dimensione 1 della geometria Euclidea. Una retta è priva di spessore e si estende all’infinito in entrambi i versi lungo la sua direzione. Una retta nel piano può essere definita in forma cartesiana esplicita dalla funzione lineare: y = mx + q, (4.4) dove m, detto coefficiente angolare, descrive la pendenza della retta ed è pari a m = tan α =

sin α , cos α

con α l’angolo formato dalla retta con l’asse delle ascisse. Il coefficiente q, detto intercetta, rappresenta l’ordinata dell’intersezione della retta con l’asse y (si veda Figura 4.5). Valori positivi o negativi di m denotano rette aventi rispettivamente pendenza positiva o negativa, mentre per le rette orizzontali si ha m = 0 (Figura 4.6). La forma

96

4 Curve parametriche y

y

y

m>0

m r mentre in Figura 5.8 sono mostrati i casi in cui R = r ed R < r : si noti che nel secondo caso si ha una superficie che si autointerseca (si veda la Figura 5.9). Come nei casi delle superfici precedenti è possibile definire una superficie torica il cui centro non sia l’origine ma un generico punto C = (cx , c y , cz ) dello spazio applicando una traslazione e ottenendo la seguente espressione: ⎤ r cos(θ) + cx S(θ, φ) = ⎣ (r sin(θ) + R) cos(φ) + c y ⎦ . (r sin(θ) + R) sin(φ) + cz ⎡

(5.6)

Le lenti per correggere l’astigmatismo sono solitamente lenti toriche cioè sono costituite da una porzione di una superficie torica come mostrato in Figura 5.10.

Figura 5.7 Superficie torica con R > r

Figura 5.8 Superfici toriche con R = r (a sinistra) ed R < r (a destra)

5.3 Superfici di rivoluzione

133

Figura 5.9 Sezioni delle superfici toriche con R = r (a sinistra) ed R < r (a destra) Figura 5.10 Lente torica

5.3.3 Ellissoide Ragioniamo in modo analogo a quanto fatto per la generazione di una sfera partendo però da una ellisse appartenente al piano x y ed avente semiasse x pari ad a e semiasse y pari a b (supponiamo a > b). Ruotando l’ellisse attorno all’asse x si ottiene l’espressione parametrica di un ellissoide: ⎡ ⎤⎡ ⎤ ⎡ ⎤ 1 0 0 a cos(θ) a cos(θ) S(θ, φ) = ⎣ 0 cos(φ) − sin(φ) ⎦ ⎣ b sin(θ) ⎦ = ⎣ b sin(θ) cos(φ) ⎦ , (5.7) 0 sin(φ) cos(φ) 0 b sin(θ) sin(φ) con θ ∈ [0, 2π) e φ ∈ [0, π] (si veda Figura 5.11). In questo caso non è indifferente la scelta dell’asse attorno a cui ruotare l’ellisse iniziale, infatti se avessimo applicato una rotazione attorno all’asse y avremmo ottenuto la superficie mostrata in Figura 5.12.

134

5 Superfici parametriche

Figura 5.11 Ellissoide ottenuto applicando una rotazione attorno all’asse x

Si può ottenere l’espressione di un ellissoide con centro nel punto C = (cx , c y , cz ) applicando la traslazione che porta il punto O nel punto C ad un ellissoide con centro nell’origine, ottenendo: ⎡

⎤ a cos(θ) + cx S(θ, φ) = ⎣ b sin(θ) cos(φ) + c y ⎦ . b sin(θ) sin(φ) + cz

(5.8)

Esempio 5.6 Si scriva l’equazione parametrica dell’ellissoide che si ottiene ruotando attorno all’asse x l’ellisse appartenente al piano x y, di centro O ed avente semiasse x pari a 0.5 e semiasse y pari a 0.3 (si veda la Figura 5.11). In accordo con l’equazione (5.7) si ha ⎡

⎤ 0.5 cos(θ) S(θ, φ) = ⎣ 0.3 sin(θ) cos(φ) ⎦ , 0.3 sin(θ) sin(φ)

5.3 Superfici di rivoluzione

135

Figura 5.12 Ellissoide ottenuto applicando una rotazione attorno all’asse y

5.3.4 Cilindro retto a base circolare Si consideri ora la seguente retta parallela all’asse z e passante per il punto di coordinate (R, 0, 0) ⎡ ⎤ ⎡ ⎤ 0 R r(t) = ⎣ 0 ⎦ t + ⎣ 0 ⎦ , t ∈ R; 1 0

136

5 Superfici parametriche

Figura 5.13 Cilindro retto a base circolare ottenuto ruotando attorno all’asse z la retta blu

ruotando tale retta attorno all’asse z si ottiene ⎤ ⎤⎡ ⎤ ⎡ ⎡ R cos(φ) R cos(φ) − sin(φ) 0 S(t, φ) = ⎣ sin(φ) cos(φ) 0 ⎦ ⎣ 0 ⎦ = ⎣ R sin(φ) ⎦ , t t 0 0 1 dove t ∈ R e φ ∈ [0, 2π). La superficie risultante è il cilindro retto a base circolare di raggio R mostrato in Figura 5.13. Esempio 5.7 Si scriva l’equazione parametrica della superficie cilindrica che si ottiene ruotando la retta passante per i punti P0 = (0.5, 0, 1) e P1 = (0.5, 0, −1). Troviamo dapprima l’equazione della retta ⎤ ⎡ ⎤ ⎡ 0.5 0 r(t) = t ⎣ 0 ⎦ + ⎣ 0 ⎦ . 1 2

5.3 Superfici di rivoluzione

137

Applichiamo ora alla retta appena ottenuta una rotazione attorno all’asse z, ottenendo la superficie cilindrica ⎡

cos(φ) − sin(φ) S(t, φ) = ⎣ sin(φ) cos(φ) 0 0

⎤⎡ ⎤ ⎡ ⎤ 0 0.5 0.5 cos(φ) 0 ⎦ ⎣ 0 ⎦ = ⎣ 0.5 sin(φ) ⎦ . 1 2t + 1 2t + 1

Il cilindro retto a base circolare si può generare anche traslando una circonferenza lungo la direzione perpendicolare al piano a cui appartiene la circonferenza stessa (si veda la Figura 5.14). Consideriamo quindi la seguente circonferenza di raggio R centrata nell’origine ed appartenente al piano x y ⎡

⎤ R cos(φ) C(φ) = ⎣ R sin(φ) ⎦ . 0

Figura 5.14 Cilindro retto a base circolare ottenuto traslando la circonferenza rossa lungo l’asse z

138

5 Superfici parametriche

La direzione perpendicolare al piano x y è definita dal vettore k = [0 0 1]T , quindi alla circonferenza C(φ) applicheremo una traslazione definita dal seguente vettore ⎡ ⎤ 0 t = ⎣ 0 ⎦ , t ∈ R. t Utilizzando il formalismo delle coordinate omogenee, l’applicazione della traslazione alla circonferenza equivale a ⎡

1 ⎢0 S(t, φ) = ⎢ ⎣0 0

0 1 0 0

0 0 1 0

⎤ ⎤ ⎡ ⎤⎡ R cos(φ) R cos(φ) 0 ⎥ ⎥ ⎢ ⎢ 0⎥ ⎥ ⎢ R sin(φ) ⎥ = ⎢ R sin(φ) ⎥ , ⎦ ⎦ ⎣ t 0 t ⎦⎣ 1 1 1

con t ∈ R e φ ∈ [0, 2π), che corrisponde alla stessa forma parametrica ottenuta ruotando una retta attorno all’asse z.

5.3.5 Superficie conica Si consideri ora la seguente retta passante per l’origine ed appartenente al piano yz ⎡ ⎤ 0 r(t) = ⎣ 1 ⎦ t, t ∈ R. 1 Ruotando tale retta attorno all’asse y si ottiene ⎡

⎤⎡ ⎤ ⎡ ⎤ cos(φ) 0 sin(φ) 0 t sin(φ) ⎦, 0 1 0 ⎦⎣ t ⎦ = ⎣ t S(t, φ) = ⎣ − sin(φ) 0 cos(φ) t t cos(φ)

(5.9)

dove t ∈ R e φ ∈ [0, 2π). La superficie risultante è la superficie conica (o cono) di semi-apertura π/4 mostrata in Figura 5.15. Esempio 5.8 Scrivere l’equazione della superficie conica che si ottiene ruotando attorno all’asse y la retta passante per i punti P0 = (0, −2, −2) e P1 = (0, 2, 2). Troviamo dapprima l’equazione della retta ⎡ ⎤ ⎡ ⎤ 0 0 r(t) = t ⎣ 4 ⎦ + ⎣ 2 ⎦ . 2 4

5.3 Superfici di rivoluzione

139

Figura 5.15 Superficie conica

Applichiamo ora alla retta appena ottenuta una rotazione attorno all’asse y ⎡

⎤⎡ ⎤ ⎡ ⎤ cos(φ) 0 sin(φ) 0 (4t + 2) sin(φ) ⎦. 0 1 0 ⎦ ⎣ 4t + 2 ⎦ = ⎣ 4t + 2 S(t, φ) = ⎣ − sin(φ) 0 cos(φ) 4t + 2 (4t + 2) cos(φ)

5.4 Superfici rigate Consideriamo due curve c(t) e d(t); la superficie S(t, s) = c(t) + sd(t)

140

5 Superfici parametriche

si chiama superficie rigata; la curva c(t), t ∈ R, si chiama (curva) direttrice della superficie. Inoltre per ogni t = t0 fissato, S(t0 , s) = c(t0 ) + sd(t0 ) è una retta passante per c(t0 ) ed avente vettore direzione d(t0 ); tali rette sono dette generatrici della superficie. Esempi particolari si superfici rigate sono cilindro generato da una curva piana, la cui forma parametrica è data da ⎡ ⎤ ⎡ ⎤ f (t) 0 S(t, s) = ⎣ g(t) ⎦ + s ⎣ 0 ⎦ , 0 1 e la generalizzazione di una superficie conica, definita da ⎤ ⎡ ⎤ ⎡ cx f (t) S(t, s) = ⎣ c y ⎦ + s ⎣ g(t) ⎦ . h(t) cz Esempio 5.9 Nel caso in cui si abbia ⎡

⎤ cos(t) c(t) = ⎣ sin(t) ⎦ 0



e

⎤ − sin(t) d(t) = ⎣ cos(t) ⎦ , 1

si ottiene ⎡

⎤ ⎡ ⎤ cos(t) − sin(t) S(t, s) = ⎣ sin(t) ⎦ + s ⎣ cos(t) ⎦ , 0 1

(5.10)

che rappresenta un iperboloide ad una falda (si veda la Figura 5.16). Esempio 5.10 Nel caso in cui si abbia ⎡ ⎤ t c(t) = ⎣ 0 ⎦ 0 si ottiene

e

⎡ ⎤ 0 d(t) = ⎣ 1 ⎦ , t

⎡ ⎤ ⎡ ⎤ t 0 S(t, s) = ⎣ 0 ⎦ + s ⎣ 1 ⎦ , 0 t

che rappresenta una sella (si veda la Figura 5.17).

(5.11)

5.4 Superfici rigate

141

Figura 5.16 Iperboloide ad una falda

Esempio 5.11 Nel caso in cui si abbia c(t) = [cos(t), sin(t), 0]T e d(t) = [cos(t/2) cos(t), cos(t/2) sin(t), sin(t/2)]T , si ottiene ⎤ ⎤ ⎡ cos(t/2) cos(t) cos(t) S(t, s) = ⎣ sin(t) ⎦ + s ⎣ cos(t/2) sin(t) ⎦ , sin(t/2) 0 ⎡

che rappresenta un nastro di Möbius [19] (si veda la Figura 5.18).

(5.12)

142

Figura 5.17 Sella

Figura 5.18 Nastro di Möbius

5 Superfici parametriche

5.5 Real life applications: mappatura di pattern

143

5.5 Real life applications: mappatura di pattern Supponiamo di voler applicare un pattern, descritto da un’immagine bidimensionale, su una superficie di cui conosciamo l’espressione parametrica. In alcuni casi, si pensi ad esempio ad una superficie cilindrica, il procedimento è piuttosto intuitivo: è sufficiente applicare l’immagine “arrotolandola” come un foglio intorno alla superficie. Nella maggior parte dei casi tuttavia creare una corrispondenza fra un pattern bidimensionale e una superficie 3D porta a risultati tutt’altro che prevedibili. Possiamo definire un procedimento generale per la mappatura su superfici? Consideriamo una superficie descritta dalla sua equazione parametrica, nel caso in esame una porzione di superficie cilindrica: ⎡

⎤ R cos(φ) S(t, φ) = ⎣ R sin(φ) ⎦ , t dove t I ≤ t ≤ t F e φ I ≤ φ ≤ φ F .

Figura 5.19 Superficie cilindrica (sinistra) e pattern da applicare alla superficie (sinistra)

Inoltre, come mostrato in Figura 5.19, consideriamo un’immagine di larghezza e altezza pari a L e H rispettivamente, posizionata in un piano di coordinate ξ, η. Ad ogni coppia di parametri t ∗ , φ∗ corrisponde un punto della superficie, a cui vogliamo associare un punto nel piano ξη. Per coprire l’intera superficie dobbiamo scrivere una relazione tale per cui il punto (0, 0) del piano ξη corrisponda al punto (t I , φ I ) della superficie, e (L , H ) corrisponda al punto (t F , φ F ):

144

5 Superfici parametriche

t ∗ − tI , tF − tI φ∗ − φ I . η∗ = H φF − φI ξ∗ = L

(5.13) (5.14)

Si noti che avremmo anche potuto associare diversamente i parametri con le coordinate ξ e η, ottenendo le seguenti relazioni: φ∗ − φ I , φF − φI t ∗ − tI . ξ∗ = H tF − tI

η∗ = L

(5.15) (5.16)

In Figura 5.20 possiamo osservare i risultati che si ottengono con le due mappe proposte.

Figura 5.20 Risultato dell’applicazione del pattern sul cilindro in due direzioni diverso

In Figura 5.21 è mostrata la mappatura di un pattern su una sfera: si noti che in corrispondenza dei poli tutti i punti, anche se con diversa longitudine, convergono in un solo punto determinando la distorsione del pattern e la formazione della figura “a stella”.

5.5 Real life applications: mappatura di pattern

145

Figura 5.21 Applicazione di un pattern (sinistra) su una superficie sferica (destra)

Nella prossima scheda riprendiamo una delle superfici introdotte a titolo di esempio all’inizio capitolo, cioè l’edificio londinese di St. Mary Axe, riportato in Figura 5.1. Vediamo come sia possibile generare una superficie simile a tale edificio sfruttando le tecniche viste precedentemente.

5.6 Real life applications: St. Mary Axe Il primo piano dell’edificio è posto ad una elevazione di 8.53 m ed il raggio in corrispondenza di tale elevazione è di 22.86 m; il raggio massimo è pari a 28.65 m in corrispondenza del diciassettesimo piano (ogni piano ha un’altezza di circa 4.23 m); infine al quarantesimo piano il raggio è di circa 3.05 m. Per il momento approssimiamo metà della sezione verticale dell’edificio con il seguente arco di parabola che interpola i dati descritti sopra: ⎡

⎤ −0.0021t 2 + 0.2621t + 20.7751 ⎦ , t ∈ [0, 175]. c(t) = ⎣ 0 t Ruotando tale curva attorno all’asse z si ottiene la superficie di Figura 5.22.

146

5 Superfici parametriche

Figura 5.22 Superficie di rotazione simile all’edificio St. Mary Axe (a sinistra); superficie ricostruita e texturing (a destra)

5.7 Piano tangente Si consideri una curva di coordinate t = t (u), s = s(u), nello spazio parametrico di una superficie S(t, s). Allora s(u) = S(t (u), s(u)) è una curva parametrica che giace sulla superficie S(t, s) (si veda Figura 5.23). Il vettore tangente a tale curva si ottiene derivando il vettore s(u) rispetto al parametro u; usando la regola di derivazione della funzione composta si ha s (u) = S (t (u), s(u)) = St t + Ss s ,

(5.17)

dove i pedici t ed s denotano le derivate parziali rispetto a t ed s, mentre l’apice, come visto nel Capitolo 1, indica l’operazione di derivata rispetto all’argomento della funzione, in questo caso u. Allora il piano tangente in un punto P0 è l’unione di

5.7 Piano tangente

147

Figura 5.23 Mappatura di una curva 2D definita nello spazio dei parametri (in alto) su una superficie parametrica 3D (in basso). Nella figura in basso la superficie S(t, s) è rappresentata in verde mentre la curva s(u) è rappresentata in blu

Spazio parametrico s

smax

t = t(u), s = s(u)

smin tmin

tmax

t

tutti i vettori tangenti della forma (5.17) al variare di s(u). Poiché il vettore tangente (5.17) è una combinazione lineare di due tangenti lungo le curve isoparametriche St ed Ss , l’equazione parametrica del piano tangente in p0 = S(t0 , s0 ) è data da T(˜s , t˜) = S(t0 , s0 ) + t˜Su (t0 , s0 ) + s˜ Sv (t0 , s0 ). Il calcolo del piano tangente ad una superficie nel punto corrispondente ai valori dei parametri (u 0 , v0 ) richiede quindi il calcolo dei due vettori giacitura v1 = Su (u 0 , v0 ) e v2 = Sv (u 0 , v0 ) e del punto di tangenza p0 . Vediamo in dettaglio come procedere al fine di determinare tali quantità.

148

5 Superfici parametriche

1. Calcolo del punto di tangenza. Banalmente per ottenere il punto di tangenza dovremo sostituire i valori u 0 e v0 all’interno dell’espressione parametrica della superficie, cioè p0 = S(u 0 , v0 ). 2. Calcolo dei vettori giacitura. I vettori giacitura si ottengono calcolando dapprima i vettori derivati della superficie rispetto ai parametri u e v, (cioè le derivate parziali Su (u, v) ed Sv (u, v) dell’espressione parametrica S(u, v)) e successivamente sostituendo in tali vettori derivati i valori dei parametri u 0 e v0 . In pratica avremo v1 = Su (u 0 , v0 ),

v2 = Sv (u 0 , v0 ).

Esempio 5.12 Per esemplificare il procedimento calcoliamo il piano tangente alla superficie conica definita dalla (5.9) nel punto P0 corrispondente ai valori dei parametri t0 = 1 e φ0 = π/2 (si veda Figura 5.24). Cominciamo determinando il punto ⎤ ⎡ ⎤ ⎡ di passaggio 0 cos(π/2) ⎦ = ⎣1⎦. 1 p0 = S(t0 , φ0 ) = ⎣ 1 sin(π/2) Calcoliamo ora i due vettori derivati ⎡ ⎤ ⎡ ⎤ cos(φ) −t sin(φ) ⎦. 0 St (t, φ) = ⎣ 1 ⎦ , Sφ (t, φ) = ⎣ sin(φ) t cos(φ) Infine sostituiamo nelle espressioni appena trovate i valori t0 e φ0 ottenendo ⎡ ⎤ 0 v1 = St (t0 , φ0 ) = ⎣ 1 ⎦ , 1



⎤ −1 v2 = Sφ (t0 , φ0 ) = ⎣ 0 ⎦ . 0

5.7 Piano tangente

149

Figura 5.24 Piano tangente ad una superficie conica. In rosso sono evidenziati i vettori giacitura del piano tangente

5.8 Real life applications: creazione di texture Supponiamo di applicare ad una superficie non solo un’immagine bidimensionale, ma di voler creare una vera e propria texture tridimensionale deformando leggermente la superficie in modo da creare rilievi e profondità con una precisa disposizione. In questa sezione mostreremo come creare una texture a partire da un’immagine supponendo che i punti con colori più chiari (con valore o brightness maggiore nel sistema HSB) corrispondano a punti in rilievo: si veda ad esempio Figura 5.25, in cui l’immagine di un labirinto è

150

5 Superfici parametriche

applicata ad un piano inclinato.

Figura 5.25 Creazione di una texture tridimensionale a partire da una immagine

Tuttavia, cosa si intende per rilievo nel caso di superfici generiche? Consideriamo una superficie parametrica generica S(u, v): dato un generico punto P individuato da (u 0 , v0 ) otteniamo un punto in rilievo P come p = p + α(u 0 , v0 )n(u 0 , v0 ) dove n è il vettore normale alla superficie e α è un coefficiente che dipende dal colore associato al punto. Nel caso di superfici generiche il vettore normale in un punto può essere calcolato come prodotto vettore dei vettori giacitura del piano tangente: n(u 0 , v0 ) = Su (u 0 , v0 ) × Sv (u 0 , v0 ). In Figura 5.26 mostriamo il risultato ottenuto mappando la fotografia di un tessuto su una superficie, e creando la texture tridimensionale col procedimento descritto.

Figura 5.26 Creazione di una texture ottenuta mappando l’immagine di un tessuto su una superficie

6

Curve Freeform

La réussite d’une opération technique a toujours plusieurs raisons, parmi lesquelles on peut compter une part de chance, mais la proportion énoncée par Edison reste valable: 5% d’inspiration, 95% de transpiration. (Pierre Bézier)

Questo capitolo è dedicato alla presentazione delle curve freeform, ossia di curve parametriche la cui forma è determinata da un set di punti detti punti di controllo. Tali curve sono ampiamente utilizzate nella grafica computerizzata grazie alla loro flessibilità e semplicità. Si illustreranno in dettaglio le proprietà delle curve di Bézier, per poi trattare la generalizzazione alle curve B-spline ed infine le curve NURBS. Nel Capitolo 4 abbiamo visto che il modo più efficace per definire le curve nel piano e nello spazio è la forma parametrica in cui ciascuna delle coordinate è espressa come funzione di un parametro indipendente t. Tuttavia è spesso difficile o comunque poco intuitivo tradurre il processo analogico di disegno di una forma in equazioni. Un contributo fondamentale al superamento di questo gap e quindi allo sviluppo delle tecniche matematiche e numeriche per la grafica computerizzata venne nel 1959 grazie al lavoro di Pierre Bézier [1] e Paul de Casteljau [9], ingegneri e matematici francesi, che inventarono e formalizzarono le curve parametriche oggi note come curve di Bézier mentre lavoravano nell’industria automobilistica. Per maggiori dettagli sullo sviluppo storico delle curve di Bézier si può fare riferimento a [4,12]. Le generalizzazioni delle curve di Bézier includono le curve B-spline e le curve NURBS, oggi largamente impiegate nei software di grafica.

© Springer-Verlag Italia S.r.l., part of Springer Nature 2019 E. Miglio et al., Matematica e Design, UNITEXT - La Matematica per il 3+2 115, https://doi.org/10.1007/978-88-470-3987-2_6

151

152

6 Curve Freeform

6.1 Curve di Bézier L’idea alla base delle curve di Bézier, [3], è quella di introdurre un set di punti, detti punti di controllo che determinano la forma della curva. Siano P0 , P1 , …, Pn gli n + 1 punti di controllo: le curve di Bézier hanno origine nel punto P0 e terminano in Pn , mentre i punti di controllo intermedi, in generale, non appartengono alla curva, pur influenzandone la forma. In Figura 6.1 è rappresentata una curva definita da 4 punti di controllo: P0 e P3 sono rispettivamente il punto iniziale e finale della curva, mentre P1 e P2 ne determinano l’andamento. Si noti che, d’ora in avanti, indicheremo con pi il vettore corrispondente al punto Pi . Si indica come poligono di controllo o reticolo di controllo la spezzata formata dai punti di controllo, collegati fra loro in ordine. Dal punto di vista matematico le curve di Bézier sono funzioni polinomiali di grado generico n del parametro t. Ricordiamo che, come visto nel Capitolo 1, per grado di una funzione polinomiale si intende il massimo esponente della variabile, in questo caso il parametro t. Consideriamo inizialmente il caso più semplice, ossia la curva di Bézier di grado 1, o lineare. Si tratta semplicemente di un segmento di retta compreso fra i punti di controllo P0 e P1 (Figura 6.2), la cui equazione in forma parametrica è già stata introdotta nel Capitolo 4: c(t) = (p1 − p0 )t + p0

0 ≤ t ≤ 1.

Riorganizzando l’espressione precedente si può osservare che i vettori corrispondenti ai punti di controllo sono moltiplicati per due funzioni del parametro t, c(t) = p0 (1 − t) + p1 t

0 ≤ t ≤ 1.

Tali funzioni si chiamano funzioni di base e saranno d’ora in poi indicate come Bin (t), dove l’apice n indica il grado della funzione, per cui l’espressione precedente si può riscrivere come segue c(t) = B01 (t)p0 + B11 (t)p1

Figura 6.1 Una curva di Bézier definita da 4 punti di controllo, evidenziati in rosso

0 ≤ t ≤ 1,

P1

y

p1

P3

P0 p0

p3 p2

P2

x

6.1 Curve di Bézier

153

y P1

t =0.5

P0

x

Figura 6.2 Una curva di Bézier lineare, definita da due punti di controllo

con B01 (t) = 1 − t,

B11 (t) = t.

Le funzioni di base sono a volte chiamate pesi ad indicare il fatto che rappresentano il peso, cioé l’influenza, di ciascun punto di controllo sulla curva al variare di t. Le funzioni di base lineari B01 (t) e B11 (t) sono rappresentate in Figura 6.3: si noti che il peso B0 del primo punto di controllo è massimo in t = 0 e si annulla in t = 1 e viceversa B1 è nullo in t = 0 e massimo in t = 1. In t = 21 entrambe le funzioni hanno valore pari a 21 , quindi i due punti di controllo hanno peso uguale e si ottiene il punto medio del segmento, e per tutti gli altri valori di 0 < t < 1 si ottengono punti interni al segmento. Analogamente si possono definire curve di grado superiore. Ad esempio, tre punti di controllo P0 , P1 , P2 definiscono una curva di grado 2, o quadratica, la cui espressione è c(t) = p0 (1 − t)2 + p1 2(1 − t)t + p2 t 2 = B02 (t)p0 + B12 (t)p1 + B22 (t)p2 0 ≤ t ≤ 1.

(6.1)

In questo caso le funzioni di base sono quadratiche. Come si vede nel grafico in Figura 6.4 il peso del punto P0 è massimo, pari ad 1, in t = 0 e diminuisce fino ad annullarsi. Viceversa il peso del punto P2 cresce fino ad essere pari ad 1 in t = 1, infatti P0 e P2 sono i punti estremi della curva. La funzione B12 presenta un massimo per t = 21 , in cui B12 ( 21 ) = 21 . Il peso del punto P1 non è mai pari ad 1 e ciò corrisponde, geometricamente, al fatto che il punto di controllo P1 non è un punto di passaggio della curva.

154

6 Curve Freeform Bi (t)

Figura 6.3 Funzioni di base lineari B01 (t) e B11 (t)

1 B01 (t)

B11 (t)

t

1 Bi (t)

Figura 6.4 Funzioni di base quadratiche B02 (t), B12 (t) e B22 (t)

1 B02 (t)

B22 (t)

B12 (t)

1

Esempio 6.1 Consideriamo una curva di Bézier quadratica definita dai seguenti tre punti di controllo: P0 = (1, 0, 0), P1 = (0, 0, 2), P2 = (0, 1, 0). Calcoliamo la sua espressione parametrica come segue: c(t) = (1 − t)2 p0 + 2(1 − t)tp1 + t 2 p2 = ⎡ ⎤ ⎡ ⎤ ⎡ ⎤ ⎡ ⎤ 1 − 2t + t 2 1 0 0 ⎦. (1 − t)2 ⎣ 0 ⎦ + 2(1 − t)t ⎣ 0 ⎦ + t 2 ⎣ 1 ⎦ = ⎣ t2 2 0 2 0 4t − 4t La curva è rappresentata in Figura 6.5. P1

P0 x Figura 6.5 Curva di Bézier quadratica

z

P2 y

t

6.1 Curve di Bézier

155 Bi (t)

Figura 6.6 Funzioni di base cubiche B03 (t), B13 (t), B23 (t) e B33 (t)

1 B03 (t)

B33 (t)

B13 (t) B23 (t)

t

1

Si procede analogamente per il caso di curve cubiche, definite da 4 punti di controllo P0 , P1 , P2 , P3 , c(t) = p0 (1 − t)3 + p1 3(1 − t)2 t + p2 3(1 − t)t 2 + p3 t 3 = B03 (t)p0 + B13 (t)p1 + B23 (t)p2 + B33 (t)p3 0 ≤ t ≤ 1,

(6.2)

le cui funzioni di base sono rappresentate in Figura 6.6: si noti che le funzioni B13 (t) e B23 (t) presentano un massimo, ma inferiore ad uno. Infatti i corrispondenti punti P1 e P2 non sono punti di passaggio della curva. Esempio 6.2 Consideriamo una curva di Bézier cubica definita dai seguenti quattro punti di controllo: P0 = (0, 1), P1 = (1, 2), P2 = (1, 0), P3 = (3, 1). Calcoliamo la sua espressione parametrica come segue: c(t) = (1 − t)3 p0 + 3(1 − t)2 tp1 + 3(1 − t)t 2 p2 + t 3 p3 =         1 3 0 2 2 1 3 3 + 3(1 − t) t +t = + 3(1 − t)t (1 − t) 1 0 1 2   3t − 3t 2 + 3t 3 . 1 + 3t − 9t 2 + 6t 3 La curva è rappresentata in Figura 6.7. y

P1

P0

P3 P2

Figura 6.7 Curva di Bézier cubica

x

156

6 Curve Freeform

Figura 6.8 Le prime righe del triangolo di Tartaglia

Generalizzando, una curva di Bézier di grado n si esprime come la sommatoria di n punti di controllo moltiplicati per le corrispondenti funzioni di base, dove il parametro t varia nell’intervallo fissato [0, 1], c(t) =

n 

Bin (t)pi

0 ≤ t ≤ 1.

(6.3)

i=0

Come è emerso dagli esempi precedenti l’espressione delle funzioni di base ha una precisa struttura che si può generalizzare per il caso di grado n nel modo seguente: la funzione Bi (t) di grado n è il prodotto di un coefficiente numerico e dei fattori t e (1 − t) elevati ad opportune potenze. In particolare abbiamo Bin (t)



n = (1 − t)n−i t i , i

dove il coefficiente numerico è dato dal coefficiente binomiale ni e può essere calcolato mediante il triangolo di Tartaglia (si veda la Figura 6.8). La riga i-sima del triangolo di Tartaglia contiene il valore dei coefficienti binomiali n0 , n1 , …, ni , ottenuti a partire dalla riga precedente sapendo che



n n−1 n−1 = + , i i −1 i ossia che un elemento del triangolo è ottenuto dalla somma dei due sovrastanti. Le funzioni di base così definite sono i polinomi di Bernstein e corrispondono, tra l’altro, allo sviluppo della seguente potenza n 

Bin (t) = [(1 − t) + t]n ,

i=0

con la conseguenza che la somma di n funzioni di base di grado n è pari ad 1 per ogni valore del parametro t. Dal punto di vista geometrico significa che un punto generico della curva è dato da una media pesata dei punti di controllo, con pesi la cui somma è pari ad 1; si dice che ogni punto della curva è una combinazione baricentrica dei punti di controllo e quindi la curva è interamente contenuta nell’inviluppo convesso dei punti di controllo, si veda la Figura 6.9. L’inviluppo convesso di un insieme di

6.1 Curve di Bézier

157 y

x

Figura 6.9 In grigio è evidenziato l’inviluppo convesso dei punti di controllo. In questo poligono è interamente contenuta la corrispondente curva di Bézier

Figura 6.10 A sinistra una figura (in particolare un poligono) convessa, a destra una non convessa. Si noti che nel secondo caso è possibile trovare due punti tali per cui il segmento che li congiunge non è interamente contenuto nella figura

punti è il più piccolo poligono convesso che contiene tutti i punti dati. Ricordiamo che un figura si dice convessa se, dati due punti qualsiasi interni alla figura il segmento che li congiunge è a sua volta interamente contenuto nella figura, come mostrato in Figura 6.10.

6.1.1 Algoritmo di De Casteljau L’algoritmo di De Casteljau si deve al matematico e fisico francese Paul De Casteljau che lo ideò nel 1959, quando lavorava per la casa automobilistica Cïtroen. Si tratta di un metodo iterativo per la costruzione dei punti delle curve di Bézier di grado qualsiasi n. La sua formalizzazione matematica ci permette di ottenere l’espressione delle funzioni di base Bi introdotte nel paragrafo precedente. Descriviamo l’algoritmo di De Casteljau applicato alla costruzione di una curva di secondo grado, descritta dai punti di controllo P0 , P1 , P2 . Come mostrato in Figura 6.11 un generico punto Q 0 (t) del primo lato del poligono di controllo è indicato da un vettore q0 (t) ottenuto come combinazione lineare di p0 e p1 , primi due vertici del poligono di controllo. Si noti che il punto Q 0 dipende dal parametro t, ad esempio, per t = 21 , q0 indica

158

6 Curve Freeform P1

Figura 6.11 Algoritmo di De Casteljau applicato alla costruzione di una curva di Bézier di grado due

Q0

c(t)

Q1 P2

P0

il punto medio del lato P0 P1 . Analogamente si definisce q1 (t) che rappresenta un punto Q 1 (t) sul secondo lato (P1 P2 ) del poligono: q0 (t) = (1 − t)p0 + tp1 , q1 (t) = (1 − t)p1 + tp2 .

(6.4) (6.5)

Successivamente, si collegano i punti Q 0 (t) e Q 1 (t) e su questo segmento si sceglie un punto interno indicato dal vettore c(t), che è combinazione lineare di q0 (t) e q1 (t) e dipende da t secondo le funzioni di base (1 − t) e t, come illustrato in precedenza: c(t) = (1 − t)q0 (t) + tq1 (t).

(6.6)

Il punto ottenuto rappresenta il punto della curva di Bézier di grado 2 corrispondente ad un generico valore del parametro t. Ripetendo questa costruzione geometrica per 0 ≤ t ≤ 1 si ottengono tutti i punti della curva e, sostituendo le espressioni di q0 (t) e q1 (t) in (6.6) otteniamo l’espressione delle funzioni di base della curva di Bézier quadratica: c(t) = (1 − t)((1 − t)p0 + tp1 ) + t ((1 − t)p1 + tp2 ) =

(6.7)

(1 − t) p0 + 2(1 − t)tp1 + t p2 . 2

2

Per la costruzione di una curva cubica si segue un procedimento analogo, tuttavia è necessario un passaggio in più come illustrato in Figura 6.12. Sui tre lati del poligono di controllo si individuano tre punti Q 0 (t), Q 1 (t), Q 2 (t) (individuati dai vettori q0 (t), q1 (t), q2 (t)) la cui posizione dipende da t: ad esempio, per t = 13 essi si trovano ad un terzo della lunghezza del lato corrispondente: q0 (t) = (1 − t)p0 + tp1 , q1 (t) = (1 − t)p1 + tp2 , q2 (t) = (1 − t)p2 + tp3 .

6.1 Curve di Bézier

159

Q1 P1

P2

R0 c(t)

Q0

R1 Q2

P3 P0

Figura 6.12 Algoritmo di De Casteljau applicato alla costruzione di una curva di Bézier di grado tre

Quindi si collegano i punti Q 0 (t) con Q 1 (t), e Q 1 (t) con Q 2 (t), formando due nuovi lati. Su di essi si collocano due punti R0 (t), R1 (t) la cui posizione sul lato dipende da t: r0 (t) = (1 − t)q0 (t) + tq1 (t) = (1 − t)2 p0 + 2(1 − t)tp1 + t 2 p2 ,

(6.8)

r1 (t) = (1 − t)q1 (t) + tq2 (t) = (1 − t) p1 + 2(1 − t)tp2 + t p3 .

(6.9)

2

2

Infine, si collegano R0 (t) ed R1 (t) e, con la stessa proporzione dipendente dal parametro t, si individua su questo segmento il generico punto della curva di terzo grado, ottenuto combinando i corrispondenti vettori r0 (t) ed r1 (t), c(t) = (1 − t)r0 (t) + tr1 (t).

(6.10)

Anche in questo caso, sostituendo le espressioni (6.8) and (6.9) dei vettori ri , si ottiene l’espressione delle funzioni di base di terzo grado introdotta nel paragrafo precedente: c(t) =(1 − t)((1 − t)2 p0 + 2(1 − t)tp1 + t 2 p2 )+ t ((1 − t)2 p1 + 2(1 − t)tp2 + t 2 p3 ) =(1 − t)3 p0 + 3(1 − t)2 tp1 + 3(1 − t)t 2 p2 + t 3 p3 .

(6.11)

Una rappresentazione dell’algoritmo di De Casteljau nel caso di curve cubiche è presentata nella Figura 6.12. Questo algoritmo è adattabile, ricorsivamente, a curve di grado n con n + 1 punti di controllo.

160

6 Curve Freeform

6.2 Proprietà delle curve di Bézier Le curve di Bézier introdotte nei paragrafi precedenti godono delle seguenti proprietà: 1. Grado: il grado polinomiale della curva n è legato al numero di funzioni di base e punti di controllo, n + 1. 2. Poligono di controllo: il punto iniziale della curva coincide con P0 , il punto finale con Pn . 3. Vettori tangenti: La curva è tangente al primo e ultimo lato del poligono di controllo, come sarà dimostrato nel paragrafo successivo. 4. Inviluppo convesso: la curva è sempre contenuta nell’inviluppo convesso (convex hull) dei punti di controllo. Come conseguenza, la curva è rettilinea se i punti sono allineati, ed è piana se i punti sono complanari. 5. Variation diminishing: come mostrato in Figura 6.14 una retta interseca la curva un numero di volte uguale o inferiore al numero di intersezioni con il poligono di controllo. Si veda [13] per maggiori dettagli. 6. Invarianza rispetto a trasformazioni affini: applicare una trasformazione affine ai punti di controllo equivale ad applicare la stessa trasformazione alla curva come mostrato nell’Esempio 6.3. 7. Non località: a causa della natura delle funzioni di base la modifica di un solo punto di controllo ha influenza sull’intera curva (Figura 6.15). Esempio 6.3 È data la curva di Bèzier definita dai seguenti punti di controllo: P0 = (1, 1), P1 = (2, 2), P2 = (3, 2), P3 = (3, 1). Si vuole calcolare la curva ruotata di θ = π2 . Data la matrice di rotazione  R=

cos θ − sin θ sin θ cos θ



 =

 0 −1 , 1 0

si può procedere in due modi: 1. Applicare la matrice R all’espressione vettoriale della curva f(t). 2. Applicare la matrice ai punti Pi ottenendo un set di punti trasformati Pi con cui calcolare l’espressione della curva ruotata. L’espressione della curva è la seguente f(t) = (1 − t)3 p0 + 3(1 − t)2 tp1 + 3(1 − t)t 2 p2 + t 3 p3 =           1 3 3 1 + 3t − t 3 2 + 3(1 − t)2 t + t3 = + 3(1 − t)t 2 (1 − t)3 1 2 1 2 1 + 3t − 3t 2

e moltiplicando per R si ottiene

6.2 Proprietà delle curve di Bézier

161

  2 ˜f(t) = Rf(t) = −1 − 3t + 3t . 1 + 3t − t 3 Moltiplicando per la matrice di rotazione i vettori pi possiamo ottenere la posizione dei punti di controllo ruotati indicati dai vettori p0 = (−1, 1), p1 = (−2, 2), p2 = (−2, 3), p3 = (−1, 3) con i quali si ottiene l’espressione della curva ruotata (rappresentata in Figura 6.13) come ˆ = (1 − t)3 p0 + 3(1 − t)2 tp1 + 3(1 − t)t 2 p2 + t 3 p3 = f(t)         −1 −2 −1 −2 + 3(1 − t)2 t + t3 = + 3(1 − t)t 2 (1 − t)3 1 3 3 2   −1 − 3t + 3t 2 . 1 + 3t − t 3 ˆ = f(t). ˜ Si noti che f(t) P2

P3

y

P1

P1 P0

P2

P0

P3 x

Figura 6.13 Applicando una rotazione o una qualsiasi trasformazione affine ai punti di controllo ottengo la curva di Bézier ruotata (o in generale trasformata)

P3

P1

P0

P2

Figura 6.14 Proprietà variation diminishing: la retta rappresentata da una linea continua interseca tre volte il poligono e tre la curva, quella tratteggiata tre volte il poligono e solo una la curva, quella a punti interseca due volte sia il poligono sia la curva

162

6 Curve Freeform

P4

P5

P3

P2

P0

P5

P6 P1

Figura 6.15 La modifica di un solo punto di controllo ha un effetto globale ossia influenza l’intera curva

6.3 Raccordo di curve di Bézier Nel paragrafo precedente abbiamo evidenziato come le curve di Bézier siano caratterizzate da non-località, ossia la modifica di ogni punto di controllo ha effetto sull’intera curva. Inoltre, il grado polinomiale è legato al numero di punti di controllo. Per questi motivi è sconveniente utilizzare curve di Bézier con molti punti di controllo quando abbiamo bisogno di descrivere forme complesse. Come mostrato nella scheda 6.4 è più comune raccordare tra loro diverse curve di Bézier, di pari grado o grado diverso. Il raccordo tra curve può presentare diversi gradi di regolarità [25]. Il caso più semplice è quello di un raccordo con continuità zero, o C 0 . Date due curve C1 e C2 , definite dalle corrispondenti equazioni parametriche C1 : c(t) = f1 (t) C2 : c(t) = f2 (t)

α1 ≤ t1 ≤ β1 α2 ≤ t2 ≤ β2

(6.12) (6.13)

otteniamo un raccordo di continuità C 0 se il punto finale di C1 coincide con il punto iniziale di C2 , ossia se f1 (β1 ) = f2 (α2 ). Nel caso delle curve di Bézier ricordiamo che gli estremi per il parametro t sono sempre 0 e 1, quindi la condizione si riduce a f1 (1) = f2 (0). Inoltre ricordiamo che il punto iniziale e finale di una curva di Bézier coincidono con il primo e ultimo punto di controllo rispettivamente. Se vogliamo raccordare una curva caratterizzata dai punti di controllo P0 , . . . Pn con una seconda i cui punti di controllo sono Q 0 , . . . Q m dobbiamo quindi richiedere che Q 0 = Pn . Come mostrato in Figura 6.16 nel caso di due curve di terzo grado, imponendo la semplice continuità C 0 non otteniamo necessariamente un raccordo “liscio”.

6.3 Raccordo di curve di Bézier

163 y

Figura 6.16 Raccordo con continuità C 0 fra due curve di Bézier cubiche: si noti che Q 0 = P3

P1 Q3 P3 = Q0

P0

P2

Q2

Q1

x

Per ottenere un raccordo più regolare possiamo imporre che fra le due curve ci sia continuità C 1 nel punto di raccordo. Questo consiste nell’imporre, date le due curve generiche (6.12), non solo che f1 (β1 ) = f2 (α2 ), ma anche che il vettore derivato (definito nel Capitolo 4) sia continuo nel punto di raccordo, ossia f1 (β1 ) = f2 (α2 ). Poiché consideriamo il vettore derivato, quindi la derivata prima della funzione vettoriale f, si parla di continuità C 1 . Nel caso del raccordo fra due curve di Bézier l’espressione del vettore derivato è particolarmente semplice nei punti iniziali, t = 0, e finali, t = 1. Data l’espressione della curva di Bézier (6.3), ricaviamo che il vettore f  si può esprimere come f  (t) =

n 



Bin (t)pi .

i=0

Le derivate delle funzioni di base, che sono polinomi, sono le seguenti ⎧ n   ⎪ −n(1 − t)n−1 se i = 0, ⎨ 0 n   n n−i−1 i n−i i−1 Bi (t) = se 1 ≤ i ≤ n − 1, t + i(1 − t) t i −(n − i)(1 − t) ⎪ ⎩ n  n−1  nt se i = n. n Siamo in particolare interessati a valutare il vettore derivato in t = 0 e t = 1. Nel  n punto iniziale f  (0) = i=0 Bin (0)pi , e osserviamo che per t = 0 le uniche derivate   non nulle sono B0n (0) = −n, B1n (0) = n, quindi f  (0) = n(p1 − p0 ).

164

6 Curve Freeform

P1 f1 (1)

f2 (0)

Q1

P3

P0

P2

Q0

Q2

Q3

Figura 6.17 Raccordo con continuità C 1 fra due curve di Bézier cubiche





n (1) = −n, B n (1) = n, Viceversa in t = 1 gli unici termini non nulli sono Bn−1 n quindi

f  (1) = n(pn − pn−1 ). Possiamo concludere che il vettore tangente alle curve di Bézier nel punto iniziale e finale è parallelo rispettivamente al primo e ultimo lato del poligono di controllo, con un coefficiente di proporzionalità pari al grado della curva. Ad esempio per raccordare due curve cubiche di punti di controllo Pi , Q i dobbiamo imporre l’uguaglianza dei seguenti vettori derivati: f1 (1) = 3(p3 − p2 ), f2 (0) = 3(q1 − q0 ), come mostrato in Figura 6.17. Esempio 6.4 Consideriamo la curva di Bézier quadratica definita dai punti di controllo P0 = (0, 0), P1 = (0, 1), P2 = (1, 1). Vogliamo costruire una seconda curva di Bézier di pari grado, definita dai punti di controllo Q 0 , Q 1 , Q 2 che si raccordi alla prima in P2 con continuità C 1 . Innanzitutto dobbiamo imporre Q 0 = P2 per garantire il raccordo con continuità minima. Successivamente calcoliamo il vettore tangente alla prima curva nel punto finale, f1 (1) = 2(p2 − p1 ), e imponiamo che sia uguale al vettore tangente alla seconda curva nel suo punto iniziale, ossia f2 (0) = 2(q1 − q0 ). 2(q1 − q0 ) = 2(p2 − p1 )

(6.14)

6.3 Raccordo di curve di Bézier

165

q1 − q0 = p2 − p1

(6.15)

Ricordando che q0 = p2 possiamo ricavare q1 come       2 0 2 . = − q1 = 2p2 − p1 = 2 1 1 2

(6.16)

Abbiamo quindi ottenuto Q 1 = (2, 1). Infine, il punto Q 2 può essere collocato in qualsiasi posizione, ad esempio scegliamo Q 2 = (3, 2), come in Figura 6.18. y

P1

Q2 P2 = Q0

Q1

P0

x

Figura 6.18 Raccordo con continuità

C1

fra due curve di Bézier quadratiche

Osserviamo che si può ottenere un raccordo regolare dal punto di vista geometrico imponendo una condizione più debole rispetto all’uguaglianza dei vettori derivati, ossia la proporzionalità. Se, nel punto di raccordo, imponiamo f1 (β1 ) = λf2 (α1 ) dove λ è un generico numero reale positivo, si parla di raccordo con continuità geometrica G 1 . In questo caso i vettori tangenti sono paralleli nel punto di raccordo ma non necessariamente uguali: se interpretiamo il parametro t come il tempo e le due curve come traiettorie, nel caso di continuità G 1 abbiamo una variazione del modulo della velocità nel punto di raccordo. La differenza fra un raccordo C 1 e G 1 è illustrata nella Figura 6.19. P1

Q1

P1 Q1 P3 = Q0

P0 P2

Q3

Q2

P3 = Q0

P0 P2

Q2

Q3

Figura 6.19 Differenza fra un raccordo con continuità del vettore tangente (C 1 ) a sinistra, e con continuità geometrica (G 1 ) a destra: effetto sulla velocità di percorrenza

166

6 Curve Freeform

Esempio 6.5 Consideriamo la curva di Bézier cubica definita dai punti di controllo P0 = (0, 0), P1 = (0, 1), P2 = (1, 1), P3 = (1, 0), ed una seconda curva di Bézier quadratica definita dai punti Q 0 = (1, 0), Q 1 = (1, −1), Q 2 = (2, 0). Con quale regolarità si raccordano le due curve? Osserviamo innanzitutto che Q 0 = P3 garantisce la continuità C 0 . Quindi calcoliamo i vettori tangenti alle due curve rispettivamente nel punto finale per la prima, iniziale per la seconda:       0 1 1 (6.17) = − f1 (1) = 3(p3 − p2 ) = 3 −3 1 0 f2 (0)

 = 2(q1 − q0 ) = 2

     0 1 1 = − −2 0 −1

(6.18)

Osserviamo che i due vettori non sono uguali ma solo proporzionali, infatti 3 f1 (1) = f2 (0). In questo caso abbiamo continuità geometrica o G 1 (si veda 2 la Figura 6.20). y

P1 P0

P2 P3 = Q0

Q2

x

Q1 Figura 6.20 Raccordo con continuità C 1 fra due curve di Bézier quadratiche

Ovviamente è possibile anche realizzare raccordi in cui i vettori tangenti non sono uguali o proporzionali. Nel prossimo esempio mostriamo come imporre che due curve si raccordino con un angolo prescritto. Esempio 6.6 Consideriamo la curva di Bézier di grado 3 definita dai seguenti punti di controllo: P0 = (0, 1), P1 = (1, 3), P2 = (2, 0), P3 = (3, 1). Vogliamo costruire una seconda curva di Bézier con punti di controllo Q 0 , Q 1 , Q 2 , Q 3 che si raccordi a quella data formando un angolo α = π4 fra i vettori tangenti. Innanzitutto calcoliamo il vettore tangente alla prima curva nel punto finale, f1 (1) = 3(p3 − p2 ), e indichiamo con t il vettore tangente alla seconda curva

6.3 Raccordo di curve di Bézier

167

nel punto iniziale. Affinché l’angolo compreso fra i due vettori tangenti sia α dobbiamo soddisfare la seguente relazione: cos(α) = vale a dire

f1 (1) · t , f1 (1)t

√ 3tx + 3t y 2 . =√  2 18 tx2 + t y2

Esistono infiniti vettori t = [tx , t y ]T che soddisfano questa relazione. Se non abbiamo ulteriori vincoli (ad esempio sul modulo di t) possiamo trovare una delle infinite soluzioni semplicemente imponendo tx = 3. Otteniamo √ √  2 18 9 + t y2 = 18 + 6t y  6 9 + t y2 = 18 + 6t y 9 + t y2 = 9 + 1 + 18t y + t y2 t y = 0. Imponiamo quindi che 3(q1 − q0 ) = t, e inoltre che q0 = p3 , da cui q1 = 1 T 3 t + p3 = [4, 1] , da cui Q 1 = (4, 1). Scegliendo liberamente i punti Q 2 e Q 3 completiamo la costruzione della seconda curva, rappresentata in Figura 6.21. y f1 (1)

P1

P0

P3 = Q0

Q1 f2 (0) x

P2 Q2

Q3

Figura 6.21 Raccordo con angolo imposto fra le tangenti α =

π 4

168

6 Curve Freeform

6.4 Real life applications: le curve di Bézier nei font True Type Spesso, quando si ingrandisce molto un’immagine digitale raster (per esempio in formato jpg, tif, png), si può notare che è formata da una griglia di pixel, cioè di quadratini di colore diverso. Al contrario quando si ingrandiscono documenti pdf la risoluzione del testo risulta sempre perfetta indipendentemente dallo zoom utilizzato, si veda la Figura 6.22. Questo è dovuto al fatto che la forma dei caratteri è codificata non attraverso una griglia discreta di pixel, ma tramite un’espressione matematica, con una serie di curve di Bézier raccordate fra loro. In particolare per i font PostScript si utilizzano curve di Bézier rettilinee (lineari) e cubiche, mentre i font TrueType utilizzano solo curve lineari e quadratiche, più semplici da calcolare.

Figura 6.22 Ingrandimento di alcuni caratteri senza perdita di qualità

Una lettera come quella rappresentata in Figura 6.23 è memorizzata come una serie di “percorsi”, ciascuno dei quali corrisponde ad una curva chiusa: un percorso per lettere come la “T”, due per “O”, “R” e ogni lettera con un occhiello, tre per “B”, “8” e così via. Ogni percorso è formato da una lunga serie di curve di Bézier di vario grado, a cui corrispondono due, tre o quattro punti di controllo. Come mostrato in Figura 6.23 per ottenere un font modificato possiamo localmente modificare la posizione di alcuni punti di controllo deformando le corrispondenti curve di Bézier.

6.4 Real life application: le curve di Bézier nei font True Type

169

Figura 6.23 A sinistra, un carattere del font Arial (TrueType) e i suoi punti di controllo. A destra, il corrispondente carattere corsivo (italic) ottenuto applicando una trasformazione di taglio ai punti di controllo

6.5 Curve B-spline Abbiamo sottolineato nei paragrafi precedenti alcuni limiti nell’applicabilità delle curve di Bézier alla rappresentazione di forme complesse. In particolare le funzioni di base globali rendono impossibile fare modifiche locali, ed il grado polinomiale della curva cresce con il numero di punti di controllo, rendendo più oneroso il calcolo. Per superare queste limitazioni è possibile utilizzare un diverso tipo di curve parametriche polinomiali dette B-spline. Il nome deriva da spline, che indicava originariamente una striscia sottile di legno, plastica o metallo che, fissata in alcuni punti, si può flettere fino a descrivere la curva desiderata. Questo oggetto veniva utilizzato per la progettazione, in particolare di imbarcazioni, prima che fossero disponibili sistemi CAD. Oggi il termine spline indica una curva parametrica polinomiale, e il prefisso B è un’abbreviazione di basis, ad indicare che la curva si esprime come combinazione di funzioni di base. Tali funzioni di base però presentano importanti differenze rispetto a quelle delle curve di Bézier, come vedremo. Siano Pi , i = 0, . . . n gli n + 1 punti di controllo della curva B-spline, e siano p Bi (t) le corrispondenti funzioni di base: l’espressione della curva è c(t) =

n 

p

Bi (t)pi

a ≤ t ≤ b.

i=0

L’apice p indica il grado polinomiale delle funzioni di base, che, al contrario delle curve di Bézier, non è necessariamente pari ad n, ma si può scegliere liberamente purché p ≤ n. Inoltre, osserviamo che il parametro t non è compreso fra 0 e 1 come

170

6 Curve Freeform

nel caso delle curve di Bézier, ma varia in un generico intervallo [a, b]. Su questo intervallo si definisce una serie di nodi t j tali che t j ≤ t j+1 e tali che t0 = a, tm = b per un totale di m + 1 nodi. Se i nodi sono equispaziati si parla di B-spline uniformi ed è una convenzione comune scegliere a = 0 e t j+1 − t j = 1. Su tale partizione p vengono costruite le funzioni di base Bi tramite la formula di ricorsione di de Boor. Le funzioni di grado zero sono definite come  Bi0

=

1 se ti ≤ t ≤ ti+1 0 altrimenti.

Quindi, date le funzioni di grado p − 1 si definiscono quelle di grado p come p

Bi =

ti+ p+1 − t t − ti p−1 p−1 Bi + B . ti+ p ti+ p+1 − ti+1 i+1

In Figura 6.24 sono rappresentate le funzioni di base di grado p = 1, p = 2, p = 3 su un totale di 6 nodi. Possiamo osservare che il numero di funzioni di base, che deve essere pari al numero di punti di controllo (n + 1), è legato al grado p ed al numero di nodi m + 1. In particolare osserviamo che n + 1 = m − p = (m + 1) − ( p + 1), ossia il numero di funzioni di base è pari al numero di nodi meno il grado più uno. p È inoltre importante osservare che le funzioni Bi (t) sono non nulle solo in una parte limitata dell’intervallo [a, b]. Ciò ha una importante conseguenza: l’influenza di un punto di controllo è limitata solo ad un tratto della curva. Ad esempio, nel caso p = 1 ogni punto di controllo influenza solo l’intervallo fra un nodo t j ed il nodo t j+2 , mentre se p = 2 le funzioni di base sono nulle fra t j e t j+3 . Le curve B-spline quindi, al contrario delle curve di Bézier, sono locali. Si noti che le funzioni di base rappresentate in Figura 6.24 sono tutte nulle in corrispondenza degli estremi a e b: ciò significa che la curva non passa automaticamente per il primo e l’ultimo punto di controllo, il cui peso è nullo in corrispondenza di t = a, t = b. Per far sì che la curva passi per P0 , Pn è necessario collocare più nodi coincidenti in a e in b, in particolare dobbiamo aggiungere in ciascun estremo p nodi coincidenti.

Figura 6.24 Le funzioni di base delle curve B-spline di grado p = 1, p = 2, p = 3 definite su 6 nodi

Bi1

1

Bi2

0.8

Bi3 0.6

0.4

0.2

0

0

1

2

3

4

5

6.5 Curve B-spline Figura 6.25 In blu, una curva B-spline con basi quadratiche definita da 6 punti di controllo; in verde la B-spline cubica definita dagli stessi punti di controllo. Il simbolo “X” indica la posizione dei nodi. In nero è rappresentata la corrispondente curva di Bézier di grado 5

171

P4

4 P3

3

P5

P2

2 P0

1

P1 0

0

1

2

3

4

Poiché che la scelta del grado p è libera, dato un set di punti di controllo possiamo realizzare diverse curve B-spline. Ad esempio, consideriamo i 6 punti di controllo rappresentati in Figura 6.25. Se fissiamo p = 2, ossia funzioni di base quadratiche, otteniamo m = n + 1 + p = 8, ossia un totale di 9 nodi. Di questi nodi 3 si collocano coincidenti in a, 3 in b e i restanti 3 dividono la curva in 4 archi raccordati fra loro. Si noti che, dove i nodi sono “singoli”, ossia non ripetuti, le curve si raccordano con la massima regolarità possibile che in questo caso corrisponde alla continuità C 1 . Dato lo stesso set di punti di controllo, se invece scegliamo p = 3 significa che la curva è definita su 10 nodi, di cui 8 sono distribuiti (4+4) agli estremi e i restanti dividono la curva in 3 tratti. Infine, se si sceglie p = 5 questo corrisponde a costruire un’unica curva, che corrisponde alla curva di Bézier di grado 5 definita dai 6 punti di controllo. Riassumiamo quindi le principali differenze fra curve di Bézier e curve B-spline: Curve di Bézier • Sono definite da n + 1 punti di controllo i. P n • c(t) = i=0 Bin (t)pi . • Le funzioni di base hanno grado n. • Le funzioni di base sono globali. • Il parametro t varia tra 0 e 1.

Curve di B-spline • Sono definite da n + 1 punti di controllo i. P p n • c(t) = i=0 Bi (t)pi . • Le funzioni di base hanno grado p ≤ n. • Le funzioni di base sono locali. • Il parametro t varia in un intervallo generico [a, b] su cui si definiscono n + 2 − p nodi eventualmente coincidenti.

172

6 Curve Freeform

6.6 Curve NURBS Nonostante le curve B-spline siano molto flessibili non sono in grado di rappresentare in modo esatto, con nessuna opportuna scelta dei punti di controllo, curve molto importanti quali archi di circonferenze, ellissi, iperboli. Per rappresentare queste forme è necessario introdurre una ulteriore generalizzazione. Le curve NURBS garantiscono questa elevata flessibilità e sono quindi, insieme alle superfici NURBS (si veda il Capitolo 7) ampiamente usate nei moderni software di grafica. Il nome NURBS è un acronimo per Non-Uniform-Rational-B-Spline e riassume le principali caratteristiche di queste curve: si tratta infatti di una generalizzazione delle curve B-Spline con distribuzione dei nodi non uniforme la cui espressione però non è più un semplice polinomio ma una funzione razionale. Per semplicità deriviamo l’espressione nel caso bidimensionale in cui è più semplice dare un’interpretazione geometrica dei coefficienti. Una curva B-spline, come visto precedentemente, ha la seguente espressione c(t) =

n 

p

Bi pi .

i=0

Consideriamo i punti Pi in coordinate omogenee e assegniamo a ciascuno un peso wi . Indichiamo quindi con p˜ i i vettori di componenti [wi pi x , wi pi y , wi ] e costruiamo la curva NURBS come n  p x˜ (t) = Bi p˜ i . i=0

Osserviamo che

⎤ ⎡ n p Bi (t)wi pi,x i=0 p n ⎦ x˜ (t) = ⎣  i=0 Bi (t)wi pi,y , p n i=0 Bi (t)wi

ossia il generico punto della  curva, in coordinate omogenee, ha un peso variabile con p t e pari alla combinazione in Bi (t)wi . Se riscriviamo l’equazione in coordinate cartesiane dividendo per il peso otteniamo n

p

c(t) = i=0 n

Bi (t)wi pi

p i=0 Bi (t)wi

.

(6.19)

È evidente che abbiamo ottenuto un’espressione razionale in cui polinomi in t compaiono sia al numeratore sia al denominatore. I pesi wi associati ai punti di controllo hanno un significato geometrico evidente se consideriamo i punti nello spazio tridimensionale di coordinate (X, Y, W ) come rappresentato in Figura 6.26. Costruire una curva NURBS bidimensionale corrisponde a costruire una curva Bspline classica nello spazio aumentato assegnando ai punti di controllo coordinate W , ossia pesi, diversi. La curva NURBS si può interpretare come la proiezione

6.6 Curve NURBS

173

Figura 6.26 Significato geometrico dei pesi di una curva NURBS

prospettica sul piano W = 1 di tale B-spline: osserviamo che assegnando pesi diversi, e quindi distanze diverse dall’origine in direzione W otteniamo una distorsione della curva proiettata. Per illustrare meglio l’effetto dei pesi consideriamo un caso semplice eppure molto rilevante: mostriamo come, a partire da una semplice curva quadratica con tre punti di controllo, si possano rappresentare archi di circonferenze, ellissi e iperboli. Tutte queste curve appartengono alla famiglia delle coniche e si possono ottenere intersecando una superficie conica con piani di diversa giacitura. La parabola si ottiene intersecando la superficie conica con un piano parallelo ad una generatrice, come mostrato in Figura 6.27.√Ad esempio in Figura 6.27 abbiamo considerato un piano di normale N = [1, 1, 2]T . Su questo piano costruiamo una parabola √ con funzioni di base quadratiche e punti di controllo P˜0 = (1, 0, 1), P˜1 = (1, 1, 2/2), P˜2 = (0, 1, 1): possiamo osservare che la proiezione di questa parabola sul piano W = 1 è un arco di circonferenza, in quanto intersecando una superficie conica con un piano perpendicolare all’asse si ottiene appunto una circonferenza. In particolare si tratta di un arco di circonferenza sotteso ad un angolo φ = π2 che può essere rappresentato con una curva NURBS scegliendo un opportuno peso per il punto P1 , √ w1 = sin( φ2 ), nel nostro caso pari appunto a 22 . Un altro caso interessante è rappresentato in Figura 6.28. Consideriamo una superficie conica di asse X che, intersecata con un piano di normale N = [1, 0, 1]T determina una parabola. Descriviamo un arco di questa parabola con funzioni di base √ √ quadratiche ed i punti di controllo P˜0 = (2, − 3, 1), P˜1 = (1, 0, 2), P˜2 = (2, 3, 1): possiamo osservare che la proiezione di questa parabola sul piano W = 1 è un arco di iperbole, che si ottiene appunto intersecando la superficie conica con un piano parallelo all’asse. In questo caso abbiamo utilizzato per il punto P1 un peso w1 > 1. In generale, come riassunto in Figura 6.29, un peso maggiore di uno “avvicina” la curva al corrispondente punto di controllo, e viceversa.

174

6 Curve Freeform

Figura 6.27 Relazione fra una curva NURBS bidimensionale che rappresenta un arco di circonferenza sul piano W = 1, e la corrispondente curva polinomiale quadratica nello spazio tridimensionale (X, Y, W )

Figura 6.28 Relazione fra una curva NURBS bidimensionale che rappresenta un arco di iperbole sul piano W = 1 e la corrispondente curva polinomiale quadratica nello spazio tridimensionale (X, Y, W )

6.6 Curve NURBS

175 P1

P0

P2

Figura 6.29 Curve NURBS corrispondenti a diversi valori del peso w1 : in blu w1 = 1 (parabola), in verde w1 < 1 (ellisse), in rosa w1 = sin(φ/2) (circonferenza), in nero w1 = 2 (iperbole)

7

Superfici Freeform

Il matematico è affascinato dalla meravigliosa bellezza delle forme che costruisce, e nella loro bellezza scopre verità eterne. (George Bernard Shaw)

In questo capitolo vengono estesi alla rappresentazione di superfici i concetti esposti nel capitolo precedente per le curve freeform. In particolare saranno introdotte le superfici di Bézier nel caso tensoriale e su griglie triangolari, le superfici B-Spline e le superfici NURBS. Saranno descritte le principali proprietà di tali superfici. Lo sviluppo dei concetti matematici alla base delle superfici freeform si è avuto durante gli anni ’40 e ’50. Tale strumenti dovevano rispondere essenzialmente a due esigenze: la prima era quella di poter archiviare in forma digitale le superfici progettate e la seconda era quella di trovare metodologie che consentissero di introdurre tali superfici come input alle nascenti macchine a controllo numerico. Lo sviluppo delle superfici freeform è quindi un tipico esempio di come una necessità di carattere spiccatamente progettuale abbia portato alla creazione di innovativi concetti e strumenti matematici; questo è confermato anche dal fatto che i pionieri in questo contesto operavano in ambito automobilistico (Citroën, Renault) e aerospaziale (Boeing). Le superfici freeform hanno poi iniziato ad essere utilizzate in svariati contesti applicativi diversi da quelli tipicamente ingegneristici come ad esempio l’architettura ed il design.

© Springer-Verlag Italia S.r.l., part of Springer Nature 2019 E. Miglio et al., Matematica e Design, UNITEXT - La Matematica per il 3+2 115, https://doi.org/10.1007/978-88-470-3987-2_7

177

178

7 Superfici Freeform

Figura 7.1 Schematizzazione del reticolo di controllo per una superficie di grado (3, 3)

A03

A13

A23

A33

A02

A12

A22

A32

A01

A11

A21

A31

A00

A10

A20

A30

v u

7.1 Superfici di Bézier Iniziamo estendendo al caso di superfici le idee introdotte nel capitolo precedente per descrivere le curve di Bézier. Nella presente trattazione considereremo solo il caso di superfici di Bézier definite su un reticolo di controllo formato da quadrilateri; per una trattazione relativa alle superfici di Bézier definite su una griglia di triangoli si rimanda a [21]. Una superficie di Bézier è definita da una matrice di punti di controllo Ai j rappresentati dai vettori ai j , dove i = 0, . . . , m e j = 0, . . . , n; si ha quindi una matrice con m + 1 righe ed n + 1 colonne; in totale si hanno quindi (m + 1)(n + 1) punti di controllo (si veda Figura 7.1). L’espressione matematica della superficie di Bézier definita da tali punti di controllo è data da x(u, v) =

n m  

Bim (u)B nj (v)ai j , 0 ≤ u ≤ 1, 0 ≤ v ≤ 1,

(7.1)

i=0 j=0

dove Bim (u) e B nj (v) sono la i-esima e la j-esima funzione di base e u e v due parametri al cui variare si identifica la superficie; tali funzioni sono rispettivamente di grado m ed n e pertanto la superficie di Bézier così costruita si dirà di grado (m, n). L’espressione (7.1) si può riscrivere nel seguente modo x(u, v) =

n m  

Bi,m,n j (u, v)ai j , 0 ≤ u ≤ 1, 0 ≤ v ≤ 1,

i=0 j=0

dove si è introdotta la seguente definizione: m n Bi,m,n j (u, v) = Bi (u)B j (v).

7.1 Superfici di Bézier

179

In altri termini le funzioni di base utilizzate nella rappresentazione delle superfici di Bézier si ottengono come prodotto delle funzioni di base nelle due direzioni identificate dai parametri u e v. Esempio 7.1 Si vogliono rappresentare le funzioni di base per la generazione di una superficie di grado (3, 2). Ad esempio, la funzione di base generatrice corrispondente a i = j = 0 è data da 3,2 B0,0 = (1 − u)3 · (1 − v)2 ,

mentre quella corrispondente a i = j = 1 da 3,2 = 3(1 − u)2 u · 2(1 − v)v, B1,1

si veda Figura 7.2.

Figura 7.2 Esempio di funzioni di base per la generazione di una superficie di grado 3,2 (3, 2). A sinistra, è rappresentata la funzione B0,0 = (1 − u)3 · (1 − v)2 ; a destra, la 3,2 = 3(1 − u)2 u · 2(1 − v)v. Sui piani verticali sono rappresentate in rosso le funzione B1,1 corrispondenti funzioni monodimensionali

Consideriamo una superficie di Bézier di grado (3, 3) (si veda la Figura 7.3): ogni riga composta da 4 punti di controllo definisce una curva di Bézier in u (per questo motivo tali curve sono dette u-curve), valutando ognuna di queste 4 curve per lo stesso valore di u si ottengono 4 punti di controllo virtuali che consentono di creare una nuova curva di Bézier in v (v-curve). Valutando tale curva per un generico valore di v si ottengono le coordinate del punto sulla superficie (Figura 7.3). In altri termini partendo da due curve di Bézier γ1 (u) e γ2 (v) definite rispettivamente dai punti di controllo A00 , A10 , . . . Am0 e B00 , B01 , . . . B0n con A00 = B00 la superficie definita dalla (7.1) si ottiene immaginando di traslare la curva γ1 (u) lungo la traiettoria definita dalla curva γ2 (v) o viceversa.

180

7 Superfici Freeform

Figura 7.3 Superficie di Bezier: u-curve in verde e v-curve in blu. In rosso un punto calcolato su una v-curve

7.2 Proprietà delle superfici di Bézier Le superfici di Bézier definite nella precedente sezione godono di alcune importanti proprietà che sono diretta conseguenza delle corrispondenti proprietà delle curve di Bézier. Vediamole in dettaglio: 1. Reticolo di controllo: la superficie di Bézier x(u, v) passa per i punti A00 , Am0 , A0n e Amn cioè per i quattro vertici del reticolo di controllo (si veda la Figura 7.4). 3,3 3,3 Questa proprietà è diretta conseguenza del fatto che B0,0 (0, 0) = Bm,0 (1, 0) = 2.

3.

4. 5.

6.

3,3 3,3 B0,n (0, 1) = Bm,n (1, 1) = 1. Inviluppo convesso: la superficie di Bézier x(u, v) appartiene all’inviluppo convesso dei punti che definiscono il suo reticolo di controllo (si veda la Figura 7.5). Invarianza rispetto a trasformazioni affini: la superficie che si ottiene applicando una trasformazione affine alla superficie di Bézier coincide con la superficie che si costruisce utilizzando come punti di controllo i punti ottenuti applicando ai punti di controllo originari la trasformazione affine in oggetto. u-curve e v-curve: le curve che definiscono il bordo della superficie sono curve di Bézier. Ogni curva con u o v costante è una curva di Bézier. Piani tangenti: i vettori v1 = A01 − A00 e v2 = A10 − A00 sono tangenti alla superficie nel punto A00 ; pertanto tali vettori v1 e v2 definiscono il piano tangente alla superficie nel punto A00 . Analogamente per gli altri vertici. Non-località: modificando la posizione di un punto di controllo del reticolo tutta la superficie di Bézier viene modificata.

Sulla base di queste proprietà si può mostrare come, mediante l’utilizzo delle superfici di Bézier, sia possibile costruire particolari superfici rigate, cilindriche o coniche, scegliendo in modo opportuno la posizione dei punti che formano il reticolo di controllo. Vediamo nel dettaglio come costruire tali superfici. Per quanto concerne le superfici rigate è sufficiente considerare una generica superficie di Bézier di grado (1, n): infatti in tale caso le u-curve sono curve di

7.2 Proprietà delle superfici di Bézier

181

Figura 7.4 Superficie di Bézier di grado (3, 3): il reticolo di controllo è formato da 16 punti

Figura 7.5 Superficie di Bézier di grado (3, 3): si può notare che la superficie è contenuta nell’inviluppo convesso dei punti di controllo ed inoltre i vettori A01 − A00 e A10 − A00 sono tangenti alla superficie nel punto A00

Bézier di grado 1 cioè rette (si veda la Figura 7.6); in modo del tutto analogo è possibile procedere per ottenere una superficie cilindrica. Per ottenere invece una superficie conica è sufficiente considerare ancora una superficie di Bézier di grado (1, n) dove i punti di controllo di una delle due curve di Bézier di bordo siano tutti coincidenti come in Figura 7.7.

7.3 Raccordo di superfici di Bézier Una singola superficie di Bézier non consente di rappresentare superfici complesse, pertanto è di fondamentale importanza sviluppare un metodo per raccordare più superfici di Bézier al fine di descrivere oggetti di reale interesse applicativo.

182

7 Superfici Freeform

Figura 7.6 Superficie rigata o cilindrica

Figura 7.7 Superficie conica

Consideriamo due superfici di Bézier σ1 e σ2 che abbiano un bordo del reticolo di controllo in comune (si veda la Figura 7.8). Le due superfici sono chiaramente unite lungo la curva di bordo γ definita dai punti di controllo comuni, tuttavia i piani tangenti alle due superfici sono diversi. Al fine di descrivere come raccordare anche i piani tangenti ed ottenere quindi un raccordo C 1 (si veda Figura 7.9), consideriamo in particolare il caso in cui sia assegnata, mediante i suoi punti di controllo Ai j , una prima superficie σ1 di grado (3, 3) alla quale si vuole raccordare una seconda superficie σ2 definita dai punti di controllo Bi j (che per semplicità supporremo ancora di grado (3, 3)) lungo il bordo γ definito dai punti A30 , A31 , A32 e A33 . Dobbiamo quindi determinare quali condi-

7.3 Raccordo di superfici di Bézier

183

Figura 7.8 Raccordo C 0 di due superfici di Bézier di grado (3, 3)

Figura 7.9 Raccordo C 1 di due superfici di Bézier di grado (3, 3)

zioni devono soddisfare i 16 punti di controllo Bi j che definiscono la superficie σ2 . La prima condizione da imporre richiede che i punti di controllo sul bordo comune γ siano coincidenti quindi: A30 = B00 , A31 = B01 , A32 = B02 e A33 = B03 . Con riferimento a Figura 7.10, dobbiamo ora imporre che le superfici rigate Θ1 e Θ2 di grado (1, 3) tangenti a σ1 e σ2 lungo γ e formate rispettivamente dai punti di controllo A20 , A21 , A22 , A23 , A30 , A31 , A32 , A33 e B00 , B01 , B02 , B03 , B10 , B11 , B12 , B13

184

7 Superfici Freeform

Figura 7.10 Schema per il calcolo della posizione dei punti B10 , B11 , B12 e B13 utilizzando le superfici rigate tangenti alle superfici di Bézier

giacciano su una stessa superficie rigata Θ. Questa richiesta comporta che B1 j = B0 j + α(A3 j − A2 j ),

j = 0, 1, 2, 3,

(7.2)

dove α è un arbitrario numero appartenente a R+ . Dal punto di vista geometrico la condizione (7.2) equivale a richiedere che: • Per ogni j = 0, 1, 2, 3, i punti A2 j , A3 j = B0 j e B1 j siano allineati. • Che valga B1 j − B0 j  = α. A3 j − A2 j 

Real life applications: creazione di superfici complesse Utilizzando le tecniche di raccordo appena introdotte è possibile rappresentare superfici complesse utilizzando superfici di Bézier di grado (3, 3) opportunamente raccordate tra di loro. In Figura 7.11 viene è mostrata una teiera creata raccordando in modo opportuno 32 superfici di Bézier.

7.3 Raccordo di superfici di Bézier

185

Figura 7.11 Teiera creata mediante il raccordo di 32 superfici di Bézier: in alto sono evidenziati in colori diversi i vari pacth bicubici ed in basso la superficie ottenuta

7.4 Superfici B-spline e NURBS Per generare superfici B-spline o NURBS si utilizza la stessa idea che ci ha guidato nella costruzione delle superfici di Bézier. La superficie è definita mediante un reticolo di controllo e l’espressione matematica di una superficie B-spline o NURBS si ottiene a partire dalla (7.1) dove in luogo dei polinomi di Bernstein vengono usate le funzioni di base delle curve B-spline o NURBS. Più precisamente nel caso delle

186

7 Superfici Freeform

B-spline si ha che, dati • una matrice di (m + 1) × (n + 1) punti di controllo Ai j , con i = 0, . . . , m e j = 0, . . . , n, • il grado p nella direzione identificata dal parametro u, • il grado q nella direzione identificata dal parametro v, • un vettore u di h + 1 nodi nella direzione u (con h = m + p + 1), • un vettore v di k + 1 nodi nella direzione v (con k = n + q + 1), la superficie B-spline si può esprimere come x(u, v) =

n m  

p

q

Bi (u)B j (v)ai j , 0 ≤ u ≤ 1, 0 ≤ v ≤ 1,

(7.3)

i=0 j=0 p

q

dove Bi (u) e B j (v) sono la i-esima e la j-esima funzione di base B-spline di grado rispettivamente p e q nelle direzioni u e v definite sui vettori di nodi u e v. In modo analogo a quanto fatto per le superfici di Bézier, l’espressione (7.3) si può riscrivere nel seguente modo x(u, v) =

n m  

p,q

Bi, j (u, v)ai j , 0 ≤ u ≤ 1, 0 ≤ v ≤ 1,

i=0 j=0

dove p,q

p

q

Bi, j (u, v) = Bi (u)B j (v).

Analogamente si può procedere nel caso delle superfici NURBS utilizzando come funzioni di base le funzioni razionali viste in 6.6. Le superfici B-spline godono delle stesse proprietà delle superfici di Bézier, ma, in aggiunta, esattamente come accade nel caso delle curve, godono della proprietà di località cioè lo spostamento di un punto del reticolo di controllo influenza solo una porzione limitata della superficie. Le superfici NURBS, oltre a soddisfare la proprietà di località, estendono la proprietà di invarianza anche al caso di trasformazioni prospettiche. Infine osserviamo che, anche nel caso delle superfici NURBS, un incremento del valore del peso relativo ad un punto di controllo del reticolo di

7.4 Superfici B-spline e NURBS

187

Figura 7.12 Superficie NURBS definita da 9 punti di controllo: nella parte alta tutti i punti di controllo hanno peso pari ad 1, nella parte bassa il punto di controllo centrale ha peso pari a 4

controllo ha come effetto quello di spostare localmente la superficie verso il punto di controllo stesso (si veda la Figura 7.12). Per una trattazione più approfondita dell’argomento si rimanda a [20].

8

Curve e superfici di suddivisione

La divisione che separa il saggio dal folle è più sottile della tela del ragno. (K. Gibran)

In questo capitolo si forniscono i concetti fondamentali che stanno alla base delle curve e superfici di suddivisione. Si partirà con una breve introduzione sull’utilizzo di tali tecniche e si fornirà in seguito un esempio iniziale (quello delle curve B-spline) per illustrare la idea di base delle regole di suddivisione. Infine, si descriveranno alcuni dei più celebri algoritmi di suddivisione introdotti per il caso delle curve e delle superfici. I software Computer-Aided Design(CAD) rivestono un ruolo fondamentale nel processo di progettazione di prodotti industriali in diversi ambiti (meccanico, automobilistico, architettonico, aeronautico, fashion e interior design). Alla base del loro utilizzo vi è la possibilità di generare, nello spazio, curve e superfici di forma praticamente arbitraria. A questo fine, due sono le tecniche oggigiorno maggiormente utilizzate, le Non-Uniform Rational B-Splines (NURBS) introdotte nei capitoli 6 e 7, e le curve e superfici di suddivisione. Entrambe le tecniche si basano, in maniera diversa, sulle B-Splines. Le NURBS costituiscono lo standard nell’ambito della progettazione assistita al calcolatore, mentre le superfici di suddivisione sono molto diffuse nella applicazioni grafiche e nell’animazione, in quanto non richiedono di “incollare” le diverse superfici fra di loro, riducendo notevolmente i tempi di calcolo.

8.1 Curve di suddivisione Nella definizione delle curve di Bézier, delle B-spline o delle NURBS (e nelle corrispondenti superfici) a partire da un set di punti che identificano il poligono di controllo, tutti i punti della curva vengono definiti in forma analitica, attraverso l’utilizzo di opportune funzioni di base. Una curva di suddivisione è definita dai © Springer-Verlag Italia S.r.l., part of Springer Nature 2019 E. Miglio et al., Matematica e Design, UNITEXT - La Matematica per il 3+2 115, https://doi.org/10.1007/978-88-470-3987-2_8

189

190

8 Curve e superfici di suddivisione

(a)

(b)

(c)

(d)

Figura 8.1 Curva di suddivisione ottenuta con l’algoritmo di Chaikin: (a) poligono di controllo iniziale, (b) primo livello di suddivisione, (c) secondo livello di suddivisione, (d) curva limite (B-spline quadratica)

punti di controllo e da un livello di raffinamento. Tuttavia, in questo caso la curva non viene definita in forma analitica ma è ottenuta come limite di una successione di poligoni via via più raffinati generati applicando un’opportuna regola di suddivisione. In questa sezione, ci limiteremo per semplicità a discutere il caso di curve di suddivisione nel piano. Si veda, ad esempio, in Figura 8.1, la curva di suddivisione ottenuta con l’algoritmo di Chaikin (che verrà discusso nel dettaglio nella prossima sezione). Operativamente, si definisce un processo iterativo nel quale ad ogni iterazione (livello) vengono generati dei nuovi punti della curva, secondo una specifica regola di suddivisione che caratterizza l’algoritmo considerato. Ciò porta a definire, una curva limite (e, vedremo, in modo analogo una superficie limite) liscia, ottenuta come limite di una sequenza di successivi raffinamenti (suddivisioni). Si può mostrare che la curva limite generata dall’algoritmo di Chaikin (mostrata in Figura 8.1(d)) corrisponde ad una curva B-spline quadratica. Dal punto di vista pratico, data la risoluzione finita associata alla rappresentazione digitale di un’immagine, non è mai necessario arrivare al limite e un numero anche piuttosto piccolo di suddivisioni è sufficiente per ottenere una rappresentazione perfettamente liscia a livello visivo.

8.1 Curve di suddivisione

191

(a)

(b)

(c)

(d)

Figura 8.2 Curva di suddivisione cubica: (a) poligono di controllo iniziale, (b) primo livello di suddivisione, (c) secondo livello di suddivisione, (d) curva limite (B-spline cubica)

Diversi algoritmi corrispondono a diverse regole di suddivisione. A titolo di esempio, mostriamo di seguito come, scegliendo altre regole di suddivisione, a partire dallo stesso poligono di controllo iniziale possiamo ottenere diverse curve di suddivisione. In particolare, in Figura 8.2 è mostrata la curva che si ottiene applicando una regola di suddivisione che ammette come curva limite una B-spline cubica. Negli schemi di suddivisione utilizzati per gli esempi visti finora (Figure 8.1 e 8.2), i punti che definiscono il poligono di controllo iniziale non appartengono alla curva limite. Si parla in questo caso di schemi di suddivisione approssimanti. Esiste, tuttavia, anche una seconda classe di schemi che garantisce che i punti di controllo giacciano sulla curva limite. Tali schemi sono detti interpolanti. In Figura 8.3, è mostrata la curva di suddivisione ottenuta a partire dagli stessi punti di controllo considerati prima, utilizzando uno schema di suddivisione interpolatorio. Gli schemi interpolanti sono interessanti perché più intuitivi, nel senso che l’operatore ha una immediata idea della curva (o superficie) che si sta generando. Tuttavia, la qualità delle curve ottenute con schemi di approssimazione è, in generale, molto migliore rispetto agli schemi interpolanti, e anche le proprietà di convergenza sono migliori per i primi rispetto ai secondi. Per questi motivo gli schemi approssimanti sono, nella pratica, più utilizzati. A titolo di confronto, e per ribadire come a partire dallo stesso insieme di punti di controllo si possano ottenere curve differenti utiliz-

192

8 Curve e superfici di suddivisione

(a)

(b)

(c)

(d)

Figura 8.3 Curva di suddivisione interpolatoria: (a) poligono di controllo iniziale, (b) primo livello di suddivisione, (c) secondo livello di suddivisione, (d) curva limite

zando schemi differenti, riportiamo in Figura 8.4 le curve limite ottenute con i tre schemi di suddivisione considerati. Per mostrare nel dettaglio come si può implementare una procedura di suddivisione, nella prossima sezione descriviamo l’algoritmo di Chaikin [8]. Per una panoramica generale sui diversi algoritmi di suddivisione e sulle relative proprietà si può fare riferimento, ad esempio, a [14].

8.1.1 L’algoritmo di Chaikin L’algoritmo di Chaikin si basa sul “taglio” degli angoli di una curva ottenuta congiungendo linearmente dei punti (spezzata). Ciò permette di definire curve di forma arbitraria mediante raffinamenti ricorsivi. In particolare, partendo dalla spezzata che unisce con linee rette i punti di controllo iniziali, ogni vertice del raffinamento successivo si ottiene come combinazione lineare dei vecchi vertici, si veda Figura 8.5 per un esempio. j Operativamente, per ogni vertice pi del livello j, viene tagliato il corrispondente j+1 j+1 angolo inserendo due nuovi punti p2i e p2i+1 e il nuovo segmento che unisce questi ultimi. In questo modo la lunghezza dei segmenti viene ridotta ad ogni raffinamento. Le regole con cui ciò viene fatto sono le seguenti:

8.1 Curve di suddivisione Figura 8.4 Diverse curve di suddivisione generate dallo stesso poligono di controllo iniziale: (a) curva approssimante quadratica, (b) curva approssimante cubica, (c) curva interpolante

193

(a)

(b)

(c)

194

8 Curve e superfici di suddivisione

D

C

B

A

Figura 8.5 Tre livelli di suddivisione dell’algoritmo di Chaikin

j+1

p2i

=

1 j 3 j pi−1 + pi , 4 4

j+1

p2i+1 =

3 j 1 j pi−1 + pi . 4 4

(8.1)

Al limite, per j → ∞, l’algoritmo di Chaikin produce curve B-spline quadratiche uniformi.

8.1 Curve di suddivisione

195

Esempio 8.1 Dati i punti di controllo A = (1, 0), B = (3, 0.5), C = (4, 3), D = (2, 3.5), rappresentati in Figura 8.5, identifichiamo p00 con A, p01 con B, p02 con C e p03 con D. Allora, al termine della prima suddivisione, grazie alle (8.1), i seguenti punti generati dall’algoritmo di Chaikin formano il set dei nuovi punti di controllo: 1 0 p + 4 3 3 p11 = p03 + 4

p10 =

1 0 p + 4 0 3 p13 = p00 + 4 1 p14 = p01 + 4

p12 =

3 0 p + 4 1 1 p16 = p02 + 4 3 p17 = p02 + 4

p15 =

  3 0 1 3 5 7 T , p0 = [2 3.5]T + [1 0]T = 4 4 4 4 8 T  1 0 9 21 , p = 4 0 4 8   3 0 5 3 T , p = 4 1 2 8 T  1 0 3 1 , p1 = 4 2 8 T  3 0 15 19 , p = 4 2 4 8   1 0 13 9 T , p = 4 2 4 8 T  3 0 5 27 , p3 = 4 2 8 T  1 0 7 25 , p = 4 3 2 8

qualitativamente rappresentati in Figura 8.1 in basso. Si noti come si sia posto p0−1 = p03 essendo la spezzata di partenza chiusa.

8.1.2 Le B-spline come curve di suddivisione Mostriamo in questo paragrafo come una B-spline possa essere ottenuta come limite di una curva di suddivisione, si veda per maggiori dettagli [17]. In particolare, consideriamo una curva B-spline Bl (t) di ordine l. Denotiamo con Bi,l (t) = Bl (t − i) la copia traslata della curva Bl (t) e con Bl (2t) la copia dilatata di Bl (t), vale a dire le funzioni ottenute dalla B-spline originale operando rispettivamente una traslazione e una dilatazione rispetto al parametro t. Per tali funzioni vale la seguente regola di suddivisione che sta alla base degli algoritmi per generare curve e superfici di suddivisione [7]:  l+1  1  l +1 Bl (t) = l Bl (2t − k), (8.2) 2 k k=0

196

8 Curve e superfici di suddivisione

che mostra come una B-spline possa essere ottenuta da una combinazione lineare di copie traslate e dilatate di se stessa e che quindi di fatto sia una curva di suddivisione. Introducendo il vettore riga bl (t), le cui componenti sono date da bil (t) = Bl (t −i), è possibile scrivere, utilizzando la regola di suddivisione (8.2), la seguente relazione bl (t) = bl (2t) Sl ,

(8.3)

con Sl la matrice di suddivisione i cui elementi non nulli sono definiti da   1 l +1 l , S2i+k,i = l 2 k al variare di i e k. Si consideri ora una curva B-spline  c(t) =

 N N   x(t) = pi Bi,l (t) = pi Bl (t − i), y(t) i=−N

i=−N

dove pi = (xi , yi )T , i = −N , . . . , N sono i punti di controllo. In forma compatta, introducendo la matrice P ∈ R2N +1,2 e notando che in questo caso bl ∈ R2N +1 , la curva B-spline può essere espressa nel seguente modo  T c(t) = bl (t) P , ove, per i = −N , . . . , N , si è posto Pi1 = xi , Pi2 = yi . Grazie alla relazione (8.3), la curva B-spline può essere scritta anche nel seguente modo  T c(t) = bl (2t) Sl P , cioè come funzione non delle B-spline di partenza ma delle loro dilatate applicate ai nuovi punti di controllo Sl P. Si dice che è stato introdotto un nuovo livello di suddivisione. Questo procedimento può essere ripetuto iterativamente. In particolare, se indichiamo con P j la matrice dei punti di controllo al livello di suddivisione j, e omettiamo l’indice l nella matrice S, si ha P j+1 = S P j e c(t) = B(t)P 0 = B(2t)P 1 = B(2t)S P 0 = B(22 t)P 2 = B(22 t)S P 1 = B(22 t)S 2 P 0 .. .

= B(2 j t)P j = B(2 j t)S P j−1 = . . . = B(2 j t)S j P 0 .

Da questa catena di uguaglianze, si conclude che ripetendo il processo di suddivisione più volte, la spezzata che congiunge i punti di controllo converge alla curva B-spline che quei punti di controllo stanno generando. In altri termini, la curva B-spline

8.1 Curve di suddivisione

197

pj+1 5

pj4

pj3

pj+1 4 pj+1 2

pj1

pj2

pj+1 3

pj+1 1

Figura 8.6 Due livelli di suddivisione per la generazione di una B-spline cubica

reale e i suoi punti di controllo sono difficilmente distinguibili dopo pochi passi di suddivisione (si può dimostrare che la convergenza è di tipo geometrico [17]). Su questa ultima osservazione si basa tutto il paradigma delle curve e superfici di suddivisione: invece di disegnare la curva B-spline reale si traccia la curva lineare a tratti che connette i suoi punti di controllo. Scrivendo esplicitamente le relazioni P j+1 = S P j per i punti di controllo con indice dispari e pari, si ottiene j+1 j p2i+1 = k S2i+1,k pk , j+1 j p2i = k S2i,k pk . Schemi di suddivisione per cui al nuovo passo di suddivisione j + 1 i punti dispari sono nuovi punti introdotti mentre i punti pari coincidono con tutti i punti (pari e j dispari) pi al passo precedente, sono sono schemi interpolanti. Schemi invece per j+1 j cui p2i = pi sono invece schemi approssimanti. Ad esempio, per B-spline cubiche, i coefficienti s dispari sono 1/2 e 1/2, mentre quelli pari sono 1/8, 6/8, 1/8, si veda Figura 8.6. Esse sono quindi ottenute mediante uno schema di suddivisione approssimante. Si noti come il primo, il terzo e il quinto j+1 j+1 j+1 punto del nuovo livello (p1 , p3 , p5 , punti dispari) siano stati ottenuti come j+1 j+1 media di due punti originari successivi, invece il secondo e il quarto (p2 , p4 , punti pari) come media pesata di tre punti originari.

8.2 Superfici di suddivisione Analogamente al caso delle curve di suddivisione, una superficie di suddivisione è definita applicando in modo iterativo, a partire dai punti iniziali di controllo (reticolo di controllo), un’opportuna regola di suddivisione. Un esempio di superficie di suddivisione approssimante ottenuta a partire da un reticolo iniziale di quadrilateri è mostrato in Figura 8.7.

198

8 Curve e superfici di suddivisione

Figura 8.7 Superficie di suddivisione approssimante: (a) reticolo di controllo iniziale, (b) primo livello di suddivisione, (c) secondo livello di suddivisione, (d) superficie limite

Anche in questo caso, distingueremo fra schemi approssimanti e interpolanti. Diremo inoltre che uno schema è uniforme se il reticolo viene raffinato uniformemente attraverso l’inserimento di punti, secondo la regola di suddivisione considerata, partendo da tutti i punti del livello precedente e per tutti i livelli. In caso ciò non avvenga, perché non tutti i punti partecipano alla suddivisione e/o perché la suddivisione non viene fatta ad ogni livello, diremo che lo schema è non uniforme. Un’altra distinzione consiste nella forma delle celle del reticolo che si originano ad ogni livello. Le più utilizzate sono le tassellazioni quadrilatere in cui i reticoli sono formati da facce quadrilatere. Infine, distinguiamo fra schemi primali e duali. Nei primi, ogni faccia è suddivisa in quattro, i vecchi vertici vengono mantenuti e ne vengono creati di nuovi sui lati e al centro della faccia originaria. In analogia a quanto visto per le curve di suddivisione, i nuovi punti sono chiamati dispari (che possono essere di lato o di faccia), mentre i vecchi sono chiamati pari e sono detti punti di vertice. Nei secondi schemi (i duali), invece, per ogni vertice del livello di partenza, vengono inseriti nel nuovo livello tanti nuovi vertici quante le facce adiacenti a quello di partenza, si veda Figura 8.8. Un classico esempio di schema di suddivisione approssimante uniforme per reticoli composti da quadrilateri è dato dallo schema di Doo-Sabin [2], che produce al limite superfici B-spline biquadratiche uniformi. L’idea è quella di generare per ogni

8.2 Superfici di suddivisione

199

Figura 8.8 Differenti regole di raffinamento per facce quadrilatere. Schema primale (in alto) e schema duale (in basso)

j+1

faccia una faccia più piccola delimitata da quattro nuovi vertici pi , i = 0, 1, 2, 3, j che vengono ottenuti dai quattro vertici della faccia di partenza pi , i = 0, 1, 2, 3, mediante la seguente regola di suddivisione (si veda Figura 8.9), j+1

p0

=

9 j 3 j 1 j 3 j p0 + p1 + p2 + p3 , 16 16 16 16

scritta per i vertici p0 ma valida in maniera del tutto analoga anche per i p1 , p2 , p3 . Si noti come i vertici della faccia siano stati numerati in modo che p0 sia opposto a p2 . Ciò significa che nella generazione di un nuovo vertice, viene dato più peso (9/16) al nodo di partenza che occupa la stessa posizione (0 e 1 nei due esempi in figura) e peso minore (1/16) a quello opposto. Le nuove facce così ottenute (di tipo faccia) vengono poi collegate unendo i vertici con lo stesso pedice formando nuove facce (di tipo lato), si veda Figura 8.10. Infine, vengono uniti i vertici che si sono generati a partire da uno stesso vertice del livello precedente (in numero di tre in Figura 8.10) formando le nuove facce di tipo vertice. Un altro schema classico di suddivisione uniforme è lo schema di Catmull-Clark [7] che converge a superfici B-spline bi-cubiche uniformi. L’elemento base che viene suddiviso è formato da 16 punti di controllo e nel nuovo livello ci sono 25 punti posti

200 Figura 8.9 Due esempi di suddivisione per lo schema di Doo-Sabin. Con il pallino pieno, è indicato il punto che si sta generando e in parentesi i pesi corrispondenti utilizzati per ciascun vertice di partenza nella media pesata

8 Curve e superfici di suddivisione

pj3

pj0 pj3

pj0

3 16



9 16 1 16

pj2 pj+1 3

pj+1 2

pj+1 0

pj+1 1



pj1



3 16

pj2



pj+1 3

pj+1 2

pj+1 0

pj+1 1 pj1

1 16

3 16



3 16

9 16







Figura 8.10 Tipi diversi di facce generate dall’algoritmo di Doo-Sabin: facce di tipo faccia (in blu), facce di tipo lato (in rosso) e facce di tipo vertice (in verde)

all’interno dell’elemento base. Di questi punti, alcuni si trovano al centro dei rettangoli del reticolo di partenza (punti di faccia); altri giacciono sui lati che congiungono due punti originali (punti di lato); infine, altri (detti punti di vertice) si trovano vicini (ma non coincidono) ai punti di controllo di partenza. Un nuovo punto di faccia è definito come media dei quattro vertici che delimitano la faccia di cui il nuovo è al centro. Ad esempio, con riferimento a Figura 8.11, si ha

8.2 Superfici di suddivisione

201

Figura 8.11 Regole di suddivisione per lo schema di Catmull-Clark. Dall’alto verso il basso: punto di faccia, punto di lato, punto di vertice

1 4

1 4

1 4

1 4

1 16

3 8

1 16

1 16

3 8

1 16

6 64

1 164

36 64

6 64

1 64

j

j

6 64

6 64

j

j

1 64

1 64

p11 + p21 + p12 + p22 , (8.4) 4 dove i due indici indicano la posizione in termini di riga e colonna nel reticolo. j+1

p11 =

202

8 Curve e superfici di suddivisione

Figura 8.12 Superficie di suddivisione: (a) reticolo di controllo iniziale, (b) primo livello di suddivisione, (c) secondo livello di suddivisione, (d) superficie limite

Un nuovo punto di lato è invece definito mediante la seguente media pesata dei sei punti che delimitano le due facce che condividono il lato. Ad esempio, con riferimento a Figura 8.11 j

j+1 p12

j

j

j

j

j

p + 6p12 + p13 + p21 + 6p22 + p23 = 11 . 16

Infine, l’espressione per un nuovo punto di vertice è data da j

j+1

p22 =

j

j

j

j

j

j

j

j

p11 + 6p21 + p31 + 6p12 + 36p22 + 6p32 + p13 + 6p23 + 36p33 . 64

Sia l’algoritmo di Doo-Sabin che quello di Catmull-Clark possono essere estesi al caso di reticoli formati da poligoni generali (non quadrilateri) [23] e al caso nonuniforme [14] (si veda ad esempio la Figura 8.12). In questo caso i pesi dipendono dal numero di lati di una faccia m e dalla valenza di un vertice (cioè il numero di lati che condividono quel vertice).

8.2 Superfici di suddivisione

203

Un ultimo cenno è dato alle NURSS (Non Uniform Recursive Subdivision Surfaces) che estendono le superfici ottenute mediante gli algoritmi di Doo-Sabin e Catmull-Clark al caso di poligoni generali mediante il prodotto tensoriale di B-spline non uniformi [27]. In questo modo, si ottiene una grande flessibilità nel generare superfici arbitrarie e si possono trattare facilmente situazioni particolari quali cuspidi, creste e punte.

8.3 Real life applications: l’animazione digitale Uno dei compiti più difficili nell’ambito dell’animazione digitale (o computer animation) è quello di creare personaggi realistici. Sino alla fine degli anni ’90 le varie parti del corpo di un personaggio venivano create usando superfici NURBS. Tuttavia tale approccio poneva grossi limiti in termini di flessibilità in particolare risultava praticamente impossibile effettuare raffinamenti locali e creare superfici con topologie complesse. Nel 1998 con il lavoro dei ricercatori della Pixar (si veda [10]) è stato introdotto l’uso delle superfici di suddivisione nell’ambito della computer animation con il corto Geri’s Game. Da quel momento tali superfici sono diventate lo strumento principale per la modellazione di personaggi complessi (si vedano ad esempio le Figure 8.13 e 8.14) consentendo una maggiore flessibilità ed una maggiore velocità nello sviluppo dei modelli.

Figura 8.13 Robot modellato con superfici di suddivisione. Si ringraziano per la concessione dell’immagine Nicolò Azzolin, Carlo Cocchetti e Andrea Picardi. Si veda anche il sito https:// alphasunshine.github.io

204

8 Curve e superfici di suddivisione

Figura 8.14 Quattro frame tratti dall’animazione del robot

Un ulteriore possibile utilizzo delle geometrie ottenute mediante tecniche di suddivisone di superfici è nell’ambito dei processi di additive manufacturing brevemente descritti nella scheda seguente.

8.4 Real life applications: la stampa 3D La stampa 3D è una tecnologia di additive manufacturing che ha avuto un notevole sviluppo negli ultimi anni e che si è dimostrata essere estremamente utile in diversi contesti applicativi: dalla prototipazione rapida alla realizzazione di protesi. Gli oggetti da stampare sono solidi tridimensionali la cui forma è definita da una superfice arbitrariamente complessa. La forma dell’oggetto da stampare viene solitamente definita mediante superfici parametriche o di suddivisione ed in genere esportata in un file in formato STL (Standard Triangulation Language) [6]: in tale formato la superficie è descritta mediante una lista di triangoli definita mediante la posizione dei punti e la connettività (cioè come i punti sono connessi tra loro per formare i vari triangoli). Le stampanti 3D operano depositando il materiale strato per strato quindi a partire dalla geometria 3D definita nel file STL è necessario procedere ad una operazione di slicing (utilizzando software quali Skeinforge o MakerWave slicer) mediante la quale viene generato il cosiddetto G-code [18] dal quale poi vengono ottenuti i file da inviare alla stampante. Un semplice esempio di superficie triangolata di

8.4 Real life applications: la stampa 3D

205

un modellino di barca (liberamente scaricabile dal sito http://www.3DBenchy. com) e il corrispondente oggetto stampato in 3D sono mostrati in Figura 8.15.

Figura 8.15 Modello di barca (a sinistra), triangolazione STL (al centro) e oggetto stampato in 3D (a destra). Si ringrazia Francesco Cattoglio per la realizzazione della stampa

Riferimenti bibliografici

1. Bézier, Professor: A short biography. Comput. Aided Des. 22(9), 523 (1990) 2. Doo, D., Sabin, M.: Behaviors of recursive division surfaces near extraordinary points. Comput. Aided Des. 10, 356–360 (1978) 3. Bèzier, P.: Essai de définition numérique des courbes et des surfaces experimentales: Contribution à l’étude des propriétés des courbes et des surfaces paramétriques polynomiales à coefficients vectoriels. Universite Pierre et Marie Curie (Paris VI), Diss (1977) 4. Bézier, P.: Style, mathematics and NC. Comput. Aided Des. 22(9), 524–526 (1990) 5. Bramanti, M., Pagani, C.D., Salsa, S.: Calcolo infinitesimale e algebra lineare. Zanichelli (2004) 6. Burns, M.: Automated Fabrication: Improving Productivity in Manufacturing. PTR Prenrice Hall, Upper Saddle River (1993) 7. Catmull, E., Clark, J.: Recursively generated b-spline surfaces on arbitrary topological meshes. Comput. Aided Des. 10, 350–355 (1978) 8. Chaikin, G.: An algorithm for high-speed curve generation. Comput. Graph. Image Process. 3, 346–349 (1974) 9. de Faget de Casteljau, P.: De Casteljau’s autobiography: My time at Citroën. Comput. Aided Geom. Des. 16(7), 583–586 (1999) 10. DeRose, T., Kass, M., Truong, T.: Subdivision surfaces in character animation. In: Proceedings of the 25th Annual Conference on Computer Graphics and Interactive Techniques, SIGGRAPH ’98, pp. 85–94. ACM, New York (1998) 11. Farin, G.: Curves and Surfaces for Computer Aided Geometric Design. A Pratical Guide. Academic Inc, Cambridge (1990) 12. Forrest, A.R.: Interactive interpolation and approximation by Bézier polynomials. Comput. Aided Des. 22(9), 527–537 (1990) 13. Lane, J.M., Riesenfeld, R.F.: A geometric proof for the variation diminishing property of Bspline approximation. J. Approx. Theory 37(1), 1–4 (1983) 14. Ma, W.: Subdivision surfaces for CAD - An overview. Comput. Aided Des. 37, 693–709 (2005) 15. Mantero, A.M., Ferrari, A.: Algebra e Arte: La magia dei gruppi di simmetria. Serie di architettura e design, Franco Angeli Edizioni (2017) 16. Miller, J.R.: Vector geometry for computer graphics. IEEE Comput. Graph. Appl. 19(3), 66–73 (1999) 17. Levin, D., Dyn, N., Gregory, J.A.: Analysis of uniform binary subdivision schemes for curve design. Constr. Approx. 7(1), 127–147 (1991) 18. Peterson, M.J.: CNC Programming: Reference Book. CreateSpace Independent Publishing Platform (2008) 19. Pickover, C.: Il nastro di Möbius. Apogeo Saggi, Apogeo (2006) © Springer-Verlag Italia S.r.l., part of Springer Nature 2019 E. Miglio et al., Matematica e Design, UNITEXT - La Matematica per il 3+2 115, https://doi.org/10.1007/978-88-470-3987-2

207

208

Riferimenti bibliografici

20. Piegl, L., Tiller, W.: The NURBS Book, 2nd edn. Springer Inc, New York (1997) 21. Prautzsch, H., Boehm, W., Paluszny, M.: Bezier and B-Spline Techniques. Springer Inc, New York (2002) 22. Rogers, D.F., Adams, J.A.: Mathematical Elements for Computer Graphics, 2nd edn. McGrawHill Inc, New York (1990) 23. Sabin, M.A.: Subdivision surfaces. In Farin, G.E., Hoschek, J., Kim, M.S. (eds.) Handbook of computer aided geometric design. North Holland, New York (2002) 24. Salomon, D.: Computer Graphics and Geometric Modeling, 1st edn. Springer, Berlin (1999) 25. Salomon, D.: Curves and Surfaces for Computer Graphics. Springer, Berlin (2006) 26. Sederberg, T.W., Anderson, D.C., Goldman, R.N.: Implicit representation of parametric curves and surfaces. Comput. Vis. Graph. Image Process. 28(1), 72–84 (1984) 27. Sederberg, T.W., Zheng, J., Sewell, D., Sabin, M.: Non-uniform recursive subdivision surfaces. In: Proceeding of the ACM SIGGRAPH Computer Grapichs, pp. 387–394 (1998)

Indice analitico

A Algoritmo Catmull-Clark, 199 Chaikin, 192 di De Casteljau, 157 Doo-Sabin, 198 Animazione digitale, 203 Ascissa, 27 B B-spline, 169, 185 C Cicloide, 115 Cilindro, 135 Circonferenza, 106 Coefficiente binomiale, 156 Combinazione lineare, 14, 37 Composizione di trasformazioni, 77 Computer-Aided Design (CAD), 189 Cono, 138 Coordinate cartesiane, 26 Coordinate cilindriche, 31 Coordinate geografiche, 32 Coordinate omogenee, 44 Coordinate polari, 29 Coordinate sferiche, 31 Coseno, 6, 11 Curva, 91 B-spline, 169, 195 cicloide, 115 circonferenza, 106

di Bézier, 152 di suddivisione, 189 elica cilindrica, 113 elica conica, 113 ellisse, 108 forma cartesiana, 92 forma parametrica, 94 iperbole, 110 non-uniform rational b-splines (NURBS), 172 parabola, 111 parametrica, 152 retta, 95 spirale di Archimede, 112 Curva parametrica, 94 retta, 96 Curve di suddivisione, 189 D Deformazione di taglio, 64 Derivata, 163 Determinante, 57 Distanza, 26, 27 Dominio dei parametri, 123 E Elica cilindrica, 113 Elica conica, 113 Ellisse, 108 Ellissoide, 133

© Springer-Verlag Italia S.r.l., part of Springer Nature 2019 E. Miglio et al., Matematica e Design, UNITEXT - La Matematica per il 3+2 115, https://doi.org/10.1007/978-88-470-3987-2

209

210 F Font, 168 Fregio, 81 Funzione, 6 continuità, 17 derivabilità, 17 derivate parziali, 22 di base, 152, 170, 178 di due variabili, 21 esponenziale, 15 limite, 7 logaritmica, 15 polinomiale, 14, 152 trigonometrica, 10 G Grado polinomiale, 156 I Inviluppo convesso, 157, 180 Iperbole, 110 Iperboloide, 140 L Laplace, sviluppo di, 59 Latitudine, 32, 131 Lente torica, 132 Località, 160, 180, 186 Longitudine, 32, 131 M Mappatura di pattern, 143 Matrice, 50 diagonale, 54 di trasformazione, 74 identità, 54 inversa, 55 ortogonale, 56 quadrata, 54 simmetrica, 55 trasposta, 55 triangolare, 55 Meridiano, 32 N Nastro di Möbius, 141 Non-Uniform Rational B-Splines (NURBS), 172 Numeri, 1 numeri algebrici, 3 numeri interi, 2

Indice analitico numeri naturali, 2 numeri razionali, 2 numeri reali, 2 numeri trascendenti, 3 Numero di Nepero, 16 NURBSNon-Uniform Rational B-Splines (NURBS), 185 NURSSNon Uniform Recursive Subdivision Surfaces (NURSS), 203 O Operazioni su matrici, 50 differenza, 50 prodotto scalare-matrice, 52 prodotto tra matrici, 52 somma, 50 Ordinata, 27 P Parabola, 111 Parallelo, 32 Piano, 123, 126 tangente, 146 Piano tangente, 180 Planarità , 29 Prodotto scalare, 36, 41 Prodotto scalare-matrice, 52 Prodotto scalare-vettore, 35, 40 Prodotto tra matrici, 52 Prodotto vettoriale, 36, 43, 128 Proiezione ortogonale, 83 Proiezione prospettica, 85 Punti di controllo, 152, 170, 178 Punto, 26, 27 all’infinito, 45 medio, 28 R Raccordo tra curve, 162 Raccordo tra superfici, 181 Radianti, 10 Regola del parallelogramma, 35 Regola di suddivisione, 190 Reticolo di controllo, 180, 187 Retta generatrice, 140 Retta tangente, 119 Rette, 95, 96 coincidenti, 101 incidenti, 101 parallele, 101

Indice analitico perpendicolari, 101 Riflessione, 70 Rotazione, 67 S Sarrus, regola di, 59 Scalatura, 62 Schema di suddivisione approssimante, 191, 198 interpolante, 191, 198 Seno, 6, 11 Sfera, 130 Shear, 64 Sistemi di riferimento, 26 coordinate cartesiane, 26 coordinate cilindriche, 31 coordinate geografiche, 32 coordinate polari, 29 coordinate sferiche, 31 Spirale di Archimede, 112 Stampa 3D, 204 Superfici di suddivisione, 197 Superficie, 121 B-spline, 185 cilindrica, 181 cilindro, 135 conica, 138 di Bézier, 178 di rivoluzione, 129 di suddivisione, 189 ellissoide, 133 iperboloide, 140 non-uniform rational b-splines (NURBS), 185 piano, 123 rigata, 139, 180 sferica, 130 torica, 131 Superficie conica, 138, 181 T Tangente, 116 Teorema di Binet, 60

211 Teorema di Pitagora, 27 Terna destrorsa, 27 Texture, 149 Toro, 131 Traiettoria, 115 Trasformazione geometrica, 60 affine, 60, 76, 160 composizione, 77 deformazione di taglio, 64 identità, 62 in coordinate geometriche, 75 non affine, 83 proiezione ortogonale, 83 proiezione prospettica, 85 riflessione, 70 rotazione, 67 scalatura, 62 shear, 64 traslazione, 72, 76 Traslazione, 72, 76 Triangolo di Tartaglia, 156 V Variation diminishing, 160 Vettore, 34 colonna, 39 direzione, 34 giacitura, 124 modulo, 34 normale, 128 ortogonalità, 36 prodotto scalare, 36, 41 prodotto scalare-vettore, 35, 40 prodotto vettoriale, 36, 43, 128 regola del parallelogramma, 35, 40 riga, 39 somma, 35, 36, 40 sottrazione, 35 tangente, 146 versore, 39 vettori di base, 37 Vettore derivato, 117, 163 Vettore direzione, 97 Vettore giacitura, 124 Vettore tangente, 164