[][src]Struct nannou::math::Euler

#[repr(C)]
pub struct Euler<A> {
    pub x: A,
    pub y: A,
    pub z: A,
}

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.

Ranges

  • x: [-pi, pi]
  • y: [-pi/2, pi/2]
  • z: [-pi, pi]

Defining rotations using Euler angles

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:

  1. a 90° rotation around the x axis
  2. a 45° rotation around the y axis
  3. 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),
});

Fields

x: A

The angle to apply around the x axis. Also known at the pitch.

y: A

The angle to apply around the y axis. Also known at the yaw.

z: A

The angle to apply around the z axis. Also known at the roll.

Methods

impl<A> Euler<A>[src]

pub const fn new(x: A, y: A, z: A) -> Euler<A>[src]

Construct a set of euler angles.

Arguments

  • 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.

Trait Implementations

impl<A> AbsDiffEq<Euler<A>> for Euler<A> where
    A: Angle
[src]

type Epsilon = <A as AbsDiffEq<A>>::Epsilon

Used for specifying relative comparisons.

impl<A> Clone for Euler<A> where
    A: Clone
[src]

impl<A> Copy for Euler<A> where
    A: Copy
[src]

impl<A> Debug for Euler<A> where
    A: Debug
[src]

impl<'de, A> Deserialize<'de> for Euler<A> where
    A: Deserialize<'de>, 
[src]

impl<A> Eq for Euler<A> where
    A: Eq
[src]

impl<A> From<Euler<A>> for Basis3<<A as Angle>::Unitless> where
    A: Angle + Into<Rad<<A as Angle>::Unitless>>, 
[src]

fn from(src: Euler<A>) -> Basis3<<A as Angle>::Unitless>[src]

Create a three-dimensional rotation matrix from a set of euler angles.

impl<A> From<Euler<A>> for Matrix4<<A as Angle>::Unitless> where
    A: Angle + Into<Rad<<A as Angle>::Unitless>>, 
[src]

impl<A> From<Euler<A>> for Matrix3<<A as Angle>::Unitless> where
    A: Angle + Into<Rad<<A as Angle>::Unitless>>, 
[src]

impl<A> From<Euler<A>> for Quaternion<<A as Angle>::Unitless> where
    A: Angle + Into<Rad<<A as Angle>::Unitless>>, 
[src]

impl<S> From<Quaternion<S>> for Euler<Rad<S>> where
    S: BaseFloat
[src]

impl<A> PartialEq<Euler<A>> for Euler<A> where
    A: PartialEq<A>, 
[src]

impl<A> RelativeEq<Euler<A>> for Euler<A> where
    A: Angle
[src]

impl<A> Serialize for Euler<A> where
    A: Serialize
[src]

impl<A> StructuralEq for Euler<A>[src]

impl<A> StructuralPartialEq for Euler<A>[src]

impl<A> UlpsEq<Euler<A>> for Euler<A> where
    A: Angle
[src]

Auto Trait Implementations

impl<A> RefUnwindSafe for Euler<A> where
    A: RefUnwindSafe

impl<A> Send for Euler<A> where
    A: Send

impl<A> Sync for Euler<A> where
    A: Sync

impl<A> Unpin for Euler<A> where
    A: Unpin

impl<A> UnwindSafe for Euler<A> where
    A: UnwindSafe

Blanket Implementations

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S where
    D: AdaptFrom<S, Swp, Dwp, T>,
    Dwp: WhitePoint,
    Swp: WhitePoint,
    T: Component + Float
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T, U> ConvertInto<U> for T where
    U: ConvertFrom<T>, 
[src]

impl<T> DeserializeOwned for T where
    T: Deserialize<'de>, 
[src]

impl<Q, K> Equivalent<K> for Q where
    K: Borrow<Q> + ?Sized,
    Q: Eq + ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> SetParameter for T

impl<T> SetParameter for T

impl<T> Style for T where
    T: Any + Debug + PartialEq<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,