SciPy

scipy.spatial.transform.Rotation.as_quat

Rotation.as_quat(self)[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

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)