Sunteți pe pagina 1din 10

Transformri 3D

Vom utiliza coordonate omogene ca i in cazul 2D


Grafica pe calculator Transformrile vor fi prezentate prin matrice 4x4
Vom utiliza sistemul de coordonate de dreapta
(right-handed )
Transformri 3D
y
Victor Moraru
victor.moraru@utm.md

x
z
2

S=(sx, sy, sz)

Translaia 3D Scalarea 3D
Dup analogie cu 2D: Dup analogie cu 2D obinem
scalarea locala :

[ ]
1 0 tx
s x 0 0
[][ ]
x tx
T ( t x ,t y ) = + = 0 1 t y
y ty
0 0 1
S sx , s y 0x s

s 0
y
x
* 0 s y 0
y 0 0 1

[][ ][ ]
1 0 0 tx
x t sx 0 0 0
x
0 1 0 ty x s 0 0 x
T ( t x ,t y ,t z ) = y + t y = 0 sy 0 0
0 0 1 tz S sx , s y , sz 0 s y 0 * y

z tz 0 0 s z 0
0 0 0 1 0 0 sz z
3 0 0 0 1 4
S=(sx, sy, sz)

Scalarea 3D Rotaia 3D
Scalare globala: Va trebui sa specificam axa de rotaie
Pentru nceput vom analiza cele mai simple cazuri
cnd axa de rotaie coincide cu una dintre axe.
Pentru rotaia n jurul axei z matricea e la fel ca i
pentru cazul 2D:

5 6

Rotaia 3D Rotaia 3D

Rotaia n jurul axei X: Rx() Rotaia n jurul axei y: Ry()

x = x x = zsin + xcos
y = ycos - zsin y = y
z = ysin + zcos z = zcos - xsin

7 8
Rotaia 3D Rotaia 3D: rezumat

[ ] [ ]
1 0 0 0 cos 0 sin 0
Rotaia n jurul axei z: Rz()
0 1 0 0
R(1,0,0,)= 0 cos sin 0 R(0,1,0, )=
0 sin cos 0 sin 0 cos 0
0 0 0 1 0 0 0 1

[ ]
cos sin 0 0
R( 0,0,1, )= sin cos 0 0
x = xcos - ysin
y = xsin + ycos
z = z
0 0 1 0
0 0 0 1
9 10

Matricea generalizata Matricea generalizata


Matricea de transformare generalizat 4x4 Structura:
pentru coordonate omogene 3D are
urmtoarea form:

11 12
Matricea generalizata Transformri inverse
Transformare Matrce inversa

Structura pentru cazul notaiei prin vector-coloana: Scalare 1/ sx 0 0 0


0 1/ s 0 0
matricea 3x3 include transformri de scalare local,
0
y

0 1 / sz 0


forfecare, oglindire i rotaie 0 0 0 1
Ryz-1 () Rzx-1() Rxy-1()

matricea 3x1 reprezint transformarea de translaie Rotatie 1 0 00 cos 0 sin 0 cos sin 0 0
0 cos sin 0 0 1 0 0 sin cos 0 0
matricea 1x3 reprezint transformarea de , ,
0 sin cos 0 sin 0 cos 0 0 0 1 0
proiectare perspectiv
0 0 0 1

0 0 0

1 0 0 0 1

matricea 1x1 reprezint transformarea de scalare Translatie


general

13 Toate matricele de transformare au matrice inverse 14

Rotatie(k, )

Transformri inverse Rotaia 3D y


Rotaie in jurul unei axe


Proprieti: arbitrare: calculul direct al u

[T(tx,ty,tz ) ]-1 = [T(-tx,-ty,-tz )] matricii de transformare z


x

[S(sx,sy,sz ) ]-1 = [S( 1/sx,1/sy,1/sz )]


[Rx() ]-1 = [Rx(-) ]
[Ry() ]-1 = [Ry(-)]
[Rz() ]-1 = [Rz(-)]
unde
15 16
Rotaia 3D Compunerea transformrilor
Rotaia nu e comutativa dac axele de rotaie Matricea corespunztoare transformrii compuse se
nu sunt paralele obine prin nmulirea matricelor transformrilor
elementare.
Deoarece nmulirea matricelor nu este comutativ, este
important ordinea n care se aplic aceste transformri.
Matricea de transformare cea mai apropiat vectorului
linie (sau a vectorului colana) corespunde primei
transformri care se aplic n timp ce matricea de
transformare cea mai deprtat este ultima care se
aplic.

17 18

Compunerea transformrilor Rotaia 3D


Matematic aceasta se exprim prin: Rotaia in jurul unei axe paralele cu o axa a
[M] [VC] = [Mn] [M3] [M2] [M1].... [VC] sistemului de coordonate:
pentru vector coloana 2
3 z
sau
P y

