In de 3-dimensionale ruimte wordt een rotatie rond de rechte (door de oorsprong) met genormeerde richtingsvector $$\vec{u}$$
over een hoek $$\theta$$ gegeven door de rotatiematrix:
$$\mathbf{R} = \cos{\theta} \mathbf{I_3} + \sin{\theta} [\mathbf{u}]_\times + (1 - \cos{\theta}) \mathbf{u} \cdot \mathbf{u}^T
$$
Hierin stelt $$\mathbf{I_3}$$ de $$3 \times 3$$ eenheidsmatrix voor, en staat $$[\mathbf{u}]_\times$$ voor de matrix
$$
\left(
\begin{array}{ccc}
0 & -u_z & u_y\\
u_z & 0 & -u_x\\
-u_y & u_x & 0\\
\end{array} \right)
$$
Schrijf de functie rotatiematrix()
met als argumenten een genormeerde kolomvector $$\mathbf{u}$$, voorgesteld
door een 1D NumPy-rij, en de rotatiehoek $$\theta$$ (in radiaal). De functie geeft een NumPy-tabel (dus 2-dimensionale rij) terug,
die de rotatiematrix rond deze rotatiehoek over een hoek $$\theta$$ voorstelt.
De kolomvector (als 1D NumPy-rij) die genormeerde richtingsvector van de rotatie-as voorstelt, gevolgd door de rotatiehoek (in radiaal)
Een $$3 \times 3$$ rotatiematrix als NumPy-tabel (dus een 2D rij).
u1 = np.array([0.,0.,1.]) t1 = math.pi/2.0 rotatiematrix(u1, t1) = [[ 6.12323400e-17 -1.00000000e+00 0.00000000e+00] [ 1.00000000e+00 6.12323400e-17 0.00000000e+00] [ 0.00000000e+00 0.00000000e+00 1.00000000e+00]] w3 = math.sqrt(3) u2 = np.array([1./w3,1./w3,1./w3]) t2 = math.pi/6.0 rotatiematrix(u2, t2) = [[ 0.9106836 -0.24401694 0.33333333] [ 0.33333333 0.9106836 -0.24401694] [-0.24401694 0.33333333 0.9106836 ]]