Trasformazioni
Daniele Marini
1
Ambiente
•
•
•
•
•
Spazio affine
coordinate omogenee
Matrici
traslazione, scala, rotazione, shear
prodotto matrice vettore colonna (il punto)
2
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
3
Lo spazio affine
• lo spazio può essere orientato in due modi:
– mano destra: avvolgete la mano all’asse z e
puntate il pollice verso di voi, x viene a destra e
y va verso l’alto
– mano sinistra: avvolgete la mano all’asse z e
puntate il pollice verso di voi, x viene a sinistra
e y va verso l’alto
• questo definisce il world coordinate system
in cui sono definiti gli oggetti
4
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
aggragando oggetti elementari
• un oggetto può essere istanziato più volte
• per assemblare istanziare un oggetto si applicano
le trasformazioni affini, che cambiano il
riferimento locale
5
Trasformare gli oggetti
• i vertici dell’oggetto vengono trasformati
• denotiamo i vertici (punti) come vettore colonna V
• R, D e S sono rotazione, traslazione e scala
• il punto trasformato si denota:
V’=V+D traslazione, D è un vettore di traslazione
V’=SV scala, S è una matrice di scala
V’=RV rotazione, R è una matrice di rotazione
6
Richiami di geometria affine
Spazio vettoriale lineare: operazioni di somma tra vettori
Campo scalare e operazioni prodotto vettore x scalare
Spazio affine: addizione vettore - punto; l’operazione di
Sottrazione punto-punto produce un vettore
P  (x, y,z)
v  (v x ,v y ,v z )
v  v x 2  v y 2  vz 2
v  P  Q vettore come differenza di due punti
P = v  Q somma scalare - vettore : traslazione del punto di applicazione
v.u  vx 2 ux 2  vy 2 uy 2  vz 2 uz2 prodotto interno
7

u v  u v 
z y 
 y z
w  u  v  uzvx  u xv z  prodotto vettore o cross product



u xv y  uyv z 

u  v  0 sse ortogonali
 (u  v)   u   v linearità
1 u1   2 u2  ....  n un  w combinazione lineare
1 u1   2 u2  ....  n un  0 se 1   2 ..   n  0
allora ( u1,...,un ) sono lineamente indipendenti
n è la dimensione dello spazio,
(u1,...,un ) è la base dello spazio
8
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
9
Matrici
A  ai, j 
AT  a j,i 
A  ai, j 
C  A  B  ai, j  bi, j 
C  AB  c i, j  dove
n
c   a
i, j
i,k
bk, j
k1
A premoltiplica B o B postmoltiplica A
proprietà :
somma è associativa e commutativa;
prodotto è associativo ma non commutativo
 1 per i  j
I = a i,j   
matrice identità
O
altrimenti

AI  A  IA
vettore come matrice colonna
ux 
 
: uT  uy 

uz 

prodotto vettore matrice : v  uT M
10
Coordinate omogenee
Spazio delle classi di equivalenza: ogni punto in coordinate
carteziane 3D corrisponde a infiniti punti nello spazio
omogeneo 4D che differiscono solo per un fattore
moltiplicativo w:
V (x, y,z) corrisponde a :
V (wX,wY,wZ,w)
Il passaggio tra lo spazio omogeneo e lo spazio 3D:
x  X /w

y  Y /w
z  Z /w
solitamente si sceglie w=1
11

Traslazione, Rotazione e Scala
espresse come trasformazioni nello spazio
di coordinate omogenee 4D come prodotto tra matrici
1

0

T
0

0
0
1
0
0
0 Tx 

0 Ty 
1 Tz 

0 1 
x' x  0  0  Tx 
y' 0  y  0  Ty 

z' 0  0  z  Tz 
w' 0  0  0  1
coord. omogenee
1

0

V ' TV 
0

0
0
1
0
0
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
12

Scala
Sx

0

S
0

0
0
Sy
0
0
0
0
Sz
0
Sx
0


0
0

V ' SV 
0
0


1
0
x' x.Sx  0  0  0
y' y.Sy  
0  0  0
z' z.Sz  0  0  0
w' 0  0  0  1
0
Sy
0
0
0
0
Sz
0
0x 
 
0y 
0z 
 
11 
x s  x' /w' (x.Sx ) /1
y s  y' /w' (y.Sy ) /1
z s  z' / w' (z.Sz ) /1
coord. cartesiane
coord. omogenee

13
La rotazione attorno a z
(x,y)
(x’,y’)
(x’,y’)
q

(x,y)