[VL] [M] =[VL] [M1]T [M2]T [M3]T....[Mn]T

pentru vector linie Q P


1
unde [ Mi ] poate i orice matrice de transformare
x

19 20
Rotaia 3D Rotaia 3D
Axa oarecare de rotaie (d) se specific printr-un punct A(x0 ,y0 ,z0) i un vector
Rotaia in jurul unei axe paralele cu o axa a sistemului direcie C = cx * i + cy * j + c z * k, unde cx , cy , cz sunt cosinuii directori.
de coordonate: 1.Translatie care face ca dreapta sa treac prin origine: T(-xd, -yd, -zd)
2. Alinierea dreptei cu una dintre axele principale, de ex. cu axa OZ:
1. Translaia obiectului astfel nct axa de rotaie sa se
2.1. Rotaie in jurul axei OX, cu un unghi ux, prin care dreapta ajunge in
suprapun peste o axa a sistemului de coordonate. planul XOZ: Rox(ux)
2. Rotaia obiectului in jurul axei sistemului de 2.2. Rotaie in jurul axei OY, cu un unghi uy, prin care dreapta se suprapune
pe axa OZ: Roy(uy)
coordonate cu unghiul u.

[ ] []
x' x 3. Rotaia cu unghiul dat, u, in jurul axei pe care s-a aliniat dreapta: rotaie in
3. Translaia inversa celei din pasul 1. y ' =[ M ] y jurul axei OZ : Roz(u)

M = T(tx, ty, tz) * R(u) * T(-tx, - ty, - tz) z' z 4. Transformarea inversa celei din pasul 2:
1 1 4.1. Rotaie in jurul axei OY, cu unghiul uy: Roy(-uy)
4.2. Rotatie in jurul axei OX, cu unghiul ux: Rox(-ux)
5. Transformarea inversa celei de la pasul 1: T(xd, yd, zd)
21 22

Rotaia ax cu ax...
Rotaia ax cu ax...
Exemplu
E complicat sa calculezi trei unghiuri de rotaie in
raport cu o axa arbitrara u si cu un unghi specificat y
u
Axa de rotatie trece prin punctele P1 si P1 .
Soluia ar fi sa orientam axa u cu una dintre axele
principale
Pasul 1: Gsim rotind in jurul axei y pana cnd axa u v v
se poziioneaz in planul xy
y
Pasul 2: Gsim rotind in jurul axei z pana aliniem u cu u
x
P2
axa x v

Acum u are o aliniere convenabila si putem efectua z
rotirea pentru vrful v: P1
Pasul 3: Rotim v cu in jurul axei x (ea coincide cu axa
u) z x
Pasul 4: La sfrit realizam transformrile inverse.
Unica rotaie pe care o prezervm e cea in jurul axei u cu
, care a i ost scopul nostru

Matricea de rotire: M = Rzx-1()Rxy-1()Ryz()Rxy()Rzx() 23 24


Rotaia ax cu ax... Rotaia ax cu ax...
Exemplu Exemplu
M = T(P1) R1Rz() RT(P1)
y P2 y P2'
y y P2 y y
P2'

T(P1) R
P1 P1' P1' P1 P1'
P1'
x x z x z
z z P2'' z x z x P2'' x
Initial 1. translate axis 2. rotate axis Initial 1. translate axis 2. rotate axis
y y P2' y P2 y y y P2
P2'
Rz()
R1 T(P1)
P1' P ' P1 P1' P ' P1
1
z x x z
1

P2'' z z x P2'' z x x z x
3. rotate around 4. rotate back 5. translate back 3. rotate around 4. rotate back 5. translate back
z-axis z-axis
25 26

Forfecarea Forfecarea
Ecuaii generale pentru forfecare
x' = x + y*d + z*g

[ ]
1 d g 0
y'= x*b + y +z*i
b 1 i 0
z'= x*c +y*f +z [ F ]=
c f 1 0
0 0 0 1

[ ] []
x' x
y ' =[ F ] y
z' z
1 1
27 28
Oglindirea Oglindirea
Oglindirea fa de planul xy : in acest caz se Oglindirea fa de planul yz
inverseaz doar coordonata z, coordonatele x
i y rmnnd neschimbate

29 30

Oglindirea Oglindirea fa de un plan oarecare


