Skip to main content
`Ctrl`+`K`

# 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:
    seq string

      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.

    angles float 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

    degrees bool, 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.

  References

  [1]

  https://en.wikipedia.org/wiki/Euler_angles#Definition_by_intrinsic_rotations

  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)