Corso di Programmazione Grafica per il Tempo Reale Prof. Daniele Marini.
Trasformazioni Corso di Programmazione Grafica e Laboratorio Daniele Marini.
-
Upload
tiziano-rossini -
Category
Documents
-
view
217 -
download
1
Transcript of Trasformazioni Corso di Programmazione Grafica e Laboratorio Daniele Marini.
Trasformazioni
Corso di Programmazione Grafica e Laboratorio
Daniele Marini
Concetti
• Spazio affine
• Coordinate omogenee
• Matrici
• Traslazione, Scala, Rotazione, Shear
• Prodotto matrice-vettore colonna
Richiami di geometria affine
• Spazio vettoriale lineare: operazioni di somma tra vettori
• Campo scalare e operazioni prodotto vettore per scalare
• Spazio affine: addizione vettore - punto; l’operazione di sottrazione punto-punto produce un vettore
Richiami di geometria affine
product)(dot interno prodotto
neapplicazio di punto del ne traslazio:vettore-punto somma v=P
punti due di differenza come vettore
),,(
),,(
222
zzyyxx
zyx
zyx
uvuvuvuv
Q
QPv
vvvv
vvvv
zyxP
product) (cross vettoreprodotto
zyyx
zxxz
yzzy
vuvu
vuvu
vuvu
vuw
Richiami di geometria affine
uv0 sse ortogonali
(u v) u v linearità
1u1 2u2 .... nun w combinazione lineare
se 1u1 2u2 .... nun 0 vale per 1 2.. n 0
allora (u1,...,un ) sono lineamente indipendenti
n è la dimensione dello spazio, (u1,...,un ) è la base dello spazio
cos u .v
u .v angolo tra due vettori
sin u v
u . v il modulo del cross product dà il seno dell' angolo tra i due vettori
Lo 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
Trasformazioni affini
• Rappresentate tramite matrici• Più trasformazioni possono essere
combinate moltiplicando le rispettive matrici tra loro, creando una sola trasformazione
• Una trasformazione si ottiene in generale combinando trasformazioni lineari (rotazioni, scala e shear) seguite da una traslazione
Trasformazioni affini
• La trasformazione affine conserva le rette
• Possiamo descrivere un poliedro con i suoi vertici, facce e spigoli, questa proprietà ci garantisce che possiamo trasformare soltanto i vertici
p(t) tp0 (1 t) p1
Ap(t) tAp0 (1 t)Ap1
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
Trasformare gli oggetti
• Le trasformazioni agiscono sui vertici dell’oggetto
• Denotiamo i vertici (punti) come vettori colonna v
• R, T e S rappresentano gli operatori di rotazione, traslazione e scala
• Il punto trasformato è quindi:v’ = v + T traslazionev’ = S v scalav’ = R v rotazione
Coordinate omogenee
Spazio delle classi di equivalenza: ogni punto in coordinatecartesiane 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 e lo spazio 3D:
x X /w
y Y /w
zZ /w
solitamente si sceglie w=1
Coordinate omogenee
• Utilizzando le coordinate omogenee le trasformazioni necessarie alla modellazione possono essere espresse come matrici 4x4
• In particolare la traslazione viene espressa come
1 0 0
0 1 0'
0 0 1
0 0 0 1 1
x
y
z
T x
T yv Tv
T z
Traslazione
1000
100
010
001
),,()(z
y
x
zyx t
t
t
tttTtT
)1,,,()(' zzyyxx tptptp ptTp
)()(1 tTtT
Rotazione
1000
0cossin0
0sincos0
0001
)(
xR
1000
0cos0sin
0010
0sin0cos
)(
yR
1000
0100
00cossin
00sincos
)(
zRTRR 1
)()(1 ii RR
Rotazione
rotazione attornoall’origine
rotazione attorno alcentro dell’oggetto:prima traslarepoi ruotarepoi contro-traslare
Scala
1000
000
000
000
),,()(z
y
x
zyx s
s
s
sssSsS
)/1,/1,/1()(1zyx sssSsS
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.
• Nota se M è una matrice ortogonale M-1=MT
Trasformazione del corpo rigido
• Per i corpi rigidi la matrice di trasformazione può essere espressa come la concatenazione di una traslazione e una rotazione
1000
)(222120
121110
020100
z
y
x
trrr
trrr
trrr
RtTX
)()())(( 1111 tTRtTRRtTX T
Trasformazione delle normali
• La matrice M associata ad un oggetto può essere utilizzata per trasformare punti, linee e poligoni così come vettori direzione
• Per la trasformazione delle normali invece deve essere utilizzata la matrice N=(M-1)T
• Se la matrice M è ortogonale N=(MT)T=M• Se M è composta da rotazioni, traslazioni e
scale uniformi non ho problemi con le normali
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
Composizione di trasformazioni
• Possiamo applicare a ogni punto separatamente le matrici:(se ho 1000 punti devo applicare le matrici singolarmente per ognuno)
• Oppure calcolare prima la matrice M:
A B Cp q
M qp
C(B(A))
Le trasformazioni per modellare
• Da oggetti prototipo a loro “istanze”
• Tre trasformazioni nell’ordine:– Scala– Rotazione– Traslazione
• Minst=T(R(S))
Trasformazioni di Eulero
-z
y
x
head
pitch
roll
Trasformazioni di Eulero
• Le trasformazioni di Eulero sono costruite come moltiplicazione di matrici di rotazione intorno ai tre assi
• L’inversa della trasformazione può essere calcolata come
( , , ) ( ) ( ) ( )z x yh p r r p hE R R R
1 ( )T T T T Tz x y y x z
E E R R R R R R
Gimbal Lock
• Avviene quando le rotazioni sono concatenate in modo tale che un grado di libertà venga perso.
• Esempio:– rotazione di 90° intorno all’asse x – volendo ruotare intorno a z, a causa della
rotazione precedente, otterremo una rotazione intorno a y
Gimbal Lock
• Esempio
cos cos sin sin 0 cos sin sin cos
( , / 2, ) sin cos cos sin 0 sin sin cos cos
0 1 0
cos( ) 0 sin( )
sin( ) 0 cos( )
0 1 0
r h r h r h r h
E h r r h r h r h r h
r h r h
r h r h
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 • Traslare inversamente nel punto p
M=T-1RT
Rotazione intorno ad un asse generico
• Per ruotare un punto intorno ad un asse generico effettuo un cambiamento di sistema di riferimento e utilizzo le matrici di rotazione note
x
z
y
r
t
s
x
z
y
r
t
s
x
z
y
r
t
s
Rotazione intorno ad un asse generico
srt
sss
s
/
e se)0,,(
e se),0,(
e se),,0(
yzxzxy
zyxyxz
zxyxyz
rrrrrr
rrrrrr
rrrrrr
MRMX
t
s
r
M
)(xT
T
T
T