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 $$\verb!rotatiematrix()!$$ met als argumenten een genormeerde kolomvector $$\mathbf{u}$$
en de rotatiehoek $$\theta$$ (in radiaal). De functie geeft een NumPy-matrix (dus GEEN array) terug, die de rotatiematrix
rond deze rotatiehoek over een hoek $$\theta$$ voorstelt.
De kolomvector (als NumPy-matrix) die genormeerde richtingsvector van de rotatie-as voorstelt, gevolgd door de rotatiehoek (in radiaal)
Een $$3 \times 3$$ rotatiematrix als NumPy-matrix.
u1 = np.matrix([[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.matrix([[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 ]]