Fondamenti di Grafica 3D Sistemi di riferimento e...

38
Fondamenti di Grafica 3D Sistemi di riferimento e trasformazioni [email protected] http://vcg.isti.cnr.it/~cignoni

Transcript of Fondamenti di Grafica 3D Sistemi di riferimento e...

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 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(

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

β

β

β

βββ

β

β

β

Object Frame

v Perché ogni oggetto ha il suo sistema di riferimento? v Uso Multiplo di uno stesso oggetto v Posizione parametrica