Trasformazioni 2D e 3D
Daniele Marini Maurizio Rossi
Posizionare gli oggetti in una scena (modellazione) Cambiare la forma degli oggetti Creare copie multiple di istanze di oggetti Le proiezioni della camera virtuale Animazioni
Sistemi di coordinate
Le trasformazioni sono applicate ai sistemi di coordinate: Nello spazio oggetto (locale ad ogni singolo oggetto) Nel camera space (spazio vista) definito dal view frustum Nello spazio mondo World-Space (comune a tutti gli oggetti) Nello spazio schermo (che dipende dalle caratteristiche hardware)
3
[ ]
K a1n L a2 n O M K amn
[ ]
matrice trasposta ha n righe ed m colonne A T = a j ,i prodotto scalare x matrice somma di matrici prodotto matriciale
A = ai , j
C = A + B = ai , j + bi , j C = A B = ci , j
[ ]
n
AI =IA = A
i = 1..m j = 1..n
uy
u x u z o colonna : u T = u y u z
oppure : v T = u M
il significato A premoltiplica B o B postmoltiplica A (il n. di colonne della 1 deve essere = al n. di righe della 2)
5
[ ]
v2 L vn ]
P = ( x, y , z ) v = (v x , v y , v z ) v = vx2 + v y 2 + vz 2 P = v + Q somma vettore + scalare : traslazione del punto di applicazione v = P Q vettore come differenza di due punti
Prodotto scalare
Il risultato del prodotto scalare (detto anche interno o dot product) uno scalare (un numero)
Prodotto vettoriale
Il risultato del prodotto vettoriale un vettore
u y v z u z v y w = u v = u z v x u x v z prodotto vettoriale, cross product u x v y u y v z
sin =
uv u v
= v u = vx ux + v y u y + vz uz
cos = uv significato trigonometrico : valore del coseno dell' angolo tra i due vettori u v
9
10
a11 w = A v = a 21 a 31
a12 a 22 a 32
11
12
a11b11 + a12 b21 + a13b31 = a 21b11 + a 22 b21 + a 23b31 a 31b11 + a 32 b21 + a 33b31
a11b12 + a12 b22 + a13b32 a 21b12 + a 22 b22 + a 23b32 a 31b12 + a 32 b22 + a 33b32
13
Questo definisce il world coordinate system in cui sono definiti tutti gli oggetti della scena 14
Il passaggio dallo spazio omogeneo 4D allo spazio 3D: x = X /w y = Y /w z = Z /w solitamente si sceglie w=1
15 16
Trasformazioni affini
Sono 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 nellordine logico opportuno
17
Per assemblare e istanziare un oggetto si applicano le trasformazioni affini, che cambiano il riferimento locale
18
19
20
rotazione semplice attorno allorigine: 1. sufficiente una sola matrice semplice di rotazione rotazione attorno ad un punto generico: 1. prima traslare il punto al centro degli assi 2. poi ruotare 3. poi contro-traslare il punto dal centro alla sua posizione orignaria
21
(x,y)
x= cos y= sin
x= cos(+) = cos cos sin sin = x cos y sin y= sin(+) = cos sin + sin cos = x sin + y cos
22
Traslazione, Rotazione e Scala sul piano (2D) possono 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 v=R v v=S v
sin cos 0 0 0 1
Traslazione
Per traslare un punto espresso da un vettore v in una nuova posizione a distanza dx rispetto allasse x e dy rispetto allasse y
1 v' = 0 0 1 v' = 0 0 0 dx 1 dy v 0 1 0 dx v x 1 dy v y 0 1 1
1 0 dx T = 0 1 dy 0 0 1 sx 0 0 S = 0 sy 0 0 0 1
cos R = sin 0
23
24
Scala
Per scalare un punto espresso da un vettore v di un fattore Sx rispetto allasse x e Sy rispetto allasse y
Sx 0 v' = 0 S y 0 0 Sx 0 v' = 0 S y 0 0 S x vx v' = S y v y 1 0 0 v 1 0 vx 0 v y 1 1
Rotazione
Per ruotare un punto espresso da un vettore v di un angolo rispetto allorigine degli assi
cos v' = sin 0 sin cos 0 0 0 v 1
(la matrice di rotazione ha determinante pari a 1)
25
cos sin 0 v x v' = sin cos 0 v y 0 0 1 1 v ' x = v x cos v y sin v' = v ' y = v x sin + v y cos 1
26
1 a 0 0 1 0 0 0 1 1 0 0 b 1 0 0 0 1 1 a 0 b 1 0 0 0 1
28
PAUSA
29
30
3D
Per estensione dal 2D:
Ambiente: spazio affine, coordinate omogenee 4D Matrici 4D, prodotto vettore per matrice
Traslazione, Rotazione e Scala espresse come trasformazioni nello spazio di coordinate omogenee 4D come prodotto tra matrici e vettori
31 32
Traslazione 3D
Per traslare un punto espresso da un vettore v in una nuova posizione v a distanza Tx rispetto allasse x e Ty rispetto allasse y e Tz rispetto allasse z
Scala 3D
Per scalare un punto espresso da un vettore v di un fattore Sx rispetto allasse x e Sy rispetto allasse y e Sz rispetto allasse z
1 0 0 Tx 0 1 0 Ty T= 0 0 1 Tz 0 0 0 1 x'= (x + 0 + 0 + Tx )
z'= (0 + 0 + z + Tz ) w'= (0 + 0 + 0 + 1)
coord. omogenee
1 0 v' = Tv = 0 0
t
0 0 Tx x 1 0 Ty y 0 1 Tz z 0 0 1 1
Sx 0 S= 0 0
0 Sy 0 0
0 0 Sz 0
0 0 0 1
Sx 0 v' = Sv = 0 0
0 Sy 0 0
0 0 Sz 0
0 x 0 y 0 z 1 1
y'= (0 + y + 0 + Ty )
y ' = ( yS y + 0 + 0 + 0)
coord. cartesiane
33
w' = (0 + 0 + 0 + 1)
coord. cartesiane
34
Scala 3D
Matrici di rotazione 3D
Occorre specificare se la rotazione avviene attorno allasse x, y o z Le tre matrici per i tre casi sono:
0 1 0 cos Rx = 0 sin 0 0 cos 0 Ry = sin 0
35
0 sin cos 0
0 sin 1 0 0 0 cos 0
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
37 38
coord. omogenee
Trasformazioni inverse
Denotiamo le inverse come: T-1, S-1, R-1. La traslazione inversa si ottiene negando i coefficienti di traslazione: Tx ; Ty ; Tz La scala inversa si ottiene prendendo il reciproco dei coefficienti: 1/Sx ; 1/Sy ; 1/Sz La rotazione inversa si ottiene negando langolo di rotazione:
39
Composizione di trasformazioni
Si possono applicare trasformazioni in successione, moltiplicando in ordine opportuno le matrici (vale lassociativit)
v=M2M1v = M2(M1v) =M2v la trasf. M1 quella applicata per prima nellordine logico!!
ricordiamo che il prodotto di matrici non commutativo: R2R1 R1R2 quindi lordine delle moltiplicazioni importante !! 40
42
Esercizio
Una figura geometrica 2D definita in termini di coordinate (x,y). Vogliamo traslarla di 5 unit lungo l'asse x e 3 unit lungo l'asse y. Dopo questa traslazione vogliamo raddoppiarne le dimensioni lungo l'asse x e triplicarle lungo l'asse y. Come si ottiene la matrice di trasformazione M in coordinate omogenee 3D che consente di realizzare entrambe queste trasformazioni? Determinarla numericamente.
43 44
Soluzione
Sx S=0 0
0 0 2 0 0 Sy 0 = 0 3 0 0 1 0 0 1
kx, ky, kz sono le componenti cartesiane del vettore unitario c = cos s = sen Formula di Rodriguez
2 0 0 1 0 5 2 0 2 5 2 0 10 M = 0 3 0 0 1 3 = 0 3 3 3 = 0 3 9 0 0 1 0 0 1 0 0 1 0 0 1
45
46
0 0 Tx x 1 0 Ty y 0 1 Tz z 0 0 1 1
47
Minst=T(R(S))
48
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
49
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 dallhardware apposito nella pipeline di rendering
50