Elementarne macierze transformacji – macierze opisujące zależność pomiędzy współrzędnymi wskazanego punktu przed i po transformacji. Przez transformację rozumiemy w tym przypadku translację (czyli przesunięcie), skalowanie oraz rotację (czyli obrót). Macierze te mają znaczenie na przykład w grafice komputerowej.
Najczęściej mają one o jeden rząd więcej niż wymiar wektora współrzędnych, a dokładniej mają rząd równy wymiarowi współrzędnych jednorodnych. Podzielić je można na trzy grupy, które zostały przedstawione poniżej[a].
W tym przypadku trzy przesunięcia mogą zostać zapisane jako jedna macierz, ponieważ różnią się tylko ostatnią kolumną.
gdzie:
Można także rozbić tę macierz na 3 osobne: T r a n X ( a ) , {\displaystyle TranX(a),} T r a n Y ( b ) {\displaystyle TranY(b)} oraz T r a n Z ( c ) . {\displaystyle TranZ(c).}
Niezależnie wykonujemy skalowanie względem każdej z osi przyjmując odpowiedni współczynnik dla każdej z nich.
Można także rozbić tę macierz na 3 osobne: S c a l e X ( S x ) , {\displaystyle ScaleX(S_{x}),} S c a l e Y ( S y ) {\displaystyle ScaleY(S_{y})} oraz S c a l e Z ( S z ) . {\displaystyle ScaleZ(S_{z}).}
Obroty przedstawiane są w różny sposób, dlatego też elementarne macierze rotacji muszą być przedstawiane oddzielnie.
Dla osi X: R o t X ( α ) = [ 1 0 0 0 0 cos α − sin α 0 0 sin α cos α 0 0 0 0 1 ] . {\displaystyle RotX(\alpha )={\begin{bmatrix}1&0&0&0\\0&\cos \alpha &-\sin \alpha &0\\0&\sin \alpha &\cos \alpha &0\\0&0&0&1\end{bmatrix}}.}
Dla osi Y: R o t Y ( β ) = [ cos β 0 sin β 0 0 1 0 0 − sin β 0 cos β 0 0 0 0 1 ] . {\displaystyle RotY(\beta )={\begin{bmatrix}\cos \beta &0&\sin \beta &0\\0&1&0&0\\-\sin \beta &0&\cos \beta &0\\0&0&0&1\end{bmatrix}}.}
Dla osi Z: R o t Z ( γ ) = [ cos γ − sin γ 0 0 sin γ cos γ 0 0 0 0 1 0 0 0 0 1 ] . {\displaystyle RotZ(\gamma )={\begin{bmatrix}\cos \gamma &-\sin \gamma &0&0\\\sin \gamma &\cos \gamma &0&0\\0&0&1&0\\0&0&0&1\end{bmatrix}}.}
Istnieje możliwość składania transformacji. Wówczas obliczamy macierz wynikową będącą iloczynem składowych macierzy transformacji, którą „działamy” na dany punkt w przestrzeni.
W powyższym przykładzie najpierw wykonujemy operację skalowania, następnie translacji o wektor. Takich operacji może być więcej. Każdą następną macierz transformacji dokładamy po lewej stronie iloczynu macierzy, przy czym mnożenie macierzy przez wektor wykonujemy od prawej strony do lewej.
Możemy także powyższą operację zastąpić iloczynem macierzy wynikowej przez wektor.
Macierz transformacji będącą złożeniem poszczególnych transformacji składowych otrzymamy ze wzoru.
Gdy są dane dwie (lub więcej) macierze przekształceń:
Obie macierze można złożyć w jedną macierz przekształcającą układ zerowy w układ drugi.
Rot02=Rot12*Rot01.
Macierze te oraz ich iloczyn należy do specjalnej grupy euklidesowej SE(3).
Specjalna grupa euklidesowa SE(3) to zbiór macierzy [ R T 0 1 ] {\displaystyle {\begin{bmatrix}R&T\\0&1\end{bmatrix}}} (gdzie R to macierz opisująca obrót, a T to macierz opisująca translację), które spełniają warunki:
Specjalna grupa euklidesowa może być także zapisana jako iloczyn wektora oraz grupy obrotów, tj.:
Macierze należące do SE(3) pozwalają opisać ruch ciała sztywnego. Do ich konstrukcji wykorzystane mogą być elementarne macierze transformacji. Przy takim zapisie macierzy konieczne jest także stosowanie współrzędnych jednorodnych, żeby wymiar wektora współrzędnych był równy liczbie kolumn macierzy.
Macierze należące do SE(3) pozwalają: