Sei sulla pagina 1di 9

Trasformazioni

Le trasformazioni sono usate per:

Trasformazioni 2D e 3D
Daniele Marini Maurizio Rossi

Posizionare gli oggetti in una scena (modellazione) Cambiare la forma degli oggetti Creare copie multiple di istanze di oggetti Le proiezioni della camera virtuale Animazioni

Sistemi di coordinate
Le trasformazioni sono applicate ai sistemi di coordinate: Nello spazio oggetto (locale ad ogni singolo oggetto) Nel camera space (spazio vista) definito dal view frustum Nello spazio mondo World-Space (comune a tutti gli oggetti) Nello spazio schermo (che dipende dalle caratteristiche hardware)
3

Matematica per le trasformazioni


Spazio affine Coordinate omogenee Vettori Matrici

Fondamenti sulle Matrici


Definizione di matrice di m righe ed n colonne composta di m n elementi : A = ai , j i = 1..m j = 1..n

Fondamenti sulle Matrici


propriet : la somma associativa e commutativa ( A + B) C = ( B C) + A il prodotto associativo ( AB)C = A( BC) ma non commutativo AB BA definizione di matrice identit 1 per i = j I = a i, j = 0 altrimenti

[ ]

a11 a12 a a22 A = 21 M M am1 am 2

K a1n L a2 n O M K amn

[ ]

matrice trasposta ha n righe ed m colonne A T = a j ,i prodotto scalare x matrice somma di matrici prodotto matriciale

A = ai , j

C = A + B = ai , j + bi , j C = A B = ci , j

[ ]
n

AI =IA = A

i = 1..m j = 1..n

vettore come matrice matrice riga u = u x prodotto vettore matrice : v = M u T

uy

u x u z o colonna : u T = u y u z

[ ] dove [ci, j ] = ai,k bk , j


k =1

oppure : v T = u M

il significato A premoltiplica B o B postmoltiplica A (il n. di colonne della 1 deve essere = al n. di righe della 2)
5

Fondamenti sulle Matrici


Definizione di vettore colonna composto di di m righe : v = [vi ] i = 1..m v1 v v= 2 M v m Definizione di vettore riga composto di di n colonne j = 1..n v = vj v = [v1

Richiami di geometria affine


- Spazio vettoriale lineare: operazioni di somma tra vettori Campo 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

[ ]

v2 L vn ]

P = ( x, y , z ) v = (v x , v y , v z ) v = vx2 + v y 2 + vz 2 P = v + Q somma vettore + scalare : traslazione del punto di applicazione v = P Q vettore come differenza di due punti

il trasposto di un vettore colonna un vettore riga e viceversa

Prodotto scalare
Il risultato del prodotto scalare (detto anche interno o dot product) uno scalare (un numero)

Prodotto vettoriale
Il risultato del prodotto vettoriale un vettore
u y v z u z v y w = u v = u z v x u x v z prodotto vettoriale, cross product u x v y u y v z

sin =

uv u v

il modulo del cross product

= v u = vx ux + v y u y + vz uz
cos = uv significato trigonometrico : valore del coseno dell' angolo tra i due vettori u v
9

d il seno dell' angolo tra i due vettori

10

Prodotto vettoriale: propriet


u v = 0 sse ortogonali

Prodotto matrice per vettore colonna


Il risultato del prodotto un vettore Esempio, matrice 3x3 per vettore dimensione 3:

(u + v ) = u + v linearit 1u 1 + 2 u 2 + .... + n u n = w combinazione lineare


se 1u 1 + 2 u 2 + .... + n u n = 0 vale solo per 1 = 2 .. = n = 0 allora ( u 1 ,..., u n ) sono lineamente indipendenti n la dimensione dello spazio, ( u 1 ,..., u n ) la base dello spazio

a11 w = A v = a 21 a 31

a12 a 22 a 32

a13 v1 a11v1 + a12 v 2 + a13v 3 a 23 v 2 = a 21v1 + a 22 v 2 + a 23v 3 a 33 v 3 a 31v1 + a 32 v 2 + a 33v 3

11

12

Prodotto matrice per matrice


