scipy.spatial.transform.Rotation.from_euler#
- classmethod Rotation.from_euler(cls, seq, angles, degrees=False)#
Initialize from Euler angles.
Rotations in 3-D can be represented by a sequence of 3 rotations around a sequence of axes. In theory, any three axes spanning the 3-D Euclidean space are enough. In practice, the axes of rotation are chosen to be the basis vectors.
The three rotations can either be in a global frame of reference (extrinsic) or in a body centred frame of reference (intrinsic), which is attached to, and moves with, the object under rotation [1].
- Parameters:
- seqstring
Specifies sequence of axes for rotations. Up to 3 characters belonging to the set {‘X’, ‘Y’, ‘Z’} for intrinsic rotations, or {‘x’, ‘y’, ‘z’} for extrinsic rotations. Extrinsic and intrinsic rotations cannot be mixed in one function call.
- anglesfloat or array_like, shape (N,) or (N, [1 or 2 or 3])
Euler angles specified in radians (degrees is False) or degrees (degrees is True). For a single character seq, angles can be:
a single value
array_like with shape (N,), where each angle[i] corresponds to a single rotation
array_like with shape (N, 1), where each angle[i, 0] corresponds to a single rotation
For 2- and 3-character wide seq, angles can be:
array_like with shape (W,) where W is the width of seq, which corresponds to a single rotation with W axes
array_like with shape (N, W) where each angle[i] corresponds to a sequence of Euler angles describing a single rotation
- degreesbool, optional
If True, then the given angles are assumed to be in degrees. Default is False.
- Returns:
- rotation
Rotation
instance Object containing the rotation represented by the sequence of rotations around given axes with given angles.
- rotation
References
Examples
>>> from scipy.spatial.transform import Rotation as R
Initialize a single rotation along a single axis:
>>> r = R.from_euler('x', 90, degrees=True) >>> r.as_quat().shape (4,)
Initialize a single rotation with a given axis sequence:
>>> r = R.from_euler('zyx', [90, 45, 30], degrees=True) >>> r.as_quat().shape (4,)
Initialize a stack with a single rotation around a single axis:
>>> r = R.from_euler('x', [90], degrees=True) >>> r.as_quat().shape (1, 4)
Initialize a stack with a single rotation with an axis sequence:
>>> r = R.from_euler('zyx', [[90, 45, 30]], degrees=True) >>> r.as_quat().shape (1, 4)
Initialize multiple elementary rotations in one object:
>>> r = R.from_euler('x', [90, 45, 30], degrees=True) >>> r.as_quat().shape (3, 4)
Initialize multiple rotations in one object:
>>> r = R.from_euler('zyx', [[90, 45, 30], [35, 45, 90]], degrees=True) >>> r.as_quat().shape (2, 4)