Fondamenti di Grafica 3D
Sistemi di riferimento e trasformazioni
paolo.cignoni@isti.cnr.it 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 w
v u ,,
γ β α, ,
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 w
v u ,,
γ β α, ,
R Q P ,,
Q v
P = + Q P
v = −
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
3 3 2
2 1
1v v v
w =α +α +α
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
=
3 2 1
α α α a
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
=
3 2 1
v v v w aT }
, ,
{v1 v2 v3
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…
3 3 2
2 1
1
0 v v v
P
P = +η +η +η
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
{
v1,v2,v3} {
u1,u2,u3}
3 33 2
32 1
31 3
3 23 2
22 1
21 2
3 13 2
12 1
11 1
v v
v u
v v
v u
v v
v u
γ γ
γ
γ γ
γ
γ γ
γ
+ +
=
+ +
=
+ +
=
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
=
33 32
31
23 22
21
13 12
11
γ γ
γ
γ γ
γ
γ γ
γ M
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
=
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
3 2 1
3 2 1
v v v
u u u
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
3 3 2
2 1
1v v v
w =α +α +α
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
=
3 2 1
α α α a
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
=
3 2 1
v v v w aT
3 3 2
2 1
1u u u
w = β + β + β
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢
⎣
⎡
=
3 2 1
β β β
b a = MTb
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.
0 3
3 2
2 1
1v v v P
P =α +α +α + } ,
, ,
{v1 v2 v3 P0
⎥⎥
⎥⎥
⎦
⎤
⎢⎢
⎢⎢
⎣
⎡
=
0 3 2 1
3 2
1 1]
[
P v v v P α α α
⎩⎨
⎧
∅
=
⋅
=
⋅ P
P P
0 1
Coordinate Omogenee
v Si dice che un punto P è
rappresentato dalla matrice colonna p
v E un vettore w è rappresentato dalla matrice colonna a
⎥⎥
⎥⎥
⎦
⎤
⎢⎢
⎢⎢
⎣
⎡
=
1
3 2 1
α α α p
⎥⎥
⎥
⎥
⎦
⎤
⎢⎢
⎢
⎢
⎣
⎡
= 0
3 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
{
v1,v2,v3,P0} {
u1,u2,u3,Q0}
0 3
43 2
42 1
41 0
3 33 2
32 1
31 3
3 23 2
22 1
21 2
3 13 2
12 1
11 1
P v
v v
Q
v v
v u
v v
v u
v v
v u
+ +
+
=
+ +
=
+ +
=
+ +
=
γ γ
γ
γ γ
γ
γ γ
γ
γ γ
γ
⎥
⎥⎥
⎥
⎦
⎤
⎢
⎢⎢
⎢
⎣
⎡
=
1 0 0 0
43 42
41
33 32
31
23 22
21
13 12
11
γ γ
γ
γ γ
γ
γ γ
γ
γ γ
γ 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
P v v v
Q u u u
M
b M a
a b
bT T T T
P v v v
P v v v M Q
u u u
=
⇒
⎥
⎥⎥
⎥
⎦
⎤
⎢
⎢⎢
⎢
⎣
⎡
=
⎥
⎥⎥
⎥
⎦
⎤
⎢
⎢⎢
⎢
⎣
⎡
=
⎥
⎥⎥
⎥
⎦
⎤
⎢
⎢⎢
⎢
⎣
⎡
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
) (
) (
u v
p q
f f
=
=
) ( )
( )
( p q f p f q
f α + β =α + β
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.
) ( )
( )
( )
( )
(P 1 f v1 2 f v2 3 f v3 f P0
f =α +α +α +
0 3
3 2
2 1
1v v v P
P =α +α +α +
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
⎥⎥
⎥⎥
⎦
⎤
⎢⎢
⎢⎢
⎣
⎡
=
1 0
0 0
34 33
32 31
24 23
22 21
14 13
12 11
α α
α α
α α
α α
α α
α α
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)
⎥⎥
⎥⎥
⎦
⎤
⎢⎢
⎢⎢
⎣
⎡
⎥⎥
⎥⎥
⎦
⎤
⎢⎢
⎢⎢
⎣
⎡
=
0 1
0 0
0
3 2 1
34 33
32 31
24 23
22 21
14 13
12 11
γ γ γ
α α
α α
α α
α α
α α
α α
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 d
P
P(α) = 0 +α
d p
p(α) = 0 +α
d A Ap
Ap(α) = 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
⎥⎥
⎥⎥
⎦
⎤
⎢⎢
⎢⎢
⎣
⎡
=
1
3 2 1
α α α p
⎥⎥
⎥
⎥
⎦
⎤
⎢⎢
⎢
⎢
⎣
⎡
= 0
3 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)
⎥⎥
⎥⎥
⎦
⎤
⎢⎢
⎢⎢
⎣
⎡
⎥⎥
⎥⎥
⎦
⎤
⎢⎢
⎢⎢
⎣
⎡
=
0 1
0 0
0
3 2 1
34 33
32 31
24 23
22 21
14 13
12 11
γ γ γ
α α
α α
α α
α α
α α
α α
Au
Traslazione
v modifica i punti di un frame sommando a tutti i punti un vettore di spostamento d Pʹ′ = P + d
d p
p'= +
Traslazione
⎥⎥
⎥⎥
⎦
⎤
⎢⎢
⎢⎢
⎣
⎡
=
⎥⎥
⎥⎥
⎦
⎤
⎢⎢
⎢⎢
⎣
⎡
ʹ′
ʹ′
ʹ′
ʹ′ =
⎥⎥
⎥⎥
⎦
⎤
⎢⎢
⎢⎢
⎣
⎡
=
0 1
1
z y x
z d y x
z y x
α α α p
d p p
p'= +
⎥⎥
⎥⎥
⎦
⎤
⎢⎢
⎢⎢
⎣
⎡
= ʹ′ =
1 0
0 0
1 0
0
0 1
0
0 0
1
z y x
α α α T
Tp p
Traslazione
⎥⎥
⎥⎥
⎦
⎤
⎢⎢
⎢⎢
⎣
⎡
=
1 0
0 0
1 0
0
0 1
0
0 0
1 )
, , (
z y x
z y
x α
α α α
α T α
⎥⎥
⎥⎥
⎦
⎤
⎢⎢
⎢⎢
⎣
⎡
−
−
−
−
−
−
− =
1 0
0 0
1 0
0
0 1
0
0 0
1 ) ,
, (
) ,
,
1(
z y x
z y
x z
y
x α
α α α
α α
α α
α T
T
Rotazione
v Di una rotazione si deve specificare
v angolo, v asse
v punto di
applicazione
Rotazione
v Caso semplice asse z, intorno all’origine, di un’angolo θ
) sin(
) cos(
sin cos
θ φ
ρ
θ φ
ρ
φ ρ
φ ρ
+ ʹ′ =
+ ʹ′ =
=
=
y x y x
θ ρ
(x’,y’) (x,y)
Rotazione
θ θ
θ φ
ρ θ
φ ρ
θ θ
θ φ
ρ θ
φ ρ
φ ρ
φ ρ
cos sin
cos sin
sin cos
sin cos
sin sin
cos cos
sin cos
y x
y
y x
x y x
+
= +
ʹ′ =
−
=
− ʹ′ =
=
=
⎥⎦
⎢ ⎤
⎣
⎥⎡
⎦
⎢ ⎤
⎣
⎡ −
⎥ =
⎦
⎢ ⎤
⎣
⎡
ʹ′
ʹ′
y x y
x
θ θ
θ θ
cos sin
sin cos
Rotazioni
⎥⎥
⎥⎥
⎦
⎤
⎢⎢
⎢⎢
⎣
⎡
= +
⎥⎥
⎥⎥
⎦
⎤
⎢⎢
⎢⎢
⎣
⎡
=
⎥⎥
⎥⎥
⎦
⎤
⎢⎢
⎢⎢
⎣
⎡
ʹ′
ʹ′
ʹ′
1
cos sin
sin -
cos
1 )
( 1
z y x
y x
z y x z R
y x
Z
θ θ
θ θ
θ
⎥⎥
⎥⎥
⎦
⎤
⎢⎢
⎢⎢
⎣
⎡
=
1 0
0 0
0 1
0 0
0 0
cos sin
0 0
sin - cos
)
( θ θ
θ θ
θ Z R
Rotazioni
⎥⎥
⎥⎥
⎦
⎤
⎢⎢
⎢⎢
⎣
⎡
=
1 0
0 0
0 cos
sin 0
0 sin
- cos
0
0 0
0 1
)
( θ θ
θ θ X θ
R
⎥⎥
⎥⎥
⎦
⎤
⎢⎢
⎢⎢
⎣
⎡
=
1 0
0 0
0 cos
0 sin
-
0 0
1 0
0 sin
0 cos
)
( θ θ
θ θ
θ Y R
Rotazioni
v Le matrici di rotazione viste finora sono facilmente invertibili
v Quindi basta trasporre…
) ( )
(
) cos(
) cos(
) sin(
) sin(
) (
) (
1 1
θ θ
θ θ
θ θ
θ θ
RT
R
R R
=
=
−
−
=
−
−
=
−
−
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
⎥⎥
⎥⎥
⎦
⎤
⎢⎢
⎢⎢
⎣
⎡
=
=
=
=
1 0
0 0
0 0
0
0 0
0
0 0
0 )
, ,
( '
' '
z y
x
X z y
x z
y x
S
z z
y y
x x
β β
β β
β β
β β β
Object Frame
v Perché ogni oggetto ha il suo sistema di riferimento?
v Uso Multiplo di uno stesso oggetto v Posizione parametrica