Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione,...

40
Le trasformazioni Daniele Marini

Transcript of Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione,...

Page 1: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

Le trasformazioni

Daniele Marini

Page 2: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

2

Concetti

• Spazio affine• Coordinate omogenee• Matrici• Traslazione, Scala, Rotazione, Shear

• Prodotto matrice-vettore colonna

Page 3: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

3

Richiami di geometria affine

• Spazio vettoriale lineare: operazioni di somma tra vettori

• Campo scalare e operazioni prodotto vettore per scalare

• Spazio affine, due nuove operazioni: – addizione vettore - punto; – sottrazione punto-punto

Page 4: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

4

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

++=⋅

+

−=

++=

=

=

w = u × v =

uyvz − uzvy

uzvx − uxvz

uxvy − uyvx

⎢ ⎢ ⎢

⎥ ⎥ ⎥ prodotto vettore (cross product)

Page 5: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

5

Richiami di geometria affine

u×v=0 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

Page 6: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

6

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

Page 7: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

7

Trasformazioni affini• La trasformazione affine conserva le rette, sia A una generica trasformazione, scriviamo in funzione del parametro t un segmento tra i punti p0 , p1

• Siccome descriviamo poliedri mediante i vertici, le facce e gli spigoli, questa proprietà ci garantisce che possiamo trasformare soltanto i vertici: la relazione lineare tra punti e la topologia della struttura non cambiano.

p(t) =tp0 +(1−t)p1

Ap(t) =tAp0 +(1−t)Ap1

Page 8: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

8

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 una scena e istanziare più oggetti si applicano le trasformazioni affini, che cambiano il riferimento locale

Page 9: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

9

Tipi di oggetti base

• Punti– E’ definita l’operazioni di differenza tra punti: produce un vettore

• Vettori, corrispondono all’entità linea– Sono definite le operazioni sopra ricordate

• Sono definite le operazioni tra punti e vettori sopra ricordate

Page 10: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

10

Tipi di oggetti base - 2

• Piani: estensione della rappresentazione parametrica della retta; t,w sono parametri, P, Q ed R sono tre punti, con i quali possiamo identificare un piano; la retta tra P,Q si può scrivere:

S(t)=tP+(1-t)Q • la retta tra S e R si può ora scrivere:

V(w)=wS+(1-w)R• Combinando le due equazioni:

V(t,w)=w(tP+(1-t)Q)+(1-w)R

Page 11: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

11

Tipi di oggetti base - 3

• Questa può essere considerata come equazione del piano per i tre punti P,Q,R:

V(t,w)=P+w(1-t)(Q-P)+(1-w)(R-P)• Q-P ed R-P sono due vettori u v, da cui

V(t,w)=P+tu+wv• Il piano può anche essere definito da un punto e

due vettori non paralleli.• Se 0≤t≤1 e 0≤w≤1 tutti i punti di V(t,w) sono

interni al triangolo PQR• Il vettore ortogonale a u e v è n=uxv quindi

l’equazione del piano può anche essere scritta come:

n.(P-Q)=0

Page 12: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

12

Sistemi di coordinate e sistemi di riferimento

(frame)• Quanto detto fin’ora è indipendente da uno specifico sistema di coordinate

• La definizione di una base di vettori linearmente indipendenti e unitari permette di identificare un sistema di coordinate

• Se definiamo i tre versori con una medesima origine identifichiamo un sistema di riferimento (frame)

Page 13: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

13

Un frame standard• 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

• In OGL sono definiti molti frames:– Object o model frame– World frame– Eye (camera) frame– Clip coordinates– Normalized device coordinates– Window (screen) coordinates

• Il passaggio da un frame all’altro avviene tramite trasformazioni

Page 14: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

14

Cambiamento di riferimento

• Un cambiamento del sistema di riferimento consiste nel cambiare la base di vettori ortonormali

• La nuova base può essere espressa come combinazione lineare della vecchia base:– Vecchia base: v1v2v3

– Nuova base: u1u2u3

