Trasformazioni 2D e 3D

48
1 Trasformazioni 2D e 3D Daniele Marini Con contributi di Maurizio Rossi

description

Trasformazioni 2D e 3D. Daniele Marini Con contributi di Maurizio Rossi. L’ambiente per le trasformazioni. Spazio affine Coordinate omogenee Matrici. Richiami di geometria affine. - Spazio vettoriale lineare: operazioni di somma tra vettori - PowerPoint PPT Presentation

Transcript of Trasformazioni 2D e 3D

Page 1: Trasformazioni 2D e 3D

1

Trasformazioni 2D e 3D

Daniele MariniCon contributi di Maurizio Rossi

Page 2: Trasformazioni 2D e 3D

2

L’ambiente per le trasformazioni

• Spazio affine

• Coordinate omogenee

• Matrici

Page 3: Trasformazioni 2D e 3D

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

Page 4: Trasformazioni 2D e 3D

4

Richiami di geometria affine

product dot scalare), (o interno prodotto zzyyxx uvuvuv ++=⋅= uvα

Page 5: Trasformazioni 2D e 3D

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

====+++

=++++=+

αααααα

αααααα

Page 6: Trasformazioni 2D e 3D

6

vettoridue i tra angolodell' seno ildà product cross del modulo il

sin

vettoridue tra angolo

cos

vu

vu

vu

vu

×=

⋅=

ϑ

ϑ

Page 7: Trasformazioni 2D e 3D

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

Page 8: Trasformazioni 2D e 3D

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

Page 9: Trasformazioni 2D e 3D

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)

Page 10: Trasformazioni 2D e 3D

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

αα

Page 11: Trasformazioni 2D e 3D

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 ∑

Page 12: Trasformazioni 2D e 3D

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

Page 13: Trasformazioni 2D e 3D

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

Page 14: Trasformazioni 2D e 3D

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

Page 15: Trasformazioni 2D e 3D

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

Page 16: Trasformazioni 2D e 3D

16

traslazione

scala

Page 17: Trasformazioni 2D e 3D

17

rotazione attornoall’origine

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

Due parametri per la rotazione:angolo, centro di rotazione

Page 18: Trasformazioni 2D e 3D

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

Page 19: Trasformazioni 2D e 3D

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

Page 20: Trasformazioni 2D e 3D

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'

Page 21: Trasformazioni 2D e 3D

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'

Page 22: Trasformazioni 2D e 3D

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

Page 23: Trasformazioni 2D e 3D

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.

Page 24: Trasformazioni 2D e 3D

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, ...

Page 25: Trasformazioni 2D e 3D

25

3D

• Ambiente: spazio affine, coordinate omogenee 4D

• Matrici, prodotto vettore per matrice

Page 26: Trasformazioni 2D e 3D

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

Page 27: Trasformazioni 2D e 3D

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

Page 28: Trasformazioni 2D e 3D

28

Scala

Page 29: Trasformazioni 2D e 3D

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

Page 30: Trasformazioni 2D e 3D

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 !

Page 31: Trasformazioni 2D e 3D

31

Page 32: Trasformazioni 2D e 3D

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.

Page 33: Trasformazioni 2D e 3D

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

Page 34: Trasformazioni 2D e 3D

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

Page 35: Trasformazioni 2D e 3D

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

Page 36: Trasformazioni 2D e 3D

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

Page 37: Trasformazioni 2D e 3D

37

Rotazione attorno a un punto e un asse generico

Page 38: Trasformazioni 2D e 3D

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

Page 39: Trasformazioni 2D e 3D

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

Page 40: Trasformazioni 2D e 3D

40

Le trasformazioni per modellare

• Da oggetti prototipo (modelli) a loro “istanze”• Tre trasformazioni nell’ordine:

– Scala

– Rotazione

– Traslazione

• Minst=T(R(S))

Page 41: Trasformazioni 2D e 3D

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

Page 42: Trasformazioni 2D e 3D

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

Page 43: Trasformazioni 2D e 3D

43

Classi di trasformazioni

Page 44: Trasformazioni 2D e 3D

44

Page 45: Trasformazioni 2D e 3D

45

Page 46: Trasformazioni 2D e 3D

46

Page 47: Trasformazioni 2D e 3D

47

Page 48: Trasformazioni 2D e 3D

48