Download - Trasformazioni 2D e 3D
1
Trasformazioni 2D e 3D
Daniele MariniCon contributi di Maurizio Rossi
2
L’ambiente per le trasformazioni
• Spazio affine
• Coordinate omogenee
• Matrici
3
Richiami di geometria affine- Spazio vettoriale lineare: operazioni di somma tra vettoriCampo 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
neapplicazio di punto del ne traslazio:vettore-scalaresomma =
punti due di differenza come vettore
),,(
),,(
222
QP
QP
vvv
vvv
zyxP
zyx
zyx
+−=
++=
==
v
v
v
v
4
Richiami di geometria affine
product dot scalare), (o interno prodotto zzyyxx uvuvuv ++=⋅= uvα
5
€
w = u × v =
uyvz − uzvy
uzvx − uxvz
uxvy − uyvx
⎡
⎣
⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ prodotto vettoriale, cross product
spazio dello basela è ),...,( spazio, dello dimensionela è n
tiindipenden lineamente sono ),...,(allora
0..per vale0.... se
lineare necombinazio ....
linearità )(
ortogonali sse 0
n21n21
n21
n1
n1
n21
n21
uu
uu
uuu
wuuu
vuvu
vu
====+++
=++++=+
=×
αααααα
αααααα
6
vettoridue i tra angolodell' seno ildà product cross del modulo il
sin
vettoridue tra angolo
cos
vu
vu
vu
vu
×=
⋅=
ϑ
ϑ
7
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 la scena
8
Coordinate omogeneeSpazio 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 allo spazio 3D:
€
x = X /w
y = Y /w
z = Z /wsolitamente si sceglie w=1
9
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)
10
Matrici[ ][ ][ ]
[ ][ ] [ ]
[ ]
[ ]
MuvuMv
uu
AAIIA
I
BAC
BAC
A
A
A
TT
T
T
:oppure :matrice vettoreprodotto
:colonna o riga matrice matrice come vettore
identità matrice altrimenti 0
per 1a=
ocommutativ nonma oassociativ è prodotto il
acommutativ ea associativ èsomma la
:proprietà
2della righe di n. al essere deve 1della colonne di n. (il Alica postmoltip Bo ica Bpremoltipl A
dove matriciale prodotto
sta traspo
ji,
1,,,,
,,
,
,
,
==
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡==
==⎩⎨⎧ =
=
°=°
===
+=+=
=
=
=
∑=
z
y
x
zyx
n
kjkkijiji
jiji
ji
ij
ji
u
u
u
uuu
ji
bacc
ba
a
a
a
αα
11
Trasformazione affine• una trasformazione affine preserva una combinazione baricentrica
• la combinazione baricentrica è una somma pesata di punti dello spazio affine
€
x = c ia i dove : x,a i ∈ E 3∑Φ sia una mappa affine, allora :
Φx = c iΦa i ∑
12
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
13
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
14
p(t) =tp0 +(1−t)p1
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
La trasformazione affine conserva le rette
15
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
16
traslazione
scala
17
rotazione attornoall’origine
rotazione attorno alcentro dell’oggetto:prima traslarepoi ruotarepoi contro-traslare
Due parametri per la rotazione:angolo, centro di rotazione
18
(x,y)(x’,y’)
α
x= cosαy= sin α
y’= sin(α cos α sin sin α cos x sin y cos
x’= cos(α cos α cos sin α sin x cos y sin
La rotazione nel piano
19
⎟⎟⎟
⎠
⎞
⎜⎜⎜
⎝
⎛=
100
10
01
dy
dx
T⎟⎟⎟
⎠
⎞
⎜⎜⎜
⎝
⎛ −=
100
0cossin
0sincos
αα
αα
R
⎟⎟⎟
⎠
⎞
⎜⎜⎜
⎝
⎛=
100
00
00
sy
sx
S
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
20
Traslazione
⎟⎟⎟
⎠
⎞
⎜⎜⎜
⎝
⎛+=+=
=
⎟⎟⎟
⎠
⎞
⎜⎜⎜
⎝
⎛
⎟⎟⎟
⎠
⎞
⎜⎜⎜
⎝
⎛=
⎟⎟⎟
⎠
⎞
⎜⎜⎜
⎝
⎛=
1
'
'
1
100
10
01
100
10
01
dyvv
dxvv
v
v
dy
dx
dy
dx
yy
xx
y
x
v'
v'
vv'
21
Scala
⎟⎟⎟
⎠
⎞
⎜⎜⎜
⎝
⎛=
⎟⎟⎟
⎠
⎞
⎜⎜⎜
⎝
⎛
⎟⎟⎟
⎠
⎞
⎜⎜⎜
⎝
⎛=
⎟⎟⎟
⎠
⎞
⎜⎜⎜
⎝
⎛=
1
1
100
00
00
100
00
00
yy
xx
y
x
y
x
y
x
vS
vS
v
v
S
S
S
S
v'
v'
vv'
22
Rotazione
⎟⎟⎟
⎠
⎞
⎜⎜⎜
⎝
⎛+=−=
=
⎟⎟⎟
⎠
⎞
⎜⎜⎜
⎝
⎛
⎟⎟⎟
⎠
⎞
⎜⎜⎜
⎝
⎛ −=
⎟⎟⎟
⎠
⎞
⎜⎜⎜
⎝
⎛ −=
1
cossin'
sincos'
1
100
0cossin
0sincos
100
0cossin
0sincos
αα
αα
αα
αα
αα
αα
yxy
yxx
y
x
vvv
vvv
v
v
v'
v'
vv' la matrice di rotazioneha determinante pari a 1
23
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.
24
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, ...
25
3D
• Ambiente: spazio affine, coordinate omogenee 4D
• Matrici, prodotto vettore per matrice
26
⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜
⎝
⎛
=
1000
100
010
001
z
y
x
T
T
T
T
Traslazione, Rotazione e Scalaespresse come trasformazioni nello spaziodi coordinate omogenee 4D come prodotto tra matrici
⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜
⎝
⎛
⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜
⎝
⎛
==
1
1000
100
010
001
z
y
x
T
T
T
z
y
x
Tvv'
€
x'= x + 0 + 0 + Tx( )
y'= 0 + y + 0 + Ty( )
z'= 0 + 0 + z + Tz( )
w'= 0 + 0 + 0 +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. omogeneecoord. cartesiane
27
Scala
⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜
⎝
⎛
=
1000
000
000
000
z
y
x
S
S
S
S
⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜
⎝
⎛
⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜
⎝
⎛
==
1
1000
000
000
000
z
y
x
S
S
S
z
y
x
Svv'
( )( )( )( )1000'
000'
000'
000'
+++=
+++=
+++=
+++=
w
zSz
ySy
xSx
z
y
x
1/)('/'
1/)('/'
1/)('/'
zs
ys
xs
zSwzz
ySwyy
xSwxx
==
==
==
coord. omogeneecoord. cartesiane
28
Scala
29
Matrici di rotazione
1000
0cossin0
0sincos0
0001
⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜
⎝
⎛−
=θθθθ
xR
occorre specificare un asse di rotazione: attorno a x, y o z:
1000
0cos0sin
0010
0sin0cos
⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜
⎝
⎛ −
=θθ
θθ
yR
1000
0100
00cossin
00sincos
⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜
⎝
⎛ −
=θθθθ
zR
30
⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜
⎝
⎛
⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜
⎝
⎛ −
==
1
1000
0100
00cossin
00sincos
z
y
x
θθ
θθ
vRv' z
( )( )( )( )1000'
000'
00cossin'
00sincos'
+++=
+++=
+++=
++−=
w
zz
yxy
yxx
θθ
θθ
1/'/'
1/)cossin('/'
1/)sincos('/'
zwzz
yxwyy
yxwxx
z
z
z
R
R
R
==
+==
−==
θθθθ
coord. omogeneecoord. cartesiane
ritroviamo la rotazione sul piano z=0 !
31
32
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.
33
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
34
• Possiamo applicare a ogni punto separatamente le matrici:
• Oppure calcolare prima la matrice M:
A B Cp q
M qp
M=C(B(A))
35
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
36
Combiniamo le tre trasformazioni in un’unica matrice:
⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜
⎝
⎛+−−++−−
=
⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜
⎝
⎛
⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜
⎝
⎛ −
⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜
⎝
⎛−−
=−
1000
0100
)cossin(0cossin
)sincos(0sincos
1000
0100
010
001
1000
0100
00cossin
00sincos
1000
0100
010
001
yyx
xyx
y
x
y
x
ppp
ppp
p
p
p
p
θθθθ
θθθθ
θθ
θθ
RTT 1
37
Rotazione attorno a un punto e un asse generico
38
Struttura di una generica matrice di trasformazione
In generale una trasformazione composta è organizzata:
€
rot1,1 rot1,2 rot1,3 tx
rot2,1 rot2,2 rot2,3 ty
rot3,1 rot3,2 rot3,3 tz
0 0 0 1
⎛
⎝
⎜ ⎜ ⎜ ⎜
⎞
⎠
⎟ ⎟ ⎟ ⎟
traslazionerotazione
39
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:
( )
⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜
⎝
⎛
⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜
⎝
⎛
−−−
=
⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜
⎝
⎛
= −
1
1000
100
010
001
1
'
'
'
z
y
x
T
T
T
z
y
x
z
y
x
11221 TT
40
Le trasformazioni per modellare
• Da oggetti prototipo (modelli) a loro “istanze”• Tre trasformazioni nell’ordine:
– Scala
– Rotazione
– Traslazione
• Minst=T(R(S))
41
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
42
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
43
Classi di trasformazioni
44
45
46
47
48