Macierz Obrotu Wokół Dowolnej Osi o Dowolny Kąt w Przestrzeni 3D

Obrót punktu lub wektora wokół dowolnej osi w przestrzeni 3D

Dany jest punkt P o współrzędnych P=(P_x,P_y,P_z). Wykonujemy obrót tego punktu wokół dowolnej osi zorientowanej tak jak wektor \vec{n}=[a,b,c]. Wektor ten jest wektorem jednostkowym, tzn |\vec{n}|=1. Oś obrotu przechodzi przez początek układu współrzędnych. Obrót wykonamy o kąt skierowany \varphi. Aby dokonać takiego obrotu trzeba wykonać następujące mnożenie.

    \[\mathbf{P}^{\prime} = \mathbf{M} \cdot \mathbf{P},\]

gdzie punkt P zapiszemy na potrzeby rachunku macierzowego w postaci takiej \mathbf{P} = \begin{bmatrix} P_x \\ P_y \\P_z \end{bmatrix}, wektor \vec{n} zapiszemy podobnie jako \mathbf{n}=\begin{bmatrix} a \\ b \\ c \end{bmatrix}. Natomiast macierz \mathbf{M} ma następującą postać.

    \[\mathbf{M} = \begin{bmatrix} a^2(1-\cos \varphi) + \cos \varphi &                    ab(1-\cos \varphi) - c\sin \varphi &                    ac(1-\cos \varphi) + b\sin \varphi \\                   ab(1-\cos \varphi) + c\cos \varphi &                    b^2(1-\cos \varphi) + \cos \varphi &                    bc(1-\cos \varphi) - a\sin \varphi \\                    ac(1-\cos \varphi) - b\sin \varphi &                    bc(1-\cos \varphi) + a\sin \varphi &                   c^2(1-\cos \varphi) + \cos \varphi\end{bmatrix}\]

Można to także zapisać skrótowo.

    \[\mathbf{M} = \mathbf{n} \mathbf{n}^T(1-\cos \varphi) + \mathbf{I}\cos \varphi +\begin{bmatrix} 0 & -c & b \\ c & 0 & -a \\ -b & a & 0  \end{bmatrix}\sin \varphi\]

Obejrzyj w wersji wideo poniżej.
Continue reading