Rotate a vector \(\boldsymbol{a}\in\mathbb{R}^3\)
along an axis \(\boldsymbol{b}\in\mathbb{R}^3\) with angle
\(\alpha\in\mathbb{R}\). The rotation is performed using the
rotation-matrix
\[\begin{split}\boldsymbol{R}_\boldsymbol{n}(\alpha)=\begin{pmatrix}
n_1^2 (1-\cos\alpha)+ \cos\alpha&n_1n_2(1-\cos\alpha)-n_3\sin\alpha&n_1n_3(1-\cos\alpha)+n_2\sin\alpha\\
n_2n_1(1-\cos\alpha)+n_3\sin\alpha&n_2^2 (1-\cos\alpha)+ \cos\alpha&n_2n_3(1-\cos\alpha)-n_1\sin\alpha\\
n_3n_1(1-\cos\alpha)-n_2\sin\alpha&n_3n_2(1-\cos\alpha)+n_1\sin\alpha&n_3^2 (1-\cos\alpha)+ \cos\alpha
\end{pmatrix}\end{split}\]
where \(n_i\) are the entries for the unit vector
\(\boldsymbol{n}\) of the axis. The new coordinates
\(\boldsymbol{c}\) are then calculated using a matrix-vector
multiplication
\[\boldsymbol{c}=\boldsymbol{R}_\boldsymbol{n}\boldsymbol{a}.\]
Parameters: |
- data : list
Vector \(\boldsymbol{a}\)
- axis : integer, string, list
Axis \(\boldsymbol{b}\)
- angle : float
Angle
- is_deg : bool
True if the input is in degree
- dim : integer, optional
Number of dimensions
|
Returns: |
- coord : list
Vector c as the result of the rotation
|