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
uv
cos  
angolo tra due vettori
u v
sin  
uv
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
AIIA  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 ia 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=rcos
y= rsin 
x’=rcos(b)rcos  cos b rsin  sin b
x cos b y sin b
y’=rsin(b)rcos  sin brsin  cos b
x sin by 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
Scarica

06_trasformazioni - Università degli Studi di Milano