FastTransforms
|
Every orthogonal matrix \(Q \in \mathbb{R}^{3\times3}\) can be decomposed as a product of \(ZYZ\) Euler angles and, if necessary, a reflection \(R\) about the \(xy\)-plane. More...
#include <fasttransforms.h>
Data Fields | |
double | s [3] |
double | c [3] |
int | sign |
Every orthogonal matrix \(Q \in \mathbb{R}^{3\times3}\) can be decomposed as a product of \(ZYZ\) Euler angles and, if necessary, a reflection \(R\) about the \(xy\)-plane.
\[ Q = ZYZR, \]
where the \(z\)-axis rotations are:
\[ Z = \begin{pmatrix} c & -s & 0\\ s & c & 0\\ 0 & 0 & 1\end{pmatrix}, \]
the \(y\)-axis rotation is:
\[ Y = \begin{pmatrix} c & 0 & -s\\ 0 & 1 & 0\\ s & 0 & c\end{pmatrix}, \]
and the potential reflection is:
\[ R = \begin{pmatrix} 1 & 0 & 0\\ 0 & 1 & 0\\ 0 & 0 & \pm 1\end{pmatrix}. \]
The reflection is stored as an integer sign
corresponding to the bottom right entry.