Riga x colonna Il risultato del prodotto una matrice Esempio, prodotto tra matrici 3x3
a11 C = A B = a 21 a 31 a12 a 22 a 32 a13 b11 b12 a 23 b21 b22 a 33 b31 b32 b13 b23 b33 a11b13 + a12 b23 + a13b33 a 21b13 + a 22 b23 + a 23b33 a 31b13 + a 32 b23 + a 33b33

Orientamento nello spazio affine


Lo spazio pu essere orientato in due modi:
mano sinistra: avvolgete la mano allasse x e puntate il pollice verso x a sinistra, z (medio) viene verso di voi e y (indice) va verso lalto mano destra: avvolgete la mano allasse x e puntate il pollice verso x a destra, z (medio) viene verso di voi e y (indice) va verso lalto

a11b11 + a12 b21 + a13b31 = a 21b11 + a 22 b21 + a 23b31 a 31b11 + a 32 b21 + a 33b31

a11b12 + a12 b22 + a13b32 a 21b12 + a 22 b22 + a 23b32 a 31b12 + a 32 b22 + a 33b32

13

Questo definisce il world coordinate system in cui sono definiti tutti gli oggetti della scena 14

Coordinate omogenee 2D3D


Lo spazio 3D pu anche essere considerato come lo spazio omogeneo del piano 2D:
ogni punto P nel piano 2D corrisponde a infiniti punti nello spazio omogeneo 3D che differiscono solo per un fattore moltiplicativo w:
P ( x, y ) in 2D corrisponde a : P ( wx, wy , w) in 3D omogenee

Coordinate omogenee 3D4D


Spazio delle classi di equivalenza: ogni punto P in coordinate cartesiane 3D corrisponde a infiniti punti nello spazio omogeneo 4D che differiscono solo per un fattore moltiplicativo w:
P ( x, y , z ) in 3D corrisponde a : P ( X = wx, Y = wy, Z = wz, w) in 4D omogenee

Il passaggio dallo spazio omogeneo 4D allo spazio 3D: x = X /w y = Y /w z = Z /w solitamente si sceglie w=1
15 16

Trasformazioni affini
Sono 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 nellordine logico opportuno
17

Definizione degli oggetti


Gli oggetti possono essere definiti in un proprio sistema di riferimento locale:
i vertici delloggetto sono definiti rispetto a un orientamento proprio e naturale tramite equazioni elementari implicite o esplicite 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
18

Trasformare gli oggetti


La trasformazione affine conserva le rette
Assegnato un segmento p(t) tra due punti P0 e P1 e una trasformazione affine A vale: le trasformazioni agiscono sui vertici delloggetto denotiamo i vertici (punti) come vettori colonna v R, T e S sono operatori di rotazione, traslazione e scala il punto trasformato quindi: v = v + T traslazione v = R v rotazione v = S v scala,

p(t ) = tP0 + (1 t ) P1 Ap (t ) = tAP0 + (1 t ) AP1


Dato che possiamo descrivere un poliedro con i suoi vertici, facce e spigoli, questa propriet ci garantisce che sufficiente trasformare soltanto i vertici per trasformare tutto il poliedro

19

20

Due parametri per la rotazione: angolo e centro di rotazione


Due casi:
Rotazione semplice attorno allorigine degli assi Rotazione attorno ad un punto generico

La rotazione nel piano: trigonometria


(x,y)

rotazione semplice attorno allorigine: 1. sufficiente una sola matrice semplice di rotazione rotazione attorno ad un punto generico: 1. prima traslare il punto al centro degli assi 2. poi ruotare 3. poi contro-traslare il punto dal centro alla sua posizione orignaria
21

(x,y)

x= cos y= sin

x= cos(+) = cos cos sin sin = x cos y sin y= sin(+) = cos sin + sin cos = x sin + y cos
22

Traslazione, Rotazione e Scala sul piano (2D) possono 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 v=R v v=S v
sin cos 0 0 0 1

Traslazione
Per traslare un punto espresso da un vettore v in una nuova posizione a distanza dx rispetto allasse x e dy rispetto allasse y
1 v' = 0 0 1 v' = 0 0 0 dx 1 dy v 0 1 0 dx v x 1 dy v y 0 1 1

1 0 dx T = 0 1 dy 0 0 1 sx 0 0 S = 0 sy 0 0 0 1

cos R = sin 0

23

v ' x = v x + dx v' = v ' y = v y + dy 1

24