Oglindirea fa de planul xz Considerm planul de oglindire specificat printr-un punct
P(x0 ,y0 ,z0) i vectorul normal la plan, N.
O procedura de obinere a transformrii de oglindire fa de planul dat
este urmtoarea:
1.Translaie astfel nct punctul P(x0 ,y0 ,z0) din plan s ajung n
originea sistemului de coordonate.
2. Alinierea vectorului normal la plan, N, la axa z pozitiv. Planul de
oglindire devine astfel planul z=0.
3. Oglindirea fa de planul z=0.
4. Transformarea invers alinierii de la pasul 2.
5. Translaia invers celei de la pasul 1.

31 32
Transformri afine Transformri afine
Toate transformarile despre care s-a vorbit Proprietati:
pana acum poarta un nume generic de
1. Coordonatele transformate x,y si z depind linear de
transformari afine coordonatele originale x, y si z.
x' a xx x a xy y a xz z bx 2. Parametrii aij si bk sunt constante care determina tipul
transformrii (translaie, rotaie, scalare, oglindire)
3. Liniile paralele rmn paralele
y ' a yx x a yy y a yz z b y 4. Pentru translaie, rotaie i oglindire: unghiurile i
lungimile sunt conservate
z ' a zx x a zy y a zz z bz

33 34

Exemplu de transformri
Exemplu transformri compuse 3D!
compuse 3D
Fie un cub centrat la (2,2,2) Fie un cub centrat la (2,2,2)
Rotim obiectul in spa iul su cu 30 o n jurul axei x , cu Rotim obiectul in spaiul sau cu 30 o in jurul axei x , cu
60o n jurul axei y i cu 90o n jurul axei z 60o in jurul axei y i cu 90o in jurul axei z
Scalm n spa iul obiect cu 1 n x, 2 n y, 3 n z Scalam in spa iul obiect cu 1 in x, 2 in y, 3 in z
Translaie cu (2,2,4) n spaiul scenei (world space) Translaie cu (2,2,4) in spaiul scenei (world space)
Secvena de transformare : M = TT0-1SxyRxyRzxRyzTo, Secventa de transformare : M = TT0-1SxyRxyRzxRyzTo,
unde T0 e o translaie din (2,2) n (0,0): unde T0 e o translaie din (2,2) n (0,0):
1 0 0 2 1 0 0 2 1 0 0 0 cos 90 sin 90 0 0 cos 60 0 sin 60 0 1 0 0 0 1 0 0 2
0 1 0 2 0 1 0 2 0 2 0 0 sin 90 cos 90 0 0 0 1 0 0 0 cos 30 sin 30 0 0 1 0 2

0 0 1 4 0 0 1 2 0 0 3 0 0 0 1 0 sin 60 0 cos 60 0 0 sin 30 cos 30 0 0 0 1 2

0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1
T T 0-1 S xy R xy R zx R yz T0

35 36
Exemplu Exemplu calcul
Un cub este definit prin vrfurile sale Scalarea cu sx=2, sy=3, sz=1, apoi translatie tx=2, ty=2, t z=2

0 4 0 4 0 4 0 4 2 0 0 0
0,4,0 4,4,0 V= 0 0 4 4 0 0 4 4 S=0 3 0 0
0 0 0 0 4 4 4 4 0 0 1 0

[ ]
0 4 0 4 0 4 0 4 1 1 1 1 1 1 1 1 0 0 0 1
0,4,4 4,4,4
V= 0 0 4 4 0 0 4 4 0 8 0 8 0 8 0 8 1 0 0 2
0 0 0 0 4 4 4 4 0 0 12 12 0 0 12 12 T= 0 1 0 2
0,0,0
1 1 1 1 1 1 1 1 V'=S*V = 0 0 0 0 4 4 4 4 0 0 1 2
4,0,0 1 1 1 1 1 1 1 1 0 0 0 1
0,0,4 4,0,4 2 10 2 10 2 10 2 10
V''=T*V'=TSV = 2 2 14 14 2 2 14 14
2 2 2 2 6 6 6 6
37 1 1 1 1 1 1 1 1 38

Exemplu calcul
Scalarea cu sx=2, sy=3, sz=1, apoi translaie tx=2, ty=2, tz=2,
prin compoziia transformrii
0 4 0 4 0 4 0 4
V= 0 0 4 4 0 0 4 4
0 0 0 0 4 4 4 4

2
1 1
0
1
0
1
2
1 1
1
1 1
0 0 2 2 0 0 0
Intrebri ?
M=TS = 0 3 0 2 T= 0 1 0 2 S=0 3 0 0
0 0 1 2 0 0 1 2 0 0 1 0
0 0 0 1 0 0 0 1 0 0 0 1
2 10 2 10 2 10 2 10
V'=MV=TSV = 2 2 14 14 2 2 14 14
2 2 2 2 6 6 6 6
1 1 1 1 1 1 1 1 39 40

S-ar putea să vă placă și