SciPy

scipy.spatial.transform.Rotation.as_quat

Rotation.as_quat()[source]

Represent as quaternions.

Rotations in 3 dimensions can be represented using unit norm quaternions [1]. The mapping from quaternions to rotations is two-to-one, i.e. quaternions q and -q, where -q simply reverses the sign of each component, represent the same spatial rotation.

Returns
quatnumpy.ndarray, shape (4,) or (N, 4)

Shape depends on shape of inputs used for initialization.

References

1(1,2)

https://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation

Examples

>>> from scipy.spatial.transform import Rotation as R

Represent a single rotation:

>>> r = R.from_dcm([
... [0, -1, 0],
... [1, 0, 0],
... [0, 0, 1]])
>>> r.as_quat()
array([0.        , 0.        , 0.70710678, 0.70710678])
>>> r.as_quat().shape
(4,)

Represent a stack with a single rotation:

>>> r = R.from_quat([[0, 0, 0, 1]])
>>> r.as_quat().shape
(1, 4)

Represent multiple rotaions in a single object:

>>> r = R.from_rotvec([[np.pi, 0, 0], [0, 0, np.pi/2]])
>>> r.as_quat().shape
(2, 4)