#[repr(C)]
pub struct Euler<A: Angle> {
pub x: A,
pub y: A,
pub z: A,
}
Expand description
A set of Euler angles representing a rotation in three-dimensional space.
This type is marked as #[repr(C)]
.
The axis rotation sequence is XYZ. That is, the rotation is first around
the X axis, then the Y axis, and lastly the Z axis (using intrinsic
rotations). Since all three rotation axes are used, the angles are
Tait–Bryan angles rather than proper Euler angles.
- x: [-pi, pi]
- y: [-pi/2, pi/2]
- z: [-pi, pi]
Note that while Euler angles are intuitive to define, they are prone to
gimbal lock and are challenging to interpolate between. Instead we
recommend that you convert them to a more robust representation, such as a
quaternion or a rotation matrix. To this end, From<Euler<A>>
conversions
are provided for the following types:
For example, to define a quaternion that applies the following:
- a 90° rotation around the x axis
- a 45° rotation around the y axis
- a 15° rotation around the z axis
you can use the following code:
use cgmath::{Deg, Euler, Quaternion};
let rotation = Quaternion::from(Euler {
x: Deg(90.0),
y: Deg(45.0),
z: Deg(15.0),
});
The angle to apply around the x axis. Also known at the pitch.
The angle to apply around the y axis. Also known at the yaw.
The angle to apply around the z axis. Also known at the roll.
Construct a set of euler angles.
x
- The angle to apply around the x axis. Also known at the pitch.
y
- The angle to apply around the y axis. Also known at the yaw.
z
- The angle to apply around the z axis. Also known at the roll.
Used for specifying relative comparisons.
The default tolerance to use when testing values that are close together.
Read more
The default relative tolerance for testing values that are far-apart.
Read more
The default ULPs to tolerate when testing values that are far-apart.
Read more
A test for equality that uses a relative comparison if the values are far apart.
A test for equality that uses units in the last place (ULP) if the values are far apart.
The inverse of ApproxEq::relative_eq
.
The inverse of ApproxEq::ulps_eq
.
Performs copy-assignment from
source
.
Read more
Formats the value using the given formatter.
Read more
Create a three-dimensional rotation matrix from a set of euler angles.
Converts to this type from the input type.
Converts to this type from the input type.
Converts to this type from the input type.
Converts to this type from the input type.
This method tests for self
and other
values to be equal, and is used
by ==
.
This method tests for !=
. The default implementation is almost always
sufficient, and should not be overridden without very good reason.
Generates a random instance of this type using the specified source of
randomness.
Immutably borrows from an owned value.
Read more
Mutably borrows from an owned value.
Read more
Returns the argument unchanged.
Calls U::from(self)
.
That is, this conversion is whatever the implementation of
From<T> for U
chooses to do.
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning.
Read more
Uses borrowed data to replace owned data, usually by cloning.
Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.