Loading [MathJax]/jax/output/HTML-CSS/jax.js

2011-07-09

Macierz transformacji

Macierze transformacji to z reguły macierze skalowania, rotacji wokół środka układu współrzędnych i translacji. Do tego dochodzą różnego rodzaje projekcje, pochylenia.

Macierze te są o jeden wymiar większe niż przestrzeń na której operują. Czyli każde takie powyższe przekształcenie w 3D to macierz 4x4.

Trzy pierwsze kolumny w takiej macierzy reprezentują osie układu współrzędnych nowego układu współrzędnych do jakiego dokonujemy transformacji.

Weźmy macierz jednostkową 4x4:

I=[1000010000100001]
Dowolny punkt albo macierz wymnożoną przez macierz jednostkową nie zmienia swojej postaci.

Ogólna postać macierzy transformacji:

I=[rightxupxforwardxtxrightyupyforwardytyrightzupzforwardztz0001]
Mnożąc przez siebie dowolną ilość macierzy rotacji i translacji 4x4 otrzymujemy macierz 4x4, która te wszystkie przekształcenia przedstawia jako jedną rotację i jedną translację. Macierz rotacji R wyciągamy wprost z macierzy 4x4. Translacja nie jest dana wprost z takiej macierzy. Dla macierzy M:

IT=T
R1R=I
R1RT=T
R1M=T
RTM=T

Zamiast T=RTM możemy użyć T=R1Tr dzięki czemu uwzględnimy przypadki, gdzie R będąca fragmentem macierzy Tr nie spełnia wszystkich warunków macierzy rotacji, a zwłaszcza RT=R1.

Podobnie możemy pokazać dla macierzy M=TR.

Wektory right, up, forward to osie układu współrzędnego lokalnego. Mnożąc dowolny punkt przez macierz translacji transformowany jest on do układu współrzędnych wyznaczonego przez te wektory. Np: punkty leżące na osi OX będą leżały na nowej osi OX, której wersorem będzie right.

Macierz odwrotna lub transponowana będzie dokonywać przekształcenia odwrotnego.

Jeśli chodzi o odwrotność rotacji to z faktu że: RT=R1 wynika, że osie układ
współrzędnych rotacji odwrotnej wyznaczają wiersze macierze rotacji.

Brak komentarzy:

Prześlij komentarz