from_rodrigues#
- classmethod Quaternion.from_rodrigues(ro: ndarray | Vector3d | tuple | list, angles: ndarray | tuple | list | float | None = None) Quaternion [source]#
Create unit quaternions from three-component Rodrigues vectors \(\hat{\mathbf{n}}\) or four-component Rodrigues-Frank vectors \(\mathbf{\rho}\) [Rowenhorst et al., 2015].
- Parameters:
- ro
Rodrigues vectors \(\hat{\mathbf{n}}\) of three components. These are the components of the Rodrigues-Frank vectors \(\mathbf{\rho}\) if the angles \(\omega\) are passed.
- angles
Angles \(\omega\) of the Rodrigues-Frank vectors \(\mathbf{\rho}\), one per vector. If these are not passed,
ro
are the Rodrigues vectors \(\hat{\mathbf{n}}\).
- Returns:
Q
Unit quaternions.
See also
Notes
The Rodrigues-Frank vector \(\mathbf{\rho}\) is defined as
\[\mathbf{\rho} = \hat{\mathbf{n}}\tan\frac{\omega}{2}.\]If the vector length is \(\rho = |\mathbf{\rho}|\), the angle is given by
\[\omega = 2\arctan\rho.\]O. Rodrigues’s 1840 vector description was popularized by F. C. Frank due to its useful rectilinear mapping of fundamental zones, as is well-demonstrated in [Frank, 1988]. However, the length of these vectors, and thus their accuracy, scales with \(\tan\omega/2\). Additionally, two-fold rotations produce vectors of infinite length. Thus, Frank and others introduced the Rodrigues-Frank vector of length 4, consisting of a unit vector followed by the scaling factor \(\tan\omega/2\). This is better suited for storing data or performing rotation calculations, as discussed in [Rowenhorst et al., 2015].