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:

$\mathbf{I}=\begin{bmatrix}
1 & 0 & 0 & 0 \\
0 & 1 & 0 & 0 \\
0 & 0 & 1 & 0 \\
0 & 0 & 0 & 1 \\
\end{bmatrix}$
Dowolny punkt albo macierz wymnożoną przez macierz jednostkową nie zmienia swojej postaci.

Ogólna postać macierzy transformacji:

$\mathbf{I}=\begin{bmatrix}
right_x & up_x & forward_x & t_x \\
right_y & up_y & forward_y & t_y \\
right_z & up_z & forward_z & t_z \\
0 & 0 & 0 & 1 \\
\end{bmatrix}$
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 $\mathbf{R}$ wyciągamy wprost z macierzy 4x4. Translacja nie jest dana wprost z takiej macierzy. Dla macierzy $\mathbf{M}$:

$IT=T$
$R^{-1}R=I$
$R^{-1}RT=T$
$R^{-1}M=T$
$R^{T}M=T$

Zamiast $\mathbf{T=R^{T}M}$ możemy użyć $\mathbf{T=R^{-1}Tr}$ 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 $\mathbf{R^{T}=R^{-1}}$.

Podobnie możemy pokazać dla macierzy $\mathbf{M=TR}$.

Wektory $\mathbf{\overrightarrow{right}}$, $\mathbf{\overrightarrow{up}}$, $\mathbf{\overrightarrow{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 $\mathbf{\overrightarrow{right}}$.

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

Jeśli chodzi o odwrotność rotacji to z faktu że: $R^T=R^{-1}$ wynika, że osie układ
współrzędnych rotacji odwrotnej wyznaczają wiersze macierze rotacji.

Brak komentarzy:

Prześlij komentarz