Documente Academic
Documente Profesional
Documente Cultură
Transformari Grafice
unde M este o matrice nxn, u este in vector (reprezentat printr-un vector coloana
in spatiul Rn iar v este un vector in spatiul Rn care rezulta prin transformarea lui u.
Relatia (4-1) descrie o transformare matriceala. In Rn, oricarei transformari liniare T ii
corespunde biunivoc o matrice M a.i. T(u)=M*u=TM(u).
Daca T este o transformare continua, in spatiul nD, care pastreaza liniile drepte, se
poate defini transformarea prin si va rezulta o transformare
care pastreaza liniile drepte si lasa neschimbata originea, o astfel de transformare este
reprezentabila matriceal, folosind o matrice Mnxn.
= (4-2)
Figura 4.1
Demonstratie:
Folosind marimile din figura 4.1
coordonate .
In acest fel, toate punctele spatiului 2D vor corespunde punctelor planului w=1 din
spatiul 3D (am considerat un spatiu 3D avand puncte de coordonate (x,y,w)).
Figura 4.2
Unii autori mai spun ca un punct al spatiului euclidian 2D (notat E2) este reprezentat
prin vectorul de pozitie al sau, intr-un spatiu (vectorial) R3 in care E2 este scufundat.
Translatia:
Rotatia:
Scalarea:
= *
va trebui ca g*x + h*y + i = 1 pentru x,yR, aceasta inseamna ca: g=0, h=0, i=1.
Deci matricea unei transformari liniare 3D care pastreaza punctele din E2 este
Nota: diferente intre vectori (elemente ale unui spatiu vectorial) si puncte (elemente
ale unui spatiu euclidian) (vezi si egcmat)
Un vector v poate fi privit ca diferenta a doua puncte P, Q: v=Q-P (unde P
este originea vectorului iar Q este destinatia lui v).
Suma dintre un punct si un vector este alt punct: P+v=P+(Q-P)=Q.
Suma sau diferenta de vectori este definita ca suma element cu element a
Combinatia afina a doua puncte din E2 (reprezentarile lor in spatiul omogen) este
Forfecarile 2D (shear):
SHx = , figura
SHy =
T(x,y) = M* = *
Figura 4.3
Exemplu:
Vom lucra folosind numai vectori din R2, nu reprezentari omogene.
Sa consideram u1= , u2=
v1 = , v2=
Matricile M, K sunt:
M= , K=
det(M)=(4*(-1))-(5*1)= -9
M3x3=
R2x2 este matricea transformarilor liniare (rotatii, scalari, forfecari) care compun
transformarea afina. Daca R2x2 corespunde numai compunerii de rotatii, ea este o
matrice ortonormala (coloanele sunt vectori unitate, ortogonali) si det(R2x2)=1. O
astfel de transformare liniara, a carei matrice satisface cele doua proprietati enuntate
mai sus se zice transformare a solidului rigid. Ea aliniaza un sistem de vectori
ortonormal, peste un alt sistem de vectori ortonormal, fara sa produca deformarea
obiectului transformat (schimba numai orientarea obiectului). In general, daca R 2x2 are
in componenta ei si forfecari, scalari sau oglindiri, ea nu corespunde unei transformari
a solidului rigid.
T2x1 este vectorul de translatie.
O tranformare afina 2D se poate calcula direct in R2 astfel:
= R2x2 * + T2x1
Figura 4.4
Notand: , ,
Respectiv: ,
#include ferviz.h
M=
K=
Transformarea fereastra-vizor (vizualizarea 2D) va fi exprimata ca o transformare
liniara, prin:
= KM-1 =
M4x4 =
Iata matricile M3x3 corespunzatoare unor transformari liniare elementare ale spatiului
3D, respectiv M4x4 corespunzatoare descrierii acelorasi transformari in spatiul omogen
4D.
Scalarea de factori sx, sy, sz pe cele trei axe: se poate reprezenta direct in spatiul 3D
prin matricea:
direct in spatiul 3D dar se poate reprezenta printr-o matrice 4x4 ce corespunde unei
transformari liniare a spatiului omogen
= T(tx,ty,tz)*
Exista trei forfecari elementare, cate una dupa fiecare din planele de coordonate xOy,
yOz, zOx. Forfecarile in spatiul 3D sunt transformari liniare; matricele
corespunzatoare M3x3 sunt cele din colturile din stanga sus ale matricelor omogene
corespunzatoare.
SHxOy(shx,shy) =
SHyOz(shy,shz) =
SHzOx(shz,shx) =
OglyOz=
OglzOx=
OglOx=Rx()=
OglOy= Ry()=
OglOz= Rz()=
OglO=
Analog se definesc
Ry()=Rzx()=
Rx()=Ryz()=
M=Ryz()*Rzx()*Rxy()=Rx()*Ry()*Rz()
Exista factorizari si in alte ordini (de exemplu Ry*Rz*Rx) sau factorizari cu numai doi
factori.
Daca consideram un obiect definit relativ la un sistem ortogonal de axe avand
originea in centrul obiectului, unghiurile parametru pot fi explicate astfel: (roll
unghi de rotatie in jurul axei fata-spate) , (yaw unghi de rotatie in jurul axei
verticale) si (pitch unghi de rotatie in jurul axei care traverseaza lateral obiectul).
Aceste trei unghiuri se numesc unghiurile lui Euler.
4.3.1.2 Calculul matricei M3x3 a unei rotatii generale in functie de rotatiile din
parametrizarea lui Euler.
(4-3)
Daca cos()=0, unghiurile si nu au valori unice (de aceea am pus cuvantul inversa
intre ghilimele), daca alegem =0 (sin()=0) rezulta =atan2(M32,M22)
J = (4-4)
x v + cos()v
M*v=sin()
Efectuand calculele din membrul drept al relatiei (4-5), obtinem mai intai:
J2 =
in acest ultim caz, aplicarea de doua ori a transformarii M corespunde unei rotatii cu
unghiul 2 adica transformarii identitate M2=I. In acest caz se poate lua ca vector
(axa de rotatie) orice coloana nenula a matricei M.
quaternionul identitate
quaternionul invers
==>
Se mai scrie:
Quaternionii si rotatiile
Nota: Quaternionii formeaza un spatiu care este izomorf cu spatiul multivectorilor pari
(bivectori) ai algebrei geometrice (geometric algebra, Clifford algebra) G3. Prin
urmare, calculul bazat pe quaternioni are toata puterea de calcul a unei algebre (vezi
egcmat).
4.4 Transformari 3D aplicate normalelor
Normalele la suprafata unui obiect, se comporta diferit (la aplicarea unei transformari
afine), fata de punctele suprafetei corespunzatoare.
Dandu-se o transformare afina 3D care este reprezentata in spatiul omogen printr-o
matrice M4x4, aplicarea matricei M4x4 unui vector (reprezentat ca ) din spatiul
n3x1 (4-6)
Vom prezenta o demonstratie a relatiei (4-6) pentru cazul cand (S) este o suprafata
plana.
coordonatele carteziene ale unui punct (P ) oarecare al planului () iar (A,B,C) sunt
Notam N= vectorul coeficientilor ecuatiei planului (). Aceasta se mai poate scrie
Ntransf= = Q4x4*N4x1
Ntransf=(M-1)T*N
Deoarece primele trei componente ale lui N respectiv Ntransf sunt componentele
normalei la planele () respectiv (transf) iar M este matricea unei transformari afine
3D, rezulta ca relatia (4-6) este adevarata in cazul unei suprafete (S) plane.
Figura 4.5
in acest fel, axa de rotatie a fost aliniata cu axa Oy (una din axele sistemului de
coordonate)
4. se efectueaza rotatia Ry()
5. se aplica transformarile inverse ale transformarilor T3, T2, T1, pentru a aduce la loc
axa Oy peste axa AB