u1=a11v1+a12v2+a13v3

u2=a21v1+a22v2+a23v3

u3=a31v1+a32v2+a33v3

• aij sono i coefficienti delle combinazioni lineari per esprimere la nuova base in funzione della vecchia

• Le equazioni non sono altro che il risultato del prodotto della matrice dei coefficienti per la vecchia base

Page 15: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

15

Cambiamenti di riferimento

• Questi cambiamenti di riferimento lasciano invariata l’origine: se vogliamo traslare l’origine, non possiamo rappresentare il cambiamento con una matrice di 3x3 elementi.

• I cambiamenti di base possibili in questo modo sono quindi solo: rotazioni o scala (o shear)!

Page 16: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

16

Classi di trasformazioni

Page 17: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

17

Trasformare gli oggetti• Le trasformazioni agiscono trasformando i vertici dell’oggetto nel sistema di riferimento originale, o come cambiamento di sistema di riferimento

• 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

Page 18: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

18

Coordinate omogenee

Spazio di 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 /w

solitamente si sceglie w=1

Page 19: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

19

Coordinate omogenee• In alto: il generico

punto (x,y,z) in coordinate omogenee corrisponde a un unico punto sul piano z=1

• In basso: l’operazione di somma in coordinate omogenee dei vettori u,v genera il vettore con estremo in R, che corrisponde anche alla somma in coordinate omogenee dei punti P, Q.

Page 20: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

20

Coordinate omogenee

• Utilizzando le coordinate omogenee le trasformazioni necessarie alla modellazione possono essere espresse come matrici 4x4, e l’applicazione di una trasformazione a un punto si riduce a un prodotto vettore-matrice

• In particolare la traslazione viene espressa come1 0 0

0 1 0'

0 0 1

0 0 0 1 1

x

y

z

T x

T yv Tv

T z

⎛ ⎞ ⎛ ⎞⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟= = ⋅⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟⎝ ⎠ ⎝ ⎠

Page 21: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

21

Traslazione

⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜

==

1000

100

010

