Documente Academic
Documente Profesional
Documente Cultură
3D
Prof. univ. dr. ing. Florica Moldoveanu
dreapta stȃnga
Sistemul de coordonate în care este descrisa scena într-o aplicatie OpenGL: sistem de
coordonate carteziene 3D dreapta.
2
EGC – Transformari geometrice 3D
Transformările geometrice 3D elementare
➢ Translaţia
➢ Scalarea faţă de origine
➢ Rotaţiile în jurul axelor principale ale sistemului de coordonate
➢ Oglindirea faţă de un plan principal al sistemului de coordonate
➢ Forfecarea faţă de originea sistemului de coordonate
Considerăm punctele din spaţiu reprezentate prin vectori coloană, în coordonate omogene,
pentru a respecta conventia din OpenGL:
x x
y
y
=M M este matricea de transformare a
z z punctului (x, y, z), în coordonate omogene
1 1 3
Translaţia
4
EGC – Transformari geometrice 3D
Scalarea faţă de origine
x x s x 0 0 0 x
y = 0 sy 0 0 y
z z 0 0
s z 0 z
1 0 0
0 1 1
y
Rotatia in planul Y0Z
7
EGC – Transformari geometrice 3D
Rotaţia pozitivă în jurul axei oy
8
EGC – Transformari geometrice 3D
Alte transformari geometrice 3D elementare
9
EGC – Transformari geometrice 3D
Transformari geometrice 3D compuse
Exemple:
10
EGC – Transformari geometrice 3D
Rotaţia în jurul unei drepte paralele cu axa OX
y
C(xc,yc,zc) d
x' x
y
y'
= T(xc, yc, zc) R (u) T(-xc, - yc, - zc)
z' x z
1 1
11
EGC – Transformari geometrice 3D
Rotatia în jurul unei drepte oarecare (1)
Se considera dreapta data printr-un punct (xd, yd, zd) si directia sa, D[a, b, c].
1. Translatie prin care dreapta va trece prin origine: T(-xd, -yd, -zd)
2.1. Rotatie in jurul axei OX, cu un unghi ux, prin care dreapta ajunge in planul XOZ: Rx(ux)
2.2. Rotatie in jurul axei OY, cu un unghi uy, prin care dreapta se suprapune pe axa OZ: Ry(uy)
3. Rotatia cu unghiul dat, u, in jurul axei pe care s-a aliniat dreapta: rotatie in jurul axei OZ : Rz(u)
12
EGC – Transformari geometrice 3D
Rotatia in jurul unei drepte oarecare (2)
y
1. Translatie astfel incat dreapta sa treaca prin origine
2. Aliniere dreapta cu una dintre axe
D [a, b, c] 3. Rotatia cu unghiul dat in jurul axei pe care s-a aliniat
(xd, yd, zd) 4. Transformarea inversa de la punctul 2
x 5. Transformarea inversa de la punctul 1
z
13
EGC – Transformari geometrice 3D
Rotatia in jurul unei drepte oarecare (3)
1. Translaţie
y
1 0 0 − xd
0 1 0 − yd
T =
[a,b,c] 0 0 1 − zd
(xd, yd, zd) 0 0 0 1
x
14
EGC – Transformari geometrice 3D
Rotatia in jurul unei drepte oarecare (4)
2. Aliniere D cu axa OZ
y
uy
O
ux x
z
M
l = b2 + c 2
(0,0,c) b
A’’ (0,0,l)
sin( ux) =
b = l*sin(ux) l
(a,0,l)
c = l*cos(ux)
c
cos( ux) =
l
Rx(ux) Prin rotatia lui OA in jurul axei Ox cu
unghiul ux, acesta va ajunge in planul XOZ
16
Rotatia in jurul unei drepte oarecare (6)
O a = L*sin(-uy)
- uy x l = L*cos(-uy)
A’’(0, 0, l)
z M(a, 0, l)
sin( −uy ) = a / L− sin( uy ) = −a / L
Ry(uy) cos(−uy ) = cos(uy ) = l / L
17
EGC – Transformari geometrice 3D
Rotatia in jurul unei drepte oarecare (7)
cos( u ) − sin( u ) 0 0
sin( u ) cos( u ) 0 0
Rz (u ) =
0 0 1 0
0 0 0 1
x
u
z
18
EGC – Transformari geometrice 3D
Exemplu: rotatia unui cub (1)