Struct spectra::linear::Quaternion [] [src]

#[repr(C)]
pub struct Quaternion<S> { pub s: S, pub v: Vector3<S>, }

A quaternion in scalar/vector form.

This type is marked as #[repr(C)].

Fields

The scalar part of the quaternion.

The vector part of the quaternion.

Methods

impl<S> Quaternion<S> where
    S: BaseFloat
[src]

Construct a new quaternion from one scalar component and three imaginary components.

Construct a new quaternion from a scalar and a vector.

Construct a new quaternion as a closest arc between two vectors

Return the closest rotation that turns src vector into dst.

The conjugate of the quaternion.

Do a normalized linear interpolation with other, by amount.

Spherical Linear Intoperlation

Return the spherical linear interpolation between the quaternion and other. Both quaternions should be normalized first.

Performance notes

The acos operation used in slerp is an expensive operation, so unless your quarternions are far away from each other it's generally more advisable to use nlerp when you know your rotations are going to be small.

Trait Implementations

impl<S> Index<usize> for Quaternion<S> where
    S: BaseFloat
[src]

impl<S> Index<RangeTo<usize>> for Quaternion<S> where
    S: BaseFloat
[src]

impl<S> Index<Range<usize>> for Quaternion<S> where
    S: BaseFloat
[src]

impl<S> Index<RangeFrom<usize>> for Quaternion<S> where
    S: BaseFloat
[src]

impl<S> Index<RangeFull> for Quaternion<S> where
    S: BaseFloat
[src]

impl<S> Clone for Quaternion<S> where
    S: Clone
[src]

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

impl<S> MetricSpace for Quaternion<S> where
    S: BaseFloat
[src]

impl<S> Zero for Quaternion<S> where
    S: BaseFloat
[src]

Returns the additive identity element of Self, 0. Read more

Returns true if self is equal to the additive identity.

impl<S> Into<(S, S, S, S)> for Quaternion<S> where
    S: BaseFloat
[src]

Performs the conversion.

impl<S> Into<[S; 4]> for Quaternion<S> where
    S: BaseFloat
[src]

Performs the conversion.

impl<'a, S> Product<&'a Quaternion<S>> for Quaternion<S> where
    S: 'a + BaseFloat
[src]

impl<S> Product<Quaternion<S>> for Quaternion<S> where
    S: BaseFloat
[src]

impl<S> AsRef<[S; 4]> for Quaternion<S> where
    S: BaseFloat
[src]

Performs the conversion.

impl<S> AsRef<(S, S, S, S)> for Quaternion<S> where
    S: BaseFloat
[src]

Performs the conversion.

impl<S> Copy for Quaternion<S> where
    S: Copy
[src]

impl<'a, 'b, S> Add<&'a Quaternion<S>> for &'b Quaternion<S> where
    S: BaseFloat
[src]

The resulting type after applying the + operator

The method for the + operator

impl<'a, S> Add<&'a Quaternion<S>> for Quaternion<S> where
    S: BaseFloat
[src]

The resulting type after applying the + operator

The method for the + operator

impl<'a, S> Add<Quaternion<S>> for &'a Quaternion<S> where
    S: BaseFloat
[src]

The resulting type after applying the + operator

The method for the + operator

impl<S> Add<Quaternion<S>> for Quaternion<S> where
    S: BaseFloat
[src]

The resulting type after applying the + operator

The method for the + operator

impl<'a, S> Div<S> for &'a Quaternion<S> where
    S: BaseFloat
[src]

The resulting type after applying the / operator

The method for the / operator

impl<S> Div<S> for Quaternion<S> where
    S: BaseFloat
[src]

The resulting type after applying the / operator

The method for the / operator

impl<'a, S> Rem<S> for &'a Quaternion<S> where
    S: BaseFloat
[src]

impl<S> Rem<S> for Quaternion<S> where
    S: BaseFloat
[src]

impl<S> ApproxEq for Quaternion<S> where
    S: BaseFloat
[src]

impl<S> Rotation3<S> for Quaternion<S> where
    S: BaseFloat
[src]

impl<'a, 'b, S> Mul<&'a Vector3<S>> for &'b Quaternion<S> where
    S: BaseFloat
[src]

The resulting type after applying the * operator

The method for the * operator

impl<'a, S> Mul<Vector3<S>> for &'a Quaternion<S> where
    S: BaseFloat
[src]

The resulting type after applying the * operator

The method for the * operator

impl<'a, S> Mul<&'a Quaternion<S>> for Quaternion<S> where
    S: BaseFloat
[src]

The resulting type after applying the * operator

The method for the * operator

impl<'a, S> Mul<Quaternion<S>> for &'a Quaternion<S> where
    S: BaseFloat
[src]

The resulting type after applying the * operator

The method for the * operator

impl<'a, S> Mul<S> for &'a Quaternion<S> where
    S: BaseFloat
[src]

The resulting type after applying the * operator

The method for the * operator

impl<S> Mul<Quaternion<S>> for Quaternion<S> where
    S: BaseFloat
[src]

The resulting type after applying the * operator

The method for the * operator

impl<'a, S> Mul<&'a Vector3<S>> for Quaternion<S> where
    S: BaseFloat
[src]

The resulting type after applying the * operator

The method for the * operator

impl<'a, 'b, S> Mul<&'a Quaternion<S>> for &'b Quaternion<S> where
    S: BaseFloat
[src]

