fondamenti di grafica 3d sistemi di riferimento e...
TRANSCRIPT
Fondamenti di Grafica 3D Sistemi di riferimento e
trasformazioni [email protected]
http://vcg.isti.cnr.it/~cignoni
Introduzione
v Punti e vettori sono due cose diverse v Basi e sistemi di riferimento
(coordinate systems and frames) v Coordinate omogenee v Trasformazioni Affini
Punti e vettori
v Punto v Entità il cui unico attributo è la sua
posizione rispetto ad un sistema di riferimento
v Vettore v Entità i cui attributi sono lunghezza
direzione
v Spesso si visualizza un punto come un vettore dall’origine a quel punto: pericoloso. Sono oggetti diversi.
Spazio Vettoriale
v Spazio dove ci sono due entità v scalari v vettori
v Operazioni: v Somma e moltiplicazione tra scalari v Somma vettore-vettore v Moltiplicazione scalare-vettore
wvu ,,γβα ,,
Spazio Vettioriale
v Altre operazioni utili che assumo vi ricordiate: v Prodotto scalare
vettorexvettore -> scalare v (aka dot product)
v Prodotto vettore vettorexvettore -> vettore
v (aka cross product)
Spazio affine
v Spazio dove ci sono tre entità v Scalari, v vettori, v punti
v Operazioni: v Quelle di uno spazio vettoriale v Somma punto:vettore-> punto v Sottrazione punto:punto -> vettore
wvu ,,γβα ,,
RQP ,,
QvP +=
QPv −=
Sistemi di coordinate
v In uno spazio vettoriale 3d si può rappresentare univocamente un vettore w in termini di tre vettori linearmente indipendenti; I tre vettori usati sono una base di quello spazio
332211 vvvw ααα ++=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
=
3
2
1
α
α
α
a⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
=
3
2
1
vvv
w Ta
},,{ 321 vvv
Sistemi di riferimento
v Una base (tre vettori, linearmente indipendenti) non basta per definire la posizione di un punto.
v Occorre anche un punto di riferimento, l’origine.
Sistemi di riferimento
v Un frame (sistema di riferimento) necessita quindi di un punto di origine P0 e di una base. In esso si può rappresentare univocamente un punto
v Nota: bastano tre scalari per rappresentare un punto, come per un vettore…
3322110 vvvPP ηηη +++=
Cambio sistemi di coordinate 1
v In uno spazio vettoriale, date due basi.
v Esprimiamo una in termini dell’altra:
v Questo definisce la matrice 3x3 M di cambiamento di base
{ } { }321321 ,,,, uuuvvv
3332321313
3232221212
3132121111
vvvuvvvuvvvu
γγγ
γγγ
γγγ
++=
++=
++=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
=
333231
232221
131211
γγγ
γγγ
γγγ
M⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
3
2
1
3
2
1
vvv
uuu
M
Cambio sistemi di coordinate 2
v Dato un vettore w
v Ne ottengo la sua rappresentazione nell’altro sistema di coordinate usando la matrice M
332211 vvvw ααα ++=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
=
3
2
1
α
α
α
a⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
=
3
2
1
vvv
w Ta
332211 uuuw βββ ++=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
=
3
2
1
β
β
β
b bMa T=
Cambio sistemi di coordinate 3
v Nota che si sta parlando di vettori e non di punti
v Questi cambi di base lasciano l’origine immutata (cambiano vettori)
v In altre parole rappresentano solo rotazioni e scalature.
v Un cambio di sistema di riferimento coinvolge anche un cambio del punto di origine.
Coordinate Omogenee
v Per definire un frame bastano tre vettori ed un punto.
0332211 PvvvP +++= ααα
},,,{ 0321 Pvvv
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
0
3
2
1
321 ]1[
Pvvv
P ααα⎩⎨⎧
∅=⋅
=⋅
PPP
01
Coordinate Omogenee
v Si dice che un punto P è rappresentato dalla matrice colonna p
v E un vettore w è rappresentato dalla matrice colonna a
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
13
2
1
α
α
α
p
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
03
2
1
δ
δ
δ
a
Cambio di Frame
v Dati due sistemi di riferimento.
v Esprimiamo uno in termini dell’altro:
v Questo definisce la matrice 4x4 di cambiamento di frame
{ } { }03210321 ,,,,,, QuuuPvvv
03432421410
3332321313
3232221212
3132121111
PvvvQvvvuvvvuvvvu
+++=
++=
++=
++=
γγγ
γγγ
γγγ
γγγ
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
1000
434241
333231
232221
131211
γγγ
γγγ
γγγ
γγγ
M
Cambio di Frame
v La matrice di cambiamento di frame
v Date le due rappresentazioni a,b in coordinate omogenee in differenti frame (sia di un vettore che di un punto), vale:
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
0
3
2
1
0
3
2
1
Pvvv
Quuu
M
bMaabb TTTT
Pvvv
Pvvv
M
Quuu
=⇒
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
0
3
2
1
0
3
2
1
0
3
2
1
Trasformazioni Affini
v Funzioni che prendono un punto (o un vettore) e lo mappano in un altro punto (o vettore)
v Lavorando in coord omogenee
v Ci interessano trasformazioni che siano lineari
)()(uvpq
ff
=
=
)()()( qfpfqpf βαβα +=+
Trasformazioni affini
v Preservano la colinearita’ v Tutti i punti inizialmente su una linea
giacciono ancora su di una linea dopo la trasformazione
E v I rapporti tra le distanze
v Il punto di mezzo di un segmento rimane il punto di mezzo di un segmento anche dopo la trasformazione.
Trasformazioni Affini
v Dato un punto ed una sua rappresentazione Ogni trasformazione lineare trasforma il punto nel punto che ha la stessa rappresentazione ma in un altro sistema di coordinate.
)()()()()( 0332211 PfvfvfvfPf +++= ααα
0332211 PvvvP +++= ααα
Trasformazioni Affini
v quindi può sempre essere scritta in termini del rapporto che lega i due sistemi di riferimento
v v=Au v Se A è non singolare una trasf affine
corrisponde ad un cambio di coordinate
Trasformazioni Affini
v In coordinate omogenee la matrice A deve anche lasciare immutata la quarta componente della rappresentazione
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
100034333231
24232221
14131211
αααα
αααα
αααα
A
Trasformazioni Affini
v Notare che se u è un vettore solo 9 elementi di A sono usati nella trasformazione
v La quarta colonna corrisponde alla quarta riga della matrice di cambiamento di frame, che conteneva il nuovo punto di origine del frame (che chiaramente non serve se si parla di vettori)
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
010003
2
1
34333231
24232221
14131211
γ
γ
γ
αααα
αααα
αααα
Au
Trasformazioni Affini
v Preservano le linee v Consideriamo una linea espressa nella forma
parametrica
v Consideriamone la sua rapp. in coordinate omogenee
v A è una trasformazione affine
dPP αα += 0)(
dpp αα += 0)(
dAApAp αα += 0)(
Esercizio
v Considerando che una trasformazione affine puo’ essere pensata come un cambio di frame, come è fatta una matrice T che trasforma un punto spostandolo di un certo vettore Q?
Coordinate Omogenee
v Si dice che un punto P è rappresentato dalla matrice colonna p
v E un vettore w è rappresentato dalla matrice colonna a
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
13
2
1
α
α
α
p
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
03
2
1
δ
δ
δ
a
Trasformazioni Affini
v Notare che se u è un vettore solo 9 elementi di A sono usati nella trasformazione
v La quarta colonna corrisponde alla quarta riga della matrice di cambiamento di frame, che conteneva il nuovo punto di origine del frame (che chiaramente non serve se si parla di vettori)
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
010003
2
1
34333231
24232221
14131211
γ
γ
γ
αααα
αααα
αααα
Au
Traslazione
v modifica i punti di un frame sommando a tutti i punti un vettore di spostamento d
dPP +=ʹ′
dpp' +=
Traslazione
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
ʹ′
ʹ′
ʹ′
=ʹ′
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
011z
y
x
dzyx
zyx
α
α
α
ppdpp' +=
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
==ʹ′
1000100010001
z
y
x
α
α
α
TTpp
Traslazione
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
1000100010001
),,(z
y
x
zyx α
α
α
αααT
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
−
−
−
−−−=−
1000100010001
),,(),,(1z
y
x
zyxzyx α
α
α
αααααα TT
Rotazione
v Caso semplice asse z, intorno all’origine, di un’angolo θ
)sin()cos(
sincos
θφρ
θφρ
φρ
φρ
+=ʹ′
+=ʹ′
=
=
yxyx
θ
ρ
(x’,y’)
(x,y)
Rotazione
θθθφρθφρ
θθθφρθφρ
φρ
φρ
cossincossinsincossincossinsincoscos
sincos
yxyyxx
yx
+=+=ʹ′
−=−=ʹ′
=
=
⎥⎦
⎤⎢⎣
⎡⎥⎦
⎤⎢⎣
⎡ −=⎥
⎦
⎤⎢⎣
⎡ʹ′
ʹ′
yx
yx
θθ
θθ
cossinsincos
Rotazioni
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
+=
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
ʹ′
ʹ′
ʹ′
1
cossinsin-cos
1
)(
1zyxyx
zyx
Rzyx
Z
θθ
θθ
θ
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
1000010000cossin00sin-cos
)(θθ
θθ
θ ZR
Rotazioni
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
10000cossin00sin-cos00001
)(θθ
θθθ XR
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
10000cos0sin-00100sin0cos
)(θθ
θθ
θ YR
Rotazioni
v Le matrici di rotazione viste finora sono facilmente invertibili
v Quindi basta trasporre…
)()(
)cos()cos()sin()sin()()(
1
1
θθ
θθ
θθ
θθ
TRR
RR
=
=−
−=−
−=
−
−
Rotazioni Complesse
v Rotazioni centrate non sull’origine v Rotazioni su assi diversi da quelli
principali
v Si ottengono per composizione di trasformazioni
Scaling
v Non rigida v Non uniforme lungo gli assi v Solo centrata rispetto
all’origine
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
=
=
=
1000000000000
),,(
'
''
z
y
x
Xzyx
z
y
x
S
zzyyxx
β
β
β
βββ
β
β
β