Scala
Per scalare un punto espresso da un vettore v di un fattore Sx rispetto allasse x e Sy rispetto allasse y
Sx 0 v' = 0 S y 0 0 Sx 0 v' = 0 S y 0 0 S x vx v' = S y v y 1 0 0 v 1 0 vx 0 v y 1 1

Rotazione
Per ruotare un punto espresso da un vettore v di un angolo rispetto allorigine degli assi
cos v' = sin 0 sin cos 0 0 0 v 1
(la matrice di rotazione ha determinante pari a 1)

25

cos sin 0 v x v' = sin cos 0 v y 0 0 1 1 v ' x = v x cos v y sin v' = v ' y = v x sin + v y cos 1

26

Altre trasformazioni: riflessione


Matrice riflessione rispetto allasse x Matrice riflessione rispetto allasse y Matrice riflessione rispetto allorigine degli assi
1 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 1

Altre trasformazioni: shear


Matrice shear (deformazione) rispetto allasse x di un fattore a Matrice shear rispetto allasse y di un fattore b Matrice shear rispetto a entrambi gli assi
27

1 a 0 0 1 0 0 0 1 1 0 0 b 1 0 0 0 1 1 a 0 b 1 0 0 0 1
28

Altre trasformazoni: Anamorfosi conica PP


Si considerano i punti P(x,y) come numeri complessi z=x+iy d la distanza di P dallorigine degli assi z=r/z* (in cui z*=x-iy il complesso coniugato di z) I punti P interni al cerchio sono proiettati allesterno in P a distanza r/d e riflessi rispetto allasse x e viceversa. Effetto: osservare unimmagine dal vertice di uno specchio conico con cerchio di base uguale al cerchio di inversione

PAUSA

29

30