The resulting type after applying the * operator

The method for the * operator

impl<S> Mul<Vector3<S>> for Quaternion<S> where
    S: BaseFloat
[src]

The resulting type after applying the * operator

The method for the * operator

impl<S> Mul<S> for Quaternion<S> where
    S: BaseFloat
[src]

The resulting type after applying the * operator

The method for the * operator

impl<S> InnerSpace for Quaternion<S> where
    S: BaseFloat
[src]

Vector dot (or inner) product.

Returns true if the vector is perpendicular (at right angles) to the other vector. Read more

Returns the squared magnitude. Read more

The distance from the tail to the tip of the vector.

Returns the angle between two vectors in radians.

Returns a vector with the same direction, but with a magnitude of 1.

Returns a vector with the same direction and a given magnitude.

Returns the result of linearly interpolating the magnitude of the vector towards the magnitude of other by the specified amount. Read more

impl<S> IndexMut<RangeFrom<usize>> for Quaternion<S> where
    S: BaseFloat
[src]

impl<S> IndexMut<usize> for Quaternion<S> where
    S: BaseFloat
[src]

impl<S> IndexMut<Range<usize>> for Quaternion<S> where
    S: BaseFloat
[src]

impl<S> IndexMut<RangeFull> for Quaternion<S> where
    S: BaseFloat
[src]

impl<S> IndexMut<RangeTo<usize>> for Quaternion<S> where
    S: BaseFloat
[src]

impl<S> VectorSpace for Quaternion<S> where
    S: BaseFloat
[src]

impl<S> Sum<Quaternion<S>> for Quaternion<S> where
    S: BaseFloat
[src]

impl<'a, S> Sum<&'a Quaternion<S>> for Quaternion<S> where
    S: 'a + BaseFloat
[src]

impl<S> DivAssign<S> for Quaternion<S> where
    S: BaseFloat + DivAssign<S>, 
[src]

impl<S> PartialEq<Quaternion<S>> for Quaternion<S> where
    S: PartialEq<S>, 
[src]

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

impl<S> MulAssign<S> for Quaternion<S> where
    S: BaseFloat + MulAssign<S>, 
[src]

impl<S> AddAssign<Quaternion<S>> for Quaternion<S> where
    S: BaseFloat + AddAssign<S>, 
[src]

impl<'a, S> Sub<Quaternion<S>> for &'a Quaternion<S> where
    S: BaseFloat
[src]

The resulting type after applying the - operator

The method for the - operator

impl<'a, S> Sub<&'a Quaternion<S>> for Quaternion<S> where
    S: BaseFloat
[src]

The resulting type after applying the - operator

The method for the - operator

impl<'a, 'b, S> Sub<&'a Quaternion<S>> for &'b Quaternion<S> where
    S: BaseFloat
[src]

The resulting type after applying the - operator

The method for the - operator

impl<S> Sub<Quaternion<S>> for Quaternion<S> where
    S: BaseFloat
[src]

The resulting type after applying the - operator

The method for the - operator

impl<S> Rotation<Point3<S>> for Quaternion<S> where
    S: BaseFloat
[src]

Create a rotation to a given direction with an 'up' vector.

Create a shortest rotation to transform vector 'a' into 'b'. Both given vectors are assumed to have unit length. Read more

Rotate a vector using this rotation.

Create a new rotation which "un-does" this rotation. That is, r * r.invert() is the identity. Read more

Rotate a point using this rotation, by converting it to its representation as a vector. Read more

impl<'a, S> From<&'a (S, S, S, S)> for &'a Quaternion<S> where
    S: BaseFloat
[src]

Performs the conversion.

impl<S> From<[S; 4]> for Quaternion<S> where
    S: BaseFloat
[src]

Performs the conversion.

impl<S> From<(S, S, S, S)> for Quaternion<S> where
    S: BaseFloat
[src]

Performs the conversion.

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

Performs the conversion.

impl<'a, S> From<&'a [S; 4]> for &'a Quaternion<S> where
    S: BaseFloat
[src]

Performs the conversion.

impl<'a, S> From<&'a mut (S, S, S, S)> for &'a mut Quaternion<S> where
    S: BaseFloat
[src]

Performs the conversion.

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

Convert the matrix to a quaternion

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

Performs the conversion.

impl<'a, S> From<&'a mut [S; 4]> for &'a mut Quaternion<S> where
    S: BaseFloat
[src]

Performs the conversion.

impl<S> Rand for Quaternion<S> where
    S: BaseFloat + Rand
[src]

impl<S> AsMut<[S; 4]> for Quaternion<S> where
    S: BaseFloat
[src]

impl<S> AsMut<(S, S, S, S)> for Quaternion<S> where
    S: BaseFloat
[src]

impl<S> RemAssign<S> for Quaternion<S> where
    S: BaseFloat + RemAssign<S>, 
[src]

impl<S> SubAssign<Quaternion<S>> for Quaternion<S> where
    S: BaseFloat + SubAssign<S>, 
[src]

impl<S> One for Quaternion<S> where
    S: BaseFloat
[src]

Returns the multiplicative identity element of Self, 1. Read more

impl<S> Debug for Quaternion<S> where
    S: Debug
[src]

Formats the value using the given formatter.

impl<S> Neg for Quaternion<S> where
    S: BaseFloat
[src]

impl<'a, S> Neg for &'a Quaternion<S> where
    S: BaseFloat
[src]