001

),,()(z

y

x

zyx t

t

t

tttTtT

)1,,,()(' zzyyxx tptptp +++=⋅= ptTp

)()(1 tTtT −=−

Page 22: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

22

Rotazione

⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜

⎛−

=

1000

0cossin0

0sincos0

0001

)(φφ

φφφxR

Ry (φ) =

cosφ 0 −sinφ 0

0 1 0 0

sinφ 0 cosφ 0

0 0 0 1

⎜ ⎜ ⎜ ⎜

⎟ ⎟ ⎟ ⎟

⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜

⎛ −

=

1000

0100

00cossin

00sincos

)(φφ

φφ

φzRTRR =−1

)()(1 φφ −=−ii RR

Page 23: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

23

Rotazione

rotazione attornoall’origine

rotazione attorno alcentro dell’oggetto:prima traslarepoi ruotarepoi contro-traslare

Page 24: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

24

Scala

⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜

==

1000

000

000

000

),,()(z

y

x

zyx s

s

s

sssSsS

)/1,/1,/1()(1zyx sssSsS =−

Page 25: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

25

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.

• Le trasformazioni sono invertibili salvo la scala 0!

• Nota se M è una matrice ortogonale M-1=MT

Page 26: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

26

Trasformazione generica rigida (niente scala!)

• Una trasformazione rigida generica 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

Page 27: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

27

Trasformazione delle normali

• La matrice M associata ad un oggetto può essere utilizzata per trasformare punti, linee e poligoni o generici vettori associati a punti di un piano.

• Però per la trasformazione delle normali deve essere utilizzata la matrice (M-1)T

• Per capire la ragione notiamo che se n è la normale a un piano e v è un vettore sul piano allora nTv=0, ma questa equazione si può scrivere considerando la matrice di trasformazione M: nTM-

1Mv=0;• Ovvero: nTM-1 è la trasposta del vettore normale

trasformato• Quindi la normale trasformata è la sua anti-

trasposta: (M-1)Tn

Page 28: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

28

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

Page 29: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

29

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

Page 30: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

30

Le trasformazioni per modellare

• Da oggetti prototipo a loro “istanze”

• Tre trasformazioni nell’ordine:– Scala– Rotazione– Traslazione

• Minst=T(R(S))

Page 31: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

31

Rotazioni:Metodo di Eulero

-z

y

x

Yaw - imbardata

Pitch - beccheggio

Roll - rollio

Page 32: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

32

Metodo di Eulero

• Il metodo di Eulero costruisce le trasformazioni come moltiplicazione di matrici di rotazione intorno ai tre assi

• L’inversa della trasformazione può essere calcolata come

• Purtoppo la rotazione non è commutativa: R1R2≠R2R1

( , , ) ( ) ( ) ( )z x yh p r r p h=E R R R

1 ( )T T T T Tz x y y x z

− = = =E E R R R R R R

Page 33: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

33

Rotazione di Eulero

• Sviluppiamo la concatenazione delle tre trasformazioni (scriviamo le matrici 3x3 per semplicità)

( , , ) ( ) ( ) ( )z x yh p r r p h=E R R R

cosrcosh − sin rsin psinh −sin rcos p cosrsin h + sin rsin pcosh

sin rcosh + corssin psin h cosrcos p sinrsin h − corsin pcosh

−cos psinh sin p cos pcosh

⎜ ⎜ ⎜

⎟ ⎟ ⎟

Page 34: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

34

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 pM=T-1RT

Page 35: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

35

Rotazione intorno ad un asse generico

• Un altro modo per risolvere il problema è di considerare la rototraslazione nell’origine come un cambiamento di sistema di riferimento, cioè di base ortonormale, eseguendo quindi la rotazione attrono al nuovo asse, ad esempio x.

x

z

y

r

t

s

x

z

y

r

t

s

x

z

y

r

t

s

Page 36: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

36

Cambiamento di base

• Sia r l’asse di rotazione desiderato, troviamo due nuovi versori ortogonali ad r che definiscono un nuovo riferimento.

• Per trovare il primo vettore ortogonale a r moltiplico r per uno dei versori del frame originale ex|y|z : ci sono due casi possibili: il nuovo vettore è parallelo a r oppure è ortogonale sia ad r sia ad ex|y|z ad es:

• r x ex = r x (1,0,0)T=(0,rz,-ry)=v

Page 37: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

37

Cambiamento di riferimento

• Moltiplicando scalarmente il nuovo vettore trovato v.v, se è nullo r e ex sono paralleli, si cerca un altro vettore ortogonale a r ey|z

• Il vettore trovato sia s• Il terzo vettore ortogonale a r ed s si determina con il prodotto vettore tra i due

Page 38: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

38

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

=

⎟⎟⎟

⎜⎜⎜

=

• Il test per valutare il parallelismo tra r ed ex|y|z può essere semplificato come qui indicato

• Si noti che essendo M ortogonale, la sua inversa è MT

Page 39: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

39

Gimbal Lock(blocco del giroscopio)

• Gimbal lock avviene quando le rotazioni sono concatenate in modo tale che un grado di libertà viene perso, ad es quando due assi di rotazione del giroscopio vengono a coincidere.

• Esempio:– rotazione di 90° intorno all’asse z

– volendo ruotare ora intorno a x, a causa della rotazione precedente, otterremo una rotazione intorno a y

Page 40: Le trasformazioni Daniele Marini. 2 Concetti Spazio affine Coordinate omogenee Matrici Traslazione, Scala, Rotazione, Shear Prodotto matrice-vettore colonna.

40

Gimbal Lock

• Se eseguiamo una rotazione di 90° attorno a y otteniamo:

• Abbiamo perso un grado di libertà!

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

π− +⎛ ⎞

⎜ ⎟= + −⎜ ⎟⎜ ⎟⎝ ⎠

+ +⎛ ⎞⎜ ⎟= + − +⎜ ⎟⎜ ⎟⎝ ⎠