Skip to content

Euler Angles

Euler angle attitude representation.

Provides the EulerAngleOrder enum defining the 12 standard Euler angle rotation sequences, and the EulerAngle class representing an attitude as three successive rotations.

The EulerAngleOrder values are contiguous integers 0--11, suitable for use as branch indices in jax.lax.switch for JIT-compatible dispatch.

EulerAngle

Attitude represented as three successive rotations about specified axes.

Internal storage is always in radians. The use_degrees parameter on the constructor converts degree inputs to radians on construction.

This class is registered as a JAX pytree. The three angle scalars are leaves; the order (an EulerAngleOrder) is auxiliary data.

Parameters:

Name Type Description Default
order EulerAngleOrder

Rotation sequence (e.g. EulerAngleOrder.XYZ).

required
phi float

First rotation angle.

required
theta float

Second rotation angle.

required
psi float

Third rotation angle.

required
use_degrees bool

If True, interpret angles as degrees. Default: False.

False

order property

Rotation sequence.

phi property

First rotation angle in radians.

psi property

Third rotation angle in radians.

theta property

Second rotation angle in radians.

from_euler_angle(e, order) classmethod

Create from another EulerAngle with a different order.

Parameters:

Name Type Description Default
e EulerAngle

Source euler angle.

required
order EulerAngleOrder

Target rotation sequence.

required

Returns:

Name Type Description
EulerAngle EulerAngle

Equivalent euler angle in the target order.

from_euler_axis(ea, order) classmethod

Create from an EulerAxis.

Parameters:

Name Type Description Default
ea EulerAxis

Source euler axis.

required
order EulerAngleOrder

Target rotation sequence.

required

Returns:

Name Type Description
EulerAngle EulerAngle

Equivalent euler angle.

from_quaternion(q, order) classmethod

Create from a Quaternion.

Parameters:

Name Type Description Default
q Quaternion

Source quaternion.

required
order EulerAngleOrder

Target rotation sequence.

required

Returns:

Name Type Description
EulerAngle EulerAngle

Equivalent euler angle.

from_rotation_matrix(r, order) classmethod

Create from a RotationMatrix.

Parameters:

Name Type Description Default
r RotationMatrix

Source rotation matrix.

required
order EulerAngleOrder

Target rotation sequence.

required

Returns:

Name Type Description
EulerAngle EulerAngle

Equivalent euler angle.

from_vector(vec, order, use_degrees=False) classmethod

Create from a 3-element vector [phi, theta, psi].

Parameters:

Name Type Description Default
vec Array

Array-like of shape (3,).

required
order EulerAngleOrder

Rotation sequence.

required
use_degrees bool

If True, interpret as degrees.

False

Returns:

Name Type Description
EulerAngle EulerAngle

New instance.

to_euler_angle(order)

Convert to EulerAngle with a (possibly different) order.

Parameters:

Name Type Description Default
order EulerAngleOrder

Target rotation sequence.

required

Returns:

Name Type Description
EulerAngle EulerAngle

Equivalent euler angle in the target order.

to_euler_axis()

Convert to EulerAxis.

Returns:

Name Type Description
EulerAxis EulerAxis

Equivalent euler axis.

to_quaternion()

Convert to Quaternion.

Returns:

Name Type Description
Quaternion Quaternion

Equivalent quaternion.

to_rotation_matrix()

Convert to RotationMatrix.

Returns:

Name Type Description
RotationMatrix RotationMatrix

Equivalent rotation matrix.

EulerAngleOrder

Bases: IntEnum

The 12 standard Euler angle rotation sequences.

Each member specifies the axes for three successive rotations. For example, XYZ means rotate first about X, then Y, then Z.

Values are contiguous integers 0--11 for use as jax.lax.switch branch indices.

Attributes:

Name Type Description
XYX

X-Y-X symmetric sequence (index 0).

XYZ

X-Y-Z Tait-Bryan sequence, also known as Roll-Pitch-Yaw (index 1).

XZX

X-Z-X symmetric sequence (index 2).

XZY

X-Z-Y Tait-Bryan sequence (index 3).

YXY

Y-X-Y symmetric sequence (index 4).

YXZ

Y-X-Z Tait-Bryan sequence (index 5).

YZX

Y-Z-X Tait-Bryan sequence (index 6).

YZY

Y-Z-Y symmetric sequence (index 7).

ZXY

Z-X-Y Tait-Bryan sequence (index 8).

ZXZ

Z-X-Z symmetric sequence (index 9).

ZYX

Z-Y-X Tait-Bryan sequence, also known as Yaw-Pitch-Roll (index 10).

ZYZ

Z-Y-Z symmetric sequence (index 11).