from_rodrigues#

classmethod Misorientation.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.

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].