Trasformazioni 2D e 3D Daniele Marini Con contributi di Maurizio Rossi 1 L’ambiente per le trasformazioni • Spazio affine • Coordinate omogenee • Matrici 2 Richiami di geometria affine - Spazio vettoriale lineare: operazioni di somma tra vettori Campo scalare; operazione prodotto vettore x scalare - Spazio affine: è costituito da un insieme di punti, uno spazio vettoriale associato e due operazioni: addizione vettore + punto; sottrazione punto-punto P ( x, y , z ) v (v x , v y , v z ) v vx v y vz 2 2 2 v P Q vettore come differenza di due punti P = v Q somma scalare - vettore : traslazio ne del punto di applicazio ne 3 Richiami di geometria affine v u v x u x v y u y v z u z prodotto interno (o scalare), dot product 4 u y v z u z v y w u v u z v x u x v z prodotto vettoria le, cross product u x v y u y v z u v 0 sse ortogonali (u v ) u v linearità 1u1 2 u 2 .... n u n w combinazio ne lineare se 1u1 2 u 2 .... n u n 0 vale per 1 2 .. n 0 allora ( u1 ,..., u n ) sono lineamente indipenden ti n è la dimensione dello spazio, ( u1 ,..., u n ) è la base dello spazio 5 uv cos angolo tra due vettori u v sin uv u v il modulo del cross product dà il seno dell' angolo tra i due vettori 6 Orientamento nello spazio affine • lo spazio può essere orientato in due modi: – mano sinistra: avvolgete la mano all’asse x e puntate il pollice verso x a sinistra, z (medio) viene verso di voi e y (indice) va verso l’alto – mano destra: avvolgete la mano all’asse x e puntate il pollice verso x a destra, z (medio) viene verso di voi e y (indice) va verso l’alto • questo definisce il world coordinate system in cui sono definiti gli oggetti 7 Coordinate omogenee Spazio delle classi di equivalenza: ogni punto in coordinate cartesiane 3D corrisponde a infiniti punti nello spazio omogeneo 4D che differiscono solo per un fattore moltiplicativo w: V (x, y,z) corrisponde a : V (X wx,Y wy,Z = wz,w) Il passaggio dallo spazio omogeneo allo spazio 3D: x X /w y Y /w z Z /w solitamente si sceglie w=1 8 Coordinate omogenee • Lo spazio 3D può anche essere considerato come lo spazio omogeneo del piano 2D:ogni punto nel piano 2D corrisponde a infiniti punti nello spazio omogeneo 3D che differiscono solo per un fattore moltiplicativo w: V (x, y) corrisponde a : V (X wx,Y wy,w) 9 A ai , j Matrici A T a j ,i traspo sta A ai , j C A B ai , j bi , j prodotto matriciale C A B ci , j dove ci , j ai ,k bk , j n k 1 A premoltipl ica B o B postmoltip lica A (il n. di colonne della 1 deve essere al n. di righe della 2 proprietà : la somma è associativ a e commutativ a il prodotto è associativ o ma non commutativ o 1 per i j I = a i, j matrice identità 0 altrimenti AIIA A u x vettore come matrice matrice riga u u x u y u z o colonna : u T u y u z prodotto vettore matrice : v M u T oppure : v T u M 10 Trasformazione affine • una trasformazione affine preserva una combinazione baricentrica x c ia i dove : x,a i E 3 sia una mappa affine, allora : x c ia i • la combinazione baricentrica è una somma pesata di punti dello spazio affine 11 Trasformazioni affini • rappresentate con matrici • più trasformazioni possono essere combinate moltiplicando le matrici tra loro, creando una sola trasformazione • una trasformazione si ottiene in generale combinando trasformazioni lineari (rotazioni, scala e shear) seguite da una traslazione 12 Definizione degli oggetti • gli oggetti possono essere definiti in un proprio sistema di riferimento locale: • i vertici dell’oggetto sono definiti rispetto a un orientamento proprio e naturale • un oggetto complesso può essere decomposto in elementi più semplici col proprio riferimento locale e in seguito assemblato aggregando oggetti elementari • un oggetto può essere istanziato più volte • per assemblare e istanziare un oggetto si applicano le trasformazioni affini, che cambiano il riferimento locale 13 La trasformazione affine conserva le rette p(t) tp (1 t) p 0 1 Ap(t) tAp0 (1 t)Ap1 Possiamo descrivere un poliedro con i suoi vertici, facce e spigoli, questa proprietà ci garantisce che è necessario trasformare soltanto i vertici per trasformare tutto il poliedro 14 Trasformare gli oggetti • le trasformazioni agiscono sui vertici dell’oggetto • denotiamo i vertici (punti) come vettore colonna v • R, T e S sono operatori di rotazione, traslazione e scala • il punto trasformato è quindi: v’ = v + T traslazione, v’ = S v scala, v’ = R v rotazione 15 traslazione scala 16 Due parametri per la rotazione: angolo, centro di rotazione rotazione attorno all’origine rotazione attorno al centro dell’oggetto: prima traslare poi ruotare poi contro-traslare 17 La rotazione nel piano (x’,y’) (x,y) b x=rcos y= rsin x’=rcos(b)rcos cos b rsin sin b x cos b y sin b y’=rsin(b)rcos sin brsin cos b x sin by cos b 18 Traslazione, Rotazione e Scala sul piano sono espresse come trasformazioni nello spazio di coordinate omogenee 3D. Il vettore trasformato si ottiene pre-moltiplicando il vettore originale per la matrice di trasformazione: v’=T v 1 0 dx T 0 1 dy 0 0 1 sx 0 0 S 0 sy 0 0 0 1 cos R sin 0 sin 0 cos 0 0 1 19 Traslazione 1 0 dx v' 0 1 dy v 0 0 1 1 0 dx v x v' 0 1 dy v y 0 0 1 1 v ' x v x dx v' v ' y v y dy 1 20 Scala Sx v' 0 0 0 Sy 0 0 0 v 1 Sx v' 0 0 0 Sy 0 0 vx 0 v y 1 1 Sx vx v' S y v y 1 21 Rotazione cos v' sin 0 sin cos 0 0 0 v 1 cos v' sin 0 sin cos 0 0 vx 0 v y 1 1 la matrice di rotazione ha determinante pari a 1 v ' x v x cos v y sin v' v ' y v x sin v y cos 1 22 Trasformazioni conformi • Preservano relazioni angolari • Considerare punti P come numeri complessi z=x+iy • Anamorfosi conica: z’=r/z* (in cui z*=x-iy è il complesso coniugato di z) • I punti P interni al cerchio sono proiettati all’esterno in P’ a distanza r/d e riflessi rispetto all’asse x e viceversa. 23 Trasformazioni di Mœbius (Omografiche) z’ = (az+b)/(cz+d) con: ad-bc ≠ 0 al variare dei coefficienti complessi a,b,c,d si hanno: scala, rotazione, traslazione, inversione, ... 24 3D • Ambiente: spazio affine, coordinate omogenee 4D • Matrici, prodotto vettore per matrice 25 Traslazione, Rotazione e Scala espresse come trasformazioni nello spazio di coordinate omogenee 4D come prodotto tra matrici 1 0 T 0 0 0 0 Tx 1 0 1 0 Ty 0 1 v' Tv 0 1 Tz 0 0 0 0 1 0 0 x' x 0 0 Tx ) y' 0 y 0 Ty ) z' 0 0 z Tz ) w' 0 0 0 1) coord. omogenee 0 Tx x 0 Ty y 1 Tz z 0 1 1 x t x' /w' (x Tx ) /1 x Tx y t y' /w' (y Ty ) /1 y Ty z t z' /w' (z Tz ) /1 z Tz coord. cartesiane 26 Scala Sx 0 S 0 0 0 0 Sy 0 0 0 Sz 0 0 Sx 0 0 v' Sv 0 0 1 0 x ' xSx 0 0 0) y ' yS y 0 0 0) z ' zS z 0 0 0) w' 0 0 0 1) 0 0 Sy 0 0 0 Sz 0 0 x 0 y 0 z 1 1 x s x ' / w' ( xS x ) / 1 y s y ' / w' ( yS y ) / 1 z s z ' / w' ( zS z ) / 1 coord. cartesiane coord. omogenee 27 Scala 28 Matrici di rotazione occorre specificare un asse di rotazione: attorno a x, y o z: 0 1 0 cos Rx 0 sin 0 0 cos 0 Ry sin 0 0 sin 1 0 0 0 cos 0 0 0 0 1 0 sin cos 0 0 0 0 1 cos sin Rz 0 0 sin cos 0 0 0 0 0 0 1 0 0 1 29 cos sin v' R z v 0 0 sin cos 0 0 0 0 x 0 0 y 1 0 z 0 1 1 ritroviamo la rotazione sul piano z=0 ! x ' x cos y sin 0 0 ) y ' x sin y cos 0 0 ) z ' 0 0 z 0 ) w' 0 0 0 1) x Rz x ' / w' ( x cos y sin ) / 1 y Rz y ' / w' ( x sin y cos ) / 1 z Rz z ' / w' z / 1 coord. cartesiane coord. omogenee 30 31 Trasformazioni inverse • Denotiamo le inverse come: T-1, S-1, R-1. • La traslazione inversa si ottiene negando i coefficienti di traslazione • La scala inversa si ottiene prendendo il reciproco dei coefficienti • La rotazione inversa si ottiene negando l’angolo di rotazione. 32 Composizione di trasformazioni • Si possono applicare trasformazioni in successione, moltiplicando in ordine opportuno le matrici (associatività) v”=M2M1v = M2(M1v) =M2v’ – la trasf. M1 viene applicata per prima! • ricordiamo che il prodotto di rotazioni non è commutativo: R2R1 ≠ R1R2 33 • Possiamo applicare a ogni punto separatamente le matrici: p A B C q • Oppure calcolare prima la matrice M: M=C(B(A)) p M q 34 Esempio: rotazione Ө attorno a un punto p e parallela a un asse • Traslare l’oggetto nell’origine, i coefficienti della traslazione T sono riferiti al punto p • Ruotare attorno all’origine di un angolo • Traslare inversamente nel punto p M=T-1RT 35 Combiniamo le tre trasformazioni in un’unica matrice: 1 0 1 T RT 0 0 0 1 0 0 cos sin 0 0 0 p x cos sin 0 0 1 0 0 p y sin cos 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 sin 0 ( p x cos p y sin p x ) cos 0 ( p x sin p y cos p y ) 0 1 0 0 0 1 0 0 1 0 px py 0 1 36 Rotazione attorno a un punto e un asse generico 37 Struttura di una generica matrice di trasformazione In generale una trasformazione composta è organizzata: rotazione rot1,1 rot 2,1 rot 3,1 0 rot1,2 rot 2,2 rot 3,2 0 rot1,3 rot 2,3 rot 3,3 0 t x t y t z 1 traslazione 38 Cambiamento di riferimento • Le trasformazioni si possono considerare applicate agli oggetti (punti in un s.d.r.) o come cambiamento di riferimento • In questo caso si esprimono i punti p in un nuovo s.d.r. p’; es. traslazione: T21 T12 ) 1 x' 1 y' 0 z' 0 1 0 0 0 Tx x 1 0 Ty y 0 1 Tz z 0 0 1 1 39 Le trasformazioni per modellare • Da oggetti prototipo (modelli) a loro “istanze” • Tre trasformazioni nell’ordine: – Scala – Rotazione – Traslazione • Minst=T(R(S)) 40 Accumulare trasformazioni • Per modellare una scena complessa si possono accumulare trasformazioni • La scena è organizzata in una scene graph • Durante la modellazione si creano matrici di istanza, applicate a ogni singolo oggetto • Oggetti organizzati in gerarchia vengono raccolti e trasformati con nuove matrici che si accumulano sullo stack 41 Stack di matrici • Attraversando la struttura della scena si cambiano le matrici di trasformazione gestendo lo stack • Nei moderni sistemi real-time le operazioni sulle matrici di trasformazione sono gestite dall’hardware apposito nella pipeline di rendering 42 Classi di trasformazioni 43 44 45 46 47 48