Trasformazioni di Mbius (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, ecc... Esempio: proiezione cartografica di Riemann e altre proiezioni cartografiche

3D
Per estensione dal 2D:
Ambiente: spazio affine, coordinate omogenee 4D Matrici 4D, prodotto vettore per matrice

Traslazione, Rotazione e Scala espresse come trasformazioni nello spazio di coordinate omogenee 4D come prodotto tra matrici e vettori
31 32

Traslazione 3D
Per traslare un punto espresso da un vettore v in una nuova posizione v a distanza Tx rispetto allasse x e Ty rispetto allasse y e Tz rispetto allasse z

Scala 3D
Per scalare un punto espresso da un vettore v di un fattore Sx rispetto allasse x e Sy rispetto allasse y e Sz rispetto allasse z

1 0 0 Tx 0 1 0 Ty T= 0 0 1 Tz 0 0 0 1 x'= (x + 0 + 0 + Tx )
z'= (0 + 0 + z + Tz ) w'= (0 + 0 + 0 + 1)
coord. omogenee

1 0 v' = Tv = 0 0
t

0 0 Tx x 1 0 Ty y 0 1 Tz z 0 0 1 1

Sx 0 S= 0 0

0 Sy 0 0

0 0 Sz 0

0 0 0 1

Sx 0 v' = Sv = 0 0

0 Sy 0 0

0 0 Sz 0

0 x 0 y 0 z 1 1

y'= (0 + y + 0 + Ty )

x t = x' /w'= (x + Tx ) /1 = x + Tx y = y' /w'= (y + Ty ) /1 = y + Ty z = z' /w'= (z + Tz ) /1 = z + Tz


t

x ' = ( xS x + 0 + 0 + 0) z ' = (zS z + 0 + 0 + 0)


coord. omogenee

y ' = ( yS y + 0 + 0 + 0)

x s = x ' / w' = ( xS x ) / 1 y s = y ' / w' = ( yS y ) / 1 z s = z ' / w' = ( zS z ) / 1

coord. cartesiane
33

w' = (0 + 0 + 0 + 1)

coord. cartesiane
34

Scala 3D

Matrici di rotazione 3D
Occorre specificare se la rotazione avviene attorno allasse x, y o z Le tre matrici per i tre casi sono:
0 1 0 cos Rx = 0 sin 0 0 cos 0 Ry = sin 0
35

0 sin cos 0

0 0 0 1 0 0 0 1 cos sin Rz = 0 0 sin cos 0 0 0 0 0 0 1 0 0 1


36

0 sin 1 0 0 0 cos 0

Esempio: rotazione rispetto a z


cos sin v' = R z v = 0 0 sin cos 0 0 0 0 x 0 0 y 1 0 z 0 1 1

( come la rotazione 2D sul piano z=0)


x ' = (x cos y sin + 0 + 0) z ' = (0 + 0 + z + 0 ) w' = (0 + 0 + 0 + 1) y ' = (x sin + y cos + 0 + 0 )

x Rz = x ' / w' = ( x cos y sin ) / 1 y Rz = y ' / w' = ( x sin + y cos ) / 1 z Rz = z ' / w' = z / 1

coord. cartesiane
37 38

coord. omogenee

Trasformazioni inverse
Denotiamo le inverse come: T-1, S-1, R-1. La traslazione inversa si ottiene negando i coefficienti di traslazione: Tx ; Ty ; Tz La scala inversa si ottiene prendendo il reciproco dei coefficienti: 1/Sx ; 1/Sy ; 1/Sz La rotazione inversa si ottiene negando langolo di rotazione:
39

Composizione di trasformazioni
Si possono applicare trasformazioni in successione, moltiplicando in ordine opportuno le matrici (vale lassociativit)
v=M2M1v = M2(M1v) =M2v la trasf. M1 quella applicata per prima nellordine logico!!

ricordiamo che il prodotto di matrici non commutativo: R2R1 R1R2 quindi lordine delle moltiplicazioni importante !! 40

Possiamo applicare a ogni punto separatamente le matrici:


p A B C q

Esempio: rotazione attorno a un punto p e rispetto a un asse (ad es. z)


Traslare loggetto nellorigine, i coefficienti della traslazione T sono riferiti al punto P Ruotare attorno allorigine di un angolo Traslare inversamente nel punto P M=T-1RT

Oppure calcolare prima la matrice M composta:


M=C(B(A)) p M q
41

42

Combiniamo le tre trasformazioni in ununica matrice:


1 0 0 1 1 T RT = 0 0 0 0 cos sin 0 0 0 t x cos sin 0 0 1 0 0 t y sin cos 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 sin 0 ( t x cos + t y sin + t x ) cos 0 ( t x sin t y cos + t y ) 0 1 0 0 0 1 0 tx 0 ty = 1 0 0 1

Esercizio
Una figura geometrica 2D definita in termini di coordinate (x,y). Vogliamo traslarla di 5 unit lungo l'asse x e 3 unit lungo l'asse y. Dopo questa traslazione vogliamo raddoppiarne le dimensioni lungo l'asse x e triplicarle lungo l'asse y. Come si ottiene la matrice di trasformazione M in coordinate omogenee 3D che consente di realizzare entrambe queste trasformazioni? Determinarla numericamente.
43 44

La traslazione si ottiene con una matrice

Soluzione

Rotazione attorno a un versore generico k


1 0 dx 1 0 5 T = 0 1 dy = 0 1 3 0 0 1 0 0 1

La scala si ottiene con una matrice

Sx S=0 0

0 0 2 0 0 Sy 0 = 0 3 0 0 1 0 0 1

kx, ky, kz sono le componenti cartesiane del vettore unitario c = cos s = sen Formula di Rodriguez

La prima trasformazione la traslazione, quindi la matrice M si ottiene pre-moltiplicando T con S. ovvero


Sx 0 0 1 0 dx Sx 0 M = S T = 0 Sy 0 0 1 dy = 0 Sy 0 0 1 0 0 1 0 0 Sx dx Sy dy 1

2 0 0 1 0 5 2 0 2 5 2 0 10 M = 0 3 0 0 1 3 = 0 3 3 3 = 0 3 9 0 0 1 0 0 1 0 0 1 0 0 1

45

46

Es. 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:
T21 = (T12 ) x' 1 y' 0 z' = 0 1 0
1

Le trasformazioni per modellare


Da oggetti prototipo (modelli o definizioni) a loro istanze In questo caso si prendono le tre trasformazioni nellordine:
Scala (per ottenere la dimensione voluta) Rotazione (per orientare loggetto) Traslazione (per posizionarlo nelle coordinate mondo)

0 0 Tx x 1 0 Ty y 0 1 Tz z 0 0 1 1
47

Minst=T(R(S))
48

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
49

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 dallhardware apposito nella pipeline di rendering
50

Potrebbero piacerti anche