x=rcos
y=rsin
x’=rcos(qrcos cos q rsin sin q
x cos q y sin q
y’=rsin(qrcos sin q rsin cos q
x sin qy cos q
14
Matrici di rotazione
occorre specificare un asse di rotazione: attorno a x:
1
0
0

0 cos q sin q

Rx 
0 sin q cos q

0
0
0
cos q

0

Ry 
sin q

 0
0 sin q
1
0
0 cos q
0
0
0

0
0

1
0

0
si noti il determinate
0

1
cos q sin q

sin q cos q

Rz 
 0
0

0
 0
=1
0
0
1
0
0

0
0

1
15

cos q sin q

sin q cosq

V ' RzV 
 0
0

0
 0
x' x.cos q  y.sin q  0  0
y' x.sin q  y.cos q  0  0
z' 0  0  z  0
w' 0  0  0  1
coord. omogenee

0
0
1
0
0x 
 
0y 
0z 
 
11 
x R z  x' /w' (x.cosq  y.sin q ) /1
y R z  y' /w' (x.sin q  y.cosq ) /1
z R z  z' /w' (z.1) /1
coord. cartesiane
16
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.
17
Composizione di trasformazioni
• Si possono applicare trasformazioni in
successione, moltiplicando in ordine
opportuno le matrici.
V”=M2M1V = M2(M1V) =M2V’
– la trasf. M1 viene applicata per prima!
• ricordiamo che il prodotto di rotazioni non è
commutativo: R2R1 ≠ R1R2
18
Rotazione attorno a un punto 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 q
• traslare inversamente nel punto p
M=T-1RT
19
• combinando le tre trasformazioni in
un’unica matrice:
1

0
1

T RT 
0

0
0 0  px cos q sin q

1 0  py sin q cos q
0 1 0  0
0

0 0 1  0
0
cos q sin q

sin q cos q
 0
0

0
 0
0
0
1
0
0 01

0 00
1 00

0 10
( px cos q  py sin q  px )

( px sin q  py cos q  py )

0

1

0 0
1 0
0 1
0 0
px 

py 

0 

1 
20
Rotazione attorno a un punto e a un asse generico:
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
21
Cambiamento di riferimento
• Le trasf. si possono considerare applicate
agli oggetti (punti in un s.d.r.) o come
cambiamento di riferimento
• In questo caso si esprimono i punti in un
nuovo s.d.r.; 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 
22
Vettori
• valgono le proprietà dello spazio affine
• versori: i, j, k sono i vettori di lunghezzza
unitaria che individuano gli assi cartesiani,
sono ortogonali, e formano una terna di
vettori ortonormali, una base dello spazio
cartesiano
23
Vettore normale e prodotto
vettore
• il prodotto vettore (cross product) si può
esprimere con i versori (ricordiamo che la
somma di due vettori è un vettore):
i  (1,0,0)
j  (0,1,0)
k  (0,0,1)
V  v1i  v 2 j  v 3k
W  w1i  w 2 j  w 3k
XVW
X  (v 2 w 3  v 3 w 2 )i  (v1w 3  v 3 w1 )j  (v1w 2  v 2 w1 )k
24
Vettore normale
• il risultato del prodotto vettore dà il vettore
normale al piano individuato dai due vettori
• il verso è coerente con l’orientamento scelto
(mano destra: indice e medio diretti come i
due vettori, pollice come la normale)
25
Prodotto scalare
• X=V.W =v1w1+v2w2+v3w3 è uno scalare
• se i due vettori formano un angolo , la
differenza si può esprimere come:
V  W  V  W  2V W cos
2
2
2
ma : V .W  V W cos
da cui : cos 
V .W
VW
(il coseno è il prodotto scalre normalizzato)
26
Proiezione di un vettore su un
altro
• il prodotto scalare permette di scrivere la
proiezione di un vettore su un altro; sia V
unitario, sia W il vettore dato, la sua
proiezione X ha modulo:
W
V .W
X  W cosq  W
 V .W
VW
V
X
27
Proprietà del segno
• se V.W > 0 l’angolo è < 90°
• se V.W = 0 l’angolo è = 90°
• se V.W < 0 l’angolo è > 90°
il prodotto scalare si può quindi usare per
valutare l’orientamento
28
Parametrizzare le rotazioni
29
Problema 1: “gimbal lock”
• blocco del giroscopio
• esprimiamo le rotazioni con gli angoli di
Eulero, tre angoli di rotazione attorno agli
assi coordinati (si pensi a un velivolo, yaw,
pitch, roll)
• implementiamo gli angoli di Eulero con le
matrici appena esaminate
30
• ricordiamo che le rotazioni non sono
commutative!
• eseguiamo una rotazione di yaw di 90°
• eseguiamo una rotazione di pitch o roll di 90° cosa
succede?
• abbiamo applicato la sequenza di rotazioni
R(0,0,0), ... R(pt,0,0), ..., R(p,0,0) con 0<=t<=1
• la sequenza corretta sarebbe R(0,0,0), ... R(0, pt,
pt), ..., R(0, p, p)
• ma come fare a saperlo?
(qui l’esempio)
31
Problema 2: Interpolare rotazioni
• nella animazione si richiede di modificare la
posizione di un oggetto o della camera con
traslazioni e rotazioni
• interpolare traslazioni non pone problemi
• da un fotogramma al successivo la rotazione
deve essere interpolata, è utile quindi poter
esprimere la rotazione in forma parametrica
32
• se incrementiamo di una piccola quantita’ un
angolo più volte nascono problemi di
arrotondamento
• se abbiamo rotazione attorno a un solo asse
nascono irregolarità e movimenti a scatto
• se abbiamo più rotazioni, dopo un po’ di tempo la
matrice non è più ortogonale e la scena si deforma
• si può risolvere il problema “rinormalizzando” la
matrice a ogni passo
• comunque è una soluzione costosa
33
Specificare le rotazioni
• Una matrice di rotazione generica dipende
da 9 parametri
• una rotazione generica richiede un’asse di
rotazione n e un angolo q: solo 4 parametri
(3 per il vettore, 1 per l’angolo)
• (c’è un teorema di Eulero che garantisce ciò)
34
rL
q
RrL
V
r
Rr
r||
n
il vettore r può essere scomposto in una
componente parallela a n e in una ortogonale:
r||=(n.r) xn
rL=r - (n.r) xn
la componente || resta invariata nella rotazione,
varia solo la componente L (rossa). V sia
ortogonale a rL:
V=nx rL = nxr da cui il vettore ruotato (rosso)
espresso in funzione di V:
RrL = (cos q )rL  (sin q )V
da cui :
Rr  Rr  RrL
 Rr  (cos q )rL  (sin q )V
 n.r  n  (cos q )(r  n.r  n)  (sin q )n  r
 (cos q )r  (1 cos q )n(n.r )  (sin q )n  r
35
I quaternioni
36
Numeri complessi (richiami)
I numeri complessi sono una estensione dei numeri reali e sono
indispensabili per risolvere equazioni del tipo: z=(-1)2 . Adottando
il simbolo i per denotare la radice quadrata dell'unita negativa, la
soluzione a questa equazione diventa z = ± i.
Un numero complesso z è una coppia ordinata di numeri reali. Si
può quindi rappresentare un numero complesso con la notazione
z=(x,y)
dove x rappresenta la parte reale, denotata anche con Re{z}, mentre
y rappresenta la parte immaginaria, denotata anche conIm{z}.
37
Un numero complesso si può anche rappresentare nella forma
z=x+iy (oppure z=x+jy nella teoria dei segnali). Questa forma di
rappresentazione dei numeri complessi viene anche chiamata
"forma Cartesiana". I numeri complessi possono anche essere
pensati come punti del "piano complesso", perciò i numeri
complessi possono essere considerati come un punto vista dal
quale studiare la geometria analitica del piano. Si usa anche la
rappresentazione in coordinate polari
38
Sono definite numerose operazioni tra numeri complessi, in
particolare:
somma :
z1 + z2 =(x1 + iy1)+(x2 + iy2)=(x1+x2) + i(y1+y2)
sottrazione: z1 - z2 =(x1 + iy1)-(x2 + iy2)=(x1 -x2) + i(y1 -y2)
complesso coniugato: z* = (x + iy)* = (x - iy)
Le operazioni di prodotto e divisione sono più semplici nella
forma polare, ricordando le proprietà degli esponenziali:
prodotto:
divisione:
z1 . z2 =r1 eiq1 . r2 eiq2 = r1 . r2 ei(q1q2
z1 / z2 =r1 eiq1 / r2 eiq2 = r1 / r2 ei(q1q2
39
Per convertire un numero complesso dalla forma cartesiana a
quella polare si ricorre a proprietà trigonometriche e al teorema di
Pitagora; infatti ricordiamo che:
x = r cos q; y= r sin q
ed, equivalentemente, le componenti r e q di un numero
complesso in coordinate polari si convertono in forma cartesiana
con le due equazioni:
r x y
2
2
y
q  arctan
x
40
La rappresentazione in forma polare più adeguata è basata sulla formula di
Eulero che permette di rappresentare un numero complesso come esponenziale
in base e in forma trigonometrica:
e iq  cos q  isin q
Le formule di Eulero inverse permettono di ottenere seno e coseno dalla
rappresentazione esponenziale di un numero complesso:
e iq  eiq
cosq 

2
e iq  eiq
sin q 
2i
La coppia di valori (cos q, sin q rappresenta un qualunque punto su un
cerchio di raggio unitario centrato nell'origine, al variare di q ; perciò per
individuare qualsiasi punto nel piano è sufficiente moltiplicare la forma

esponenziale per il modulo r:
z  reiq  rcosq  irsin q
41
I quaternioni
• la rotazione di un vettore r di un angolo si può
esprimere con un operatore chiamato quaternione,
caratterizzato da 4 numeri reali
• abbiamo 4 gradi di libertà invece dei 9 elementi
della matrice
• useremo quaternioni unitari
• i quaternioni possono essere considerati come una
generalizzazione dei numeri complessi, con uno
scalare s come parte reale e un vettore v come
parte immaginaria
42
• denotiamo un quaternione con:
q = s + xi + yj + zk
dove i,j,k sono i quaternioni unitari ed equivalgono
ai vettori unitari degli assi in un sistema vettoriale
e hanno le proprietà:
i2= j2= k2=ijk=-1; ij=k; ji=-k
• da queste proprietà ricaviamo le operazioni
somma e moltiplicazione
43
Operazioni sui quaternioni
• somma:
q+q’=(s+s’,v+v’)
• moltiplicazione:
qq’=(ss’-vv’, vxv’ +sv’ + s’v)
• coniugato:
q=(s,v) q*=(s,-v)
• il prodotto di un quaternione con il suo coniugato
dà il modulo del quaternione:
qq*=(ss-|v2 |)=q2
44
• quaternioni della forma: q=(s,(0,0,0)) sono
associati ai numeri reali
• quaternioni della forma: q=(s,(a,0,0)) sono
associati ai numeri complessi
• negazione:
dato q=(s,v) si ha -q=(-s,-v)
• identità moltiplicativa:
QuickTime™ and a TIFF (LZW) decompressor are needed to see this picture.
45
• inverso della moltiplicazione:
Quic kTime™ and a TIFF (LZW) decompress or are needed to see this picture.
basta verificare che:
QuickTime™ and a TIFF (LZW) decompressor are needed to see this picture.
da cui qq-1=q-1q=1
• quoziente:
QuickT ime ™an d a TIFF (L ZW) dec ompr esso r ar e need ed to see this pictur e.
46
• Se |q|=1 il quaternione è detto unitario
• L’insieme dei quaternioni unitari forma una sfera
in uno spazio a 4 dimensioni
• Si può dimostrare che se q=(s,v) allora esiste un
vettore v’ e un numero -p<q<p tale che: q=(cos
q, v’sin q
• Se q è unitario allora q=(cos q, sin qn con n
unitario
• i quaternioni non sono commutativi rispetto al
prodotto,
es:
QuickTime™ and a TIFF (LZW) decompressor are needed to see this picture.
QuickTime™ and a TIFF (LZW) decompressor are needed to see this picture.
(ricordiamo: qq’=(ss’-vv’, vxv’ +sv’ + s’v)
47
La rotazione con quaternioni
• r è definito dal quaternione p=(0,r)
• definiamo l’operatore Rq=q(.)q-1 con q
rL
quaternione unitario (s,v)
q RrL
• applicato a p l’operatore dà: qpq-1
V
Rr
r||
r
• in forma esplicita:
n
• Rq(p)=(0,(s2-v.v)r+2v(v.r)+2s(vxr)
• ricordando che: se q è unitario allora
q=(cos q, sin qn con n unitario e
sostituendo si ha:
Rq(p)=(0,(cos2q -sin2q )r+2 sin2qn(n.r)+2 cosqsinqnxr))=
(0, rcos2q +(1- cos2qn(n.r)+sin2qnxr))
48
• confrontiamo la:
(0, rcos2q +(1- cos2qn(n.r)+sin2qnxr))
• con l’equazione ricavata prima:
(cos q )r  (1 cos q )n(n.r )  (sin q )n  r
• a meno del coefficiente 2 sono identiche
• la rotazione di un vettore r di (q,n) si può quindi
attuare:
• passando allo spazio dei quaternioni
• rappresentando la rotazione con un quaternione unitario q=(cos
q/2, sin q/2n
• applicando l’operatore q(.)q-1 al quaternione (0,r)
• la rotazione si parametrizza quindi con i 4
parametri: cos q/2, sin q/2nx, sin q/2ny, sin q/2nz
49
continua ...
un po’ di link
• http://www.3dgamedev.com/articles/eulers_are_evil.htm
• http://www.gamedev.net/reference/articles/article1095.asp
• keyword per ricerca in rete: quaternion, euler angle
50
Scarica

1-trasformazioni - Università degli Studi di Milano