[][src]Struct nalgebra::geometry::Rotation

#[repr(C)]
pub struct Rotation<N: Scalar, D: DimName> where
    DefaultAllocator: Allocator<N, D, D>, 
{ /* fields omitted */ }

A rotation matrix.

Methods

impl<N: Scalar, D: DimName> Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D>, 
[src]

pub fn matrix(&self) -> &MatrixN<N, D>[src]

A reference to the underlying matrix representation of this rotation.

Example

let rot = Rotation3::from_axis_angle(&Vector3::z_axis(), f32::consts::FRAC_PI_6);
let expected = Matrix3::new(0.8660254, -0.5,      0.0,
                            0.5,       0.8660254, 0.0,
                            0.0,       0.0,       1.0);
assert_eq!(*rot.matrix(), expected);


let rot = Rotation2::new(f32::consts::FRAC_PI_6);
let expected = Matrix2::new(0.8660254, -0.5,
                            0.5,       0.8660254);
assert_eq!(*rot.matrix(), expected);

pub unsafe fn matrix_mut(&mut self) -> &mut MatrixN<N, D>[src]

Deprecated:

Use .matrix_mut_unchecked() instead.

A mutable reference to the underlying matrix representation of this rotation.

pub fn matrix_mut_unchecked(&mut self) -> &mut MatrixN<N, D>[src]

A mutable reference to the underlying matrix representation of this rotation.

This is suffixed by "_unchecked" because this allows the user to replace the matrix by another one that is non-square, non-inversible, or non-orthonormal. If one of those properties is broken, subsequent method calls may be UB.

pub fn into_inner(self) -> MatrixN<N, D>[src]

Unwraps the underlying matrix.

Example

let rot = Rotation3::from_axis_angle(&Vector3::z_axis(), f32::consts::FRAC_PI_6);
let mat = rot.into_inner();
let expected = Matrix3::new(0.8660254, -0.5,      0.0,
                            0.5,       0.8660254, 0.0,
                            0.0,       0.0,       1.0);
assert_eq!(mat, expected);


let rot = Rotation2::new(f32::consts::FRAC_PI_6);
let mat = rot.into_inner();
let expected = Matrix2::new(0.8660254, -0.5,
                            0.5,       0.8660254);
assert_eq!(mat, expected);

pub fn unwrap(self) -> MatrixN<N, D>[src]

Deprecated:

use .into_inner() instead

Unwraps the underlying matrix. Deprecated: Use Rotation::into_inner instead.

pub fn to_homogeneous(&self) -> MatrixN<N, DimNameSum<D, U1>> where
    N: Zero + One,
    D: DimNameAdd<U1>,
    DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>>, 
[src]

Converts this rotation into its equivalent homogeneous transformation matrix.

This is the same as self.into().

Example

let rot = Rotation3::from_axis_angle(&Vector3::z_axis(), f32::consts::FRAC_PI_6);
let expected = Matrix4::new(0.8660254, -0.5,      0.0, 0.0,
                            0.5,       0.8660254, 0.0, 0.0,
                            0.0,       0.0,       1.0, 0.0,
                            0.0,       0.0,       0.0, 1.0);
assert_eq!(rot.to_homogeneous(), expected);


let rot = Rotation2::new(f32::consts::FRAC_PI_6);
let expected = Matrix3::new(0.8660254, -0.5,      0.0,
                            0.5,       0.8660254, 0.0,
                            0.0,       0.0,       1.0);
assert_eq!(rot.to_homogeneous(), expected);

pub fn from_matrix_unchecked(matrix: MatrixN<N, D>) -> Self[src]

Creates a new rotation from the given square matrix.

The matrix squareness is checked but not its orthonormality.

Example

let mat = Matrix3::new(0.8660254, -0.5,      0.0,
                       0.5,       0.8660254, 0.0,
                       0.0,       0.0,       1.0);
let rot = Rotation3::from_matrix_unchecked(mat);

assert_eq!(*rot.matrix(), mat);


let mat = Matrix2::new(0.8660254, -0.5,
                       0.5,       0.8660254);
let rot = Rotation2::from_matrix_unchecked(mat);

assert_eq!(*rot.matrix(), mat);

pub fn transpose(&self) -> Self[src]

Transposes self.

Same as .inverse() because the inverse of a rotation matrix is its transform.

Example

let rot = Rotation3::new(Vector3::new(1.0, 2.0, 3.0));
let tr_rot = rot.transpose();
assert_relative_eq!(rot * tr_rot, Rotation3::identity(), epsilon = 1.0e-6);
assert_relative_eq!(tr_rot * rot, Rotation3::identity(), epsilon = 1.0e-6);

let rot = Rotation2::new(1.2);
let tr_rot = rot.transpose();
assert_relative_eq!(rot * tr_rot, Rotation2::identity(), epsilon = 1.0e-6);
assert_relative_eq!(tr_rot * rot, Rotation2::identity(), epsilon = 1.0e-6);

pub fn inverse(&self) -> Self[src]

Inverts self.

Same as .transpose() because the inverse of a rotation matrix is its transform.

Example

let rot = Rotation3::new(Vector3::new(1.0, 2.0, 3.0));
let inv = rot.inverse();
assert_relative_eq!(rot * inv, Rotation3::identity(), epsilon = 1.0e-6);
assert_relative_eq!(inv * rot, Rotation3::identity(), epsilon = 1.0e-6);

let rot = Rotation2::new(1.2);
let inv = rot.inverse();
assert_relative_eq!(rot * inv, Rotation2::identity(), epsilon = 1.0e-6);
assert_relative_eq!(inv * rot, Rotation2::identity(), epsilon = 1.0e-6);

pub fn transpose_mut(&mut self)[src]

Transposes self in-place.

Same as .inverse_mut() because the inverse of a rotation matrix is its transform.

Example

let rot = Rotation3::new(Vector3::new(1.0, 2.0, 3.0));
let mut tr_rot = Rotation3::new(Vector3::new(1.0, 2.0, 3.0));
tr_rot.transpose_mut();

assert_relative_eq!(rot * tr_rot, Rotation3::identity(), epsilon = 1.0e-6);
assert_relative_eq!(tr_rot * rot, Rotation3::identity(), epsilon = 1.0e-6);

let rot = Rotation2::new(1.2);
let mut tr_rot = Rotation2::new(1.2);
tr_rot.transpose_mut();

assert_relative_eq!(rot * tr_rot, Rotation2::identity(), epsilon = 1.0e-6);
assert_relative_eq!(tr_rot * rot, Rotation2::identity(), epsilon = 1.0e-6);

pub fn inverse_mut(&mut self)[src]

Inverts self in-place.

Same as .transpose_mut() because the inverse of a rotation matrix is its transform.

Example

let rot = Rotation3::new(Vector3::new(1.0, 2.0, 3.0));
let mut inv = Rotation3::new(Vector3::new(1.0, 2.0, 3.0));
inv.inverse_mut();

assert_relative_eq!(rot * inv, Rotation3::identity(), epsilon = 1.0e-6);
assert_relative_eq!(inv * rot, Rotation3::identity(), epsilon = 1.0e-6);

let rot = Rotation2::new(1.2);
let mut inv = Rotation2::new(1.2);
inv.inverse_mut();

assert_relative_eq!(rot * inv, Rotation2::identity(), epsilon = 1.0e-6);
assert_relative_eq!(inv * rot, Rotation2::identity(), epsilon = 1.0e-6);

impl<N, D: DimName> Rotation<N, D> where
    N: Scalar + Zero + One,
    DefaultAllocator: Allocator<N, D, D>, 
[src]

pub fn identity() -> Rotation<N, D>[src]

Creates a new square identity rotation of the given dimension.

Example

let rot1 = Quaternion::identity();
let rot2 = Quaternion::new(1.0, 2.0, 3.0, 4.0);

assert_eq!(rot1 * rot2, rot2);
assert_eq!(rot2 * rot1, rot2);

Trait Implementations

impl<N: Scalar, D: DimName> Clone for Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D>,
    <DefaultAllocator as Allocator<N, D, D>>::Buffer: Clone
[src]

fn clone_from(&mut self, source: &Self)
1.0.0
[src]

Performs copy-assignment from source. Read more

impl<N: Real> From<Rotation<N, U2>> for Matrix3<N>[src]

impl<N: Real> From<Rotation<N, U2>> for Matrix2<N>[src]

impl<N: Real> From<Rotation<N, U3>> for Matrix4<N>[src]

impl<N: Real> From<Rotation<N, U3>> for Matrix3<N>[src]

impl<N: Real> From<Rotation<N, U3>> for UnitQuaternion<N>[src]

impl<N: Real> From<Rotation<N, U2>> for UnitComplex<N>[src]

impl<N: Scalar + Eq, D: DimName> Eq for Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D>, 
[src]

impl<N: Scalar, D: DimName> Copy for Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D>,
    <DefaultAllocator as Allocator<N, D, D>>::Buffer: Copy
[src]

impl<N: Scalar + PartialEq, D: DimName> PartialEq<Rotation<N, D>> for Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D>, 
[src]

#[must_use]
fn ne(&self, other: &Rhs) -> bool
1.0.0
[src]

This method tests for !=.

impl<N, D: DimName> Display for Rotation<N, D> where
    N: Real + Display,
    DefaultAllocator: Allocator<N, D, D> + Allocator<usize, D, D>, 
[src]

impl<N: Debug + Scalar, D: Debug + DimName> Debug for Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D>, 
[src]

impl<N, D: DimName> Mul<Rotation<N, D>> for Rotation<N, D> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul,
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, D> + Allocator<N, D, D>, 
[src]

type Output = Rotation<N, D>

The resulting type after applying the * operator.

impl<'a, N, D: DimName> Mul<Rotation<N, D>> for &'a Rotation<N, D> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul,
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, D> + Allocator<N, D, D>, 
[src]

type Output = Rotation<N, D>

The resulting type after applying the * operator.

impl<'b, N, D: DimName> Mul<&'b Rotation<N, D>> for Rotation<N, D> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul,
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, D> + Allocator<N, D, D>, 
[src]

type Output = Rotation<N, D>

The resulting type after applying the * operator.

impl<'a, 'b, N, D: DimName> Mul<&'b Rotation<N, D>> for &'a Rotation<N, D> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul,
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, D> + Allocator<N, D, D>, 
[src]

type Output = Rotation<N, D>

The resulting type after applying the * operator.

impl<N, D1: DimName, R2: Dim, C2: Dim, SB: Storage<N, R2, C2>> Mul<Matrix<N, R2, C2, SB>> for Rotation<N, D1> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul,
    DefaultAllocator: Allocator<N, D1, D1> + Allocator<N, R2, C2> + Allocator<N, D1, C2>,
    DefaultAllocator: Allocator<N, D1, C2>,
    ShapeConstraint: AreMultipliable<D1, D1, R2, C2>, 
[src]

type Output = MatrixMN<N, D1, C2>

The resulting type after applying the * operator.

impl<'a, N, D1: DimName, R2: Dim, C2: Dim, SB: Storage<N, R2, C2>> Mul<Matrix<N, R2, C2, SB>> for &'a Rotation<N, D1> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul,
    DefaultAllocator: Allocator<N, D1, D1> + Allocator<N, R2, C2> + Allocator<N, D1, C2>,
    DefaultAllocator: Allocator<N, D1, C2>,
    ShapeConstraint: AreMultipliable<D1, D1, R2, C2>, 
[src]

type Output = MatrixMN<N, D1, C2>

The resulting type after applying the * operator.

impl<'b, N, D1: DimName, R2: Dim, C2: Dim, SB: Storage<N, R2, C2>> Mul<&'b Matrix<N, R2, C2, SB>> for Rotation<N, D1> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul,
    DefaultAllocator: Allocator<N, D1, D1> + Allocator<N, R2, C2> + Allocator<N, D1, C2>,
    DefaultAllocator: Allocator<N, D1, C2>,
    ShapeConstraint: AreMultipliable<D1, D1, R2, C2>, 
[src]

type Output = MatrixMN<N, D1, C2>

The resulting type after applying the * operator.

impl<'a, 'b, N, D1: DimName, R2: Dim, C2: Dim, SB: Storage<N, R2, C2>> Mul<&'b Matrix<N, R2, C2, SB>> for &'a Rotation<N, D1> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul,
    DefaultAllocator: Allocator<N, D1, D1> + Allocator<N, R2, C2> + Allocator<N, D1, C2>,
    DefaultAllocator: Allocator<N, D1, C2>,
    ShapeConstraint: AreMultipliable<D1, D1, R2, C2>, 
[src]

type Output = MatrixMN<N, D1, C2>

The resulting type after applying the * operator.

impl<N, R1: Dim, C1: Dim, D2: DimName, SA: Storage<N, R1, C1>> Mul<Rotation<N, D2>> for Matrix<N, R1, C1, SA> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul,
    DefaultAllocator: Allocator<N, R1, C1> + Allocator<N, D2, D2> + Allocator<N, R1, D2>,
    DefaultAllocator: Allocator<N, R1, D2>,
    ShapeConstraint: AreMultipliable<R1, C1, D2, D2>, 
[src]

type Output = MatrixMN<N, R1, D2>

The resulting type after applying the * operator.

impl<'a, N, R1: Dim, C1: Dim, D2: DimName, SA: Storage<N, R1, C1>> Mul<Rotation<N, D2>> for &'a Matrix<N, R1, C1, SA> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul,
    DefaultAllocator: Allocator<N, R1, C1> + Allocator<N, D2, D2> + Allocator<N, R1, D2>,
    DefaultAllocator: Allocator<N, R1, D2>,
    ShapeConstraint: AreMultipliable<R1, C1, D2, D2>, 
[src]

type Output = MatrixMN<N, R1, D2>

The resulting type after applying the * operator.

impl<'b, N, R1: Dim, C1: Dim, D2: DimName, SA: Storage<N, R1, C1>> Mul<&'b Rotation<N, D2>> for Matrix<N, R1, C1, SA> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul,
    DefaultAllocator: Allocator<N, R1, C1> + Allocator<N, D2, D2> + Allocator<N, R1, D2>,
    DefaultAllocator: Allocator<N, R1, D2>,
    ShapeConstraint: AreMultipliable<R1, C1, D2, D2>, 
[src]

type Output = MatrixMN<N, R1, D2>

The resulting type after applying the * operator.

impl<'a, 'b, N, R1: Dim, C1: Dim, D2: DimName, SA: Storage<N, R1, C1>> Mul<&'b Rotation<N, D2>> for &'a Matrix<N, R1, C1, SA> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul,
    DefaultAllocator: Allocator<N, R1, C1> + Allocator<N, D2, D2> + Allocator<N, R1, D2>,
    DefaultAllocator: Allocator<N, R1, D2>,
    ShapeConstraint: AreMultipliable<R1, C1, D2, D2>, 
[src]

type Output = MatrixMN<N, R1, D2>

The resulting type after applying the * operator.

impl<N, D: DimName> Mul<Point<N, D>> for Rotation<N, D> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul,
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, U1> + Allocator<N, D, U1>,
    DefaultAllocator: Allocator<N, D>,
    ShapeConstraint: AreMultipliable<D, D, D, U1>, 
[src]

type Output = Point<N, D>

The resulting type after applying the * operator.

impl<'a, N, D: DimName> Mul<Point<N, D>> for &'a Rotation<N, D> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul,
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, U1> + Allocator<N, D, U1>,
    DefaultAllocator: Allocator<N, D>,
    ShapeConstraint: AreMultipliable<D, D, D, U1>, 
[src]

type Output = Point<N, D>

The resulting type after applying the * operator.

impl<'b, N, D: DimName> Mul<&'b Point<N, D>> for Rotation<N, D> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul,
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, U1> + Allocator<N, D, U1>,
    DefaultAllocator: Allocator<N, D>,
    ShapeConstraint: AreMultipliable<D, D, D, U1>, 
[src]

type Output = Point<N, D>

The resulting type after applying the * operator.

impl<'a, 'b, N, D: DimName> Mul<&'b Point<N, D>> for &'a Rotation<N, D> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul,
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, U1> + Allocator<N, D, U1>,
    DefaultAllocator: Allocator<N, D>,
    ShapeConstraint: AreMultipliable<D, D, D, U1>, 
[src]

type Output = Point<N, D>

The resulting type after applying the * operator.

impl<N, D: DimName, S: Storage<N, D>> Mul<Unit<Matrix<N, D, U1, S>>> for Rotation<N, D> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul,
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, U1> + Allocator<N, D, U1>,
    DefaultAllocator: Allocator<N, D>,
    ShapeConstraint: AreMultipliable<D, D, D, U1>, 
[src]

type Output = Unit<VectorN<N, D>>

The resulting type after applying the * operator.

impl<'a, N, D: DimName, S: Storage<N, D>> Mul<Unit<Matrix<N, D, U1, S>>> for &'a Rotation<N, D> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul,
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, U1> + Allocator<N, D, U1>,
    DefaultAllocator: Allocator<N, D>,
    ShapeConstraint: AreMultipliable<D, D, D, U1>, 
[src]

type Output = Unit<VectorN<N, D>>

The resulting type after applying the * operator.

impl<'b, N, D: DimName, S: Storage<N, D>> Mul<&'b Unit<Matrix<N, D, U1, S>>> for Rotation<N, D> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul,
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, U1> + Allocator<N, D, U1>,
    DefaultAllocator: Allocator<N, D>,
    ShapeConstraint: AreMultipliable<D, D, D, U1>, 
[src]

type Output = Unit<VectorN<N, D>>

The resulting type after applying the * operator.

impl<'a, 'b, N, D: DimName, S: Storage<N, D>> Mul<&'b Unit<Matrix<N, D, U1, S>>> for &'a Rotation<N, D> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul,
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, U1> + Allocator<N, D, U1>,
    DefaultAllocator: Allocator<N, D>,
    ShapeConstraint: AreMultipliable<D, D, D, U1>, 
[src]

type Output = Unit<VectorN<N, D>>

The resulting type after applying the * operator.

impl<'a, 'b, N: Real> Mul<&'b Rotation<N, U3>> for &'a UnitQuaternion<N> where
    DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U3>, 
[src]

type Output = UnitQuaternion<N>

The resulting type after applying the * operator.

impl<'a, N: Real> Mul<Rotation<N, U3>> for &'a UnitQuaternion<N> where
    DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U3>, 
[src]

type Output = UnitQuaternion<N>

The resulting type after applying the * operator.

impl<'b, N: Real> Mul<&'b Rotation<N, U3>> for UnitQuaternion<N> where
    DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U3>, 
[src]

type Output = UnitQuaternion<N>

The resulting type after applying the * operator.

impl<N: Real> Mul<Rotation<N, U3>> for UnitQuaternion<N> where
    DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U3>, 
[src]

type Output = UnitQuaternion<N>

The resulting type after applying the * operator.

impl<'a, 'b, N: Real> Mul<&'b Unit<Quaternion<N>>> for &'a Rotation<N, U3> where
    DefaultAllocator: Allocator<N, U3, U3> + Allocator<N, U4, U1>, 
[src]

type Output = UnitQuaternion<N>

The resulting type after applying the * operator.

impl<'a, N: Real> Mul<Unit<Quaternion<N>>> for &'a Rotation<N, U3> where
    DefaultAllocator: Allocator<N, U3, U3> + Allocator<N, U4, U1>, 
[src]

type Output = UnitQuaternion<N>

The resulting type after applying the * operator.

impl<'b, N: Real> Mul<&'b Unit<Quaternion<N>>> for Rotation<N, U3> where
    DefaultAllocator: Allocator<N, U3, U3> + Allocator<N, U4, U1>, 
[src]

type Output = UnitQuaternion<N>

The resulting type after applying the * operator.

impl<N: Real> Mul<Unit<Quaternion<N>>> for Rotation<N, U3> where
    DefaultAllocator: Allocator<N, U3, U3> + Allocator<N, U4, U1>, 
[src]

type Output = UnitQuaternion<N>

The resulting type after applying the * operator.

impl<N: Real> Mul<Rotation<N, U2>> for UnitComplex<N> where
    DefaultAllocator: Allocator<N, U2, U2>, 
[src]

type Output = UnitComplex<N>

The resulting type after applying the * operator.

impl<'a, N: Real> Mul<Rotation<N, U2>> for &'a UnitComplex<N> where
    DefaultAllocator: Allocator<N, U2, U2>, 
[src]

type Output = UnitComplex<N>

The resulting type after applying the * operator.

impl<'b, N: Real> Mul<&'b Rotation<N, U2>> for UnitComplex<N> where
    DefaultAllocator: Allocator<N, U2, U2>, 
[src]

type Output = UnitComplex<N>

The resulting type after applying the * operator.

impl<'a, 'b, N: Real> Mul<&'b Rotation<N, U2>> for &'a UnitComplex<N> where
    DefaultAllocator: Allocator<N, U2, U2>, 
[src]

type Output = UnitComplex<N>

The resulting type after applying the * operator.

impl<N: Real> Mul<Unit<Complex<N>>> for Rotation<N, U2> where
    DefaultAllocator: Allocator<N, U2, U2>, 
[src]

type Output = UnitComplex<N>

The resulting type after applying the * operator.

impl<'a, N: Real> Mul<Unit<Complex<N>>> for &'a Rotation<N, U2> where
    DefaultAllocator: Allocator<N, U2, U2>, 
[src]

type Output = UnitComplex<N>

The resulting type after applying the * operator.

impl<'b, N: Real> Mul<&'b Unit<Complex<N>>> for Rotation<N, U2> where
    DefaultAllocator: Allocator<N, U2, U2>, 
[src]

type Output = UnitComplex<N>

The resulting type after applying the * operator.

impl<'a, 'b, N: Real> Mul<&'b Unit<Complex<N>>> for &'a Rotation<N, U2> where
    DefaultAllocator: Allocator<N, U2, U2>, 
[src]

type Output = UnitComplex<N>

The resulting type after applying the * operator.

impl<N: Real, D: DimName> Mul<Translation<N, D>> for Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, U1>, 
[src]

type Output = Isometry<N, D, Rotation<N, D>>

The resulting type after applying the * operator.

impl<'a, N: Real, D: DimName> Mul<Translation<N, D>> for &'a Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, U1>, 
[src]

type Output = Isometry<N, D, Rotation<N, D>>

The resulting type after applying the * operator.

impl<'b, N: Real, D: DimName> Mul<&'b Translation<N, D>> for Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, U1>, 
[src]

type Output = Isometry<N, D, Rotation<N, D>>

The resulting type after applying the * operator.

impl<'a, 'b, N: Real, D: DimName> Mul<&'b Translation<N, D>> for &'a Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, U1>, 
[src]

type Output = Isometry<N, D, Rotation<N, D>>

The resulting type after applying the * operator.

impl<N: Real, D: DimName> Mul<Isometry<N, D, Rotation<N, D>>> for Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, U1>, 
[src]

type Output = Isometry<N, D, Rotation<N, D>>

The resulting type after applying the * operator.

impl<'a, N: Real, D: DimName> Mul<Isometry<N, D, Rotation<N, D>>> for &'a Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, U1>, 
[src]

type Output = Isometry<N, D, Rotation<N, D>>

The resulting type after applying the * operator.

impl<'b, N: Real, D: DimName> Mul<&'b Isometry<N, D, Rotation<N, D>>> for Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, U1>, 
[src]

type Output = Isometry<N, D, Rotation<N, D>>

The resulting type after applying the * operator.

impl<'a, 'b, N: Real, D: DimName> Mul<&'b Isometry<N, D, Rotation<N, D>>> for &'a Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, U1>, 
[src]

type Output = Isometry<N, D, Rotation<N, D>>

The resulting type after applying the * operator.

impl<N: Real, D: DimName> Mul<Rotation<N, D>> for Translation<N, D> where
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, U1>, 
[src]

type Output = Isometry<N, D, Rotation<N, D>>

The resulting type after applying the * operator.

impl<'a, N: Real, D: DimName> Mul<Rotation<N, D>> for &'a Translation<N, D> where
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, U1>, 
[src]

type Output = Isometry<N, D, Rotation<N, D>>

The resulting type after applying the * operator.

impl<'b, N: Real, D: DimName> Mul<&'b Rotation<N, D>> for Translation<N, D> where
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, U1>, 
[src]

type Output = Isometry<N, D, Rotation<N, D>>

The resulting type after applying the * operator.

impl<'a, 'b, N: Real, D: DimName> Mul<&'b Rotation<N, D>> for &'a Translation<N, D> where
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, U1>, 
[src]

type Output = Isometry<N, D, Rotation<N, D>>

The resulting type after applying the * operator.

impl<N: Real, D: DimName> Mul<Similarity<N, D, Rotation<N, D>>> for Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, U1>, 
[src]

type Output = Similarity<N, D, Rotation<N, D>>

The resulting type after applying the * operator.

impl<'a, N: Real, D: DimName> Mul<Similarity<N, D, Rotation<N, D>>> for &'a Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, U1>, 
[src]

type Output = Similarity<N, D, Rotation<N, D>>

The resulting type after applying the * operator.

impl<'b, N: Real, D: DimName> Mul<&'b Similarity<N, D, Rotation<N, D>>> for Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, U1>, 
[src]

type Output = Similarity<N, D, Rotation<N, D>>

The resulting type after applying the * operator.

impl<'a, 'b, N: Real, D: DimName> Mul<&'b Similarity<N, D, Rotation<N, D>>> for &'a Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, U1>, 
[src]

type Output = Similarity<N, D, Rotation<N, D>>

The resulting type after applying the * operator.

impl<N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Mul<Rotation<N, D>> for Transform<N, D, C> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul + Real,
    DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, D> + Allocator<N, DimNameSum<D, U1>, D>, 
[src]

type Output = Transform<N, D, C::Representative>

The resulting type after applying the * operator.

impl<'a, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Mul<Rotation<N, D>> for &'a Transform<N, D, C> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul + Real,
    DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, D> + Allocator<N, DimNameSum<D, U1>, D>, 
[src]

type Output = Transform<N, D, C::Representative>

The resulting type after applying the * operator.

impl<'b, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Mul<&'b Rotation<N, D>> for Transform<N, D, C> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul + Real,
    DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, D> + Allocator<N, DimNameSum<D, U1>, D>, 
[src]

type Output = Transform<N, D, C::Representative>

The resulting type after applying the * operator.

impl<'a, 'b, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Mul<&'b Rotation<N, D>> for &'a Transform<N, D, C> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul + Real,
    DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, D> + Allocator<N, DimNameSum<D, U1>, D>, 
[src]

type Output = Transform<N, D, C::Representative>

The resulting type after applying the * operator.

impl<N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Mul<Transform<N, D, C>> for Rotation<N, D> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul + Real,
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, DimNameSum<D, U1>>, 
[src]

type Output = Transform<N, D, C::Representative>

The resulting type after applying the * operator.

impl<'a, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Mul<Transform<N, D, C>> for &'a Rotation<N, D> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul + Real,
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, DimNameSum<D, U1>>, 
[src]

type Output = Transform<N, D, C::Representative>

The resulting type after applying the * operator.

impl<'b, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Mul<&'b Transform<N, D, C>> for Rotation<N, D> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul + Real,
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, DimNameSum<D, U1>>, 
[src]

type Output = Transform<N, D, C::Representative>

The resulting type after applying the * operator.

impl<'a, 'b, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Mul<&'b Transform<N, D, C>> for &'a Rotation<N, D> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul + Real,
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, DimNameSum<D, U1>>, 
[src]

type Output = Transform<N, D, C::Representative>

The resulting type after applying the * operator.

impl<N, D: DimName> Div<Rotation<N, D>> for Rotation<N, D> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul,
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, D> + Allocator<N, D, D>, 
[src]

type Output = Rotation<N, D>

The resulting type after applying the / operator.

impl<'a, N, D: DimName> Div<Rotation<N, D>> for &'a Rotation<N, D> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul,
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, D> + Allocator<N, D, D>, 
[src]

type Output = Rotation<N, D>

The resulting type after applying the / operator.

impl<'b, N, D: DimName> Div<&'b Rotation<N, D>> for Rotation<N, D> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul,
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, D> + Allocator<N, D, D>, 
[src]

type Output = Rotation<N, D>

The resulting type after applying the / operator.

impl<'a, 'b, N, D: DimName> Div<&'b Rotation<N, D>> for &'a Rotation<N, D> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul,
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, D> + Allocator<N, D, D>, 
[src]

type Output = Rotation<N, D>

The resulting type after applying the / operator.

impl<N, R1: Dim, C1: Dim, D2: DimName, SA: Storage<N, R1, C1>> Div<Rotation<N, D2>> for Matrix<N, R1, C1, SA> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul,
    DefaultAllocator: Allocator<N, R1, C1> + Allocator<N, D2, D2> + Allocator<N, R1, D2>,
    DefaultAllocator: Allocator<N, R1, D2>,
    ShapeConstraint: AreMultipliable<R1, C1, D2, D2>, 
[src]

type Output = MatrixMN<N, R1, D2>

The resulting type after applying the / operator.

impl<'a, N, R1: Dim, C1: Dim, D2: DimName, SA: Storage<N, R1, C1>> Div<Rotation<N, D2>> for &'a Matrix<N, R1, C1, SA> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul,
    DefaultAllocator: Allocator<N, R1, C1> + Allocator<N, D2, D2> + Allocator<N, R1, D2>,
    DefaultAllocator: Allocator<N, R1, D2>,
    ShapeConstraint: AreMultipliable<R1, C1, D2, D2>, 
[src]

type Output = MatrixMN<N, R1, D2>

The resulting type after applying the / operator.

impl<'b, N, R1: Dim, C1: Dim, D2: DimName, SA: Storage<N, R1, C1>> Div<&'b Rotation<N, D2>> for Matrix<N, R1, C1, SA> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul,
    DefaultAllocator: Allocator<N, R1, C1> + Allocator<N, D2, D2> + Allocator<N, R1, D2>,
    DefaultAllocator: Allocator<N, R1, D2>,
    ShapeConstraint: AreMultipliable<R1, C1, D2, D2>, 
[src]

type Output = MatrixMN<N, R1, D2>

The resulting type after applying the / operator.

impl<'a, 'b, N, R1: Dim, C1: Dim, D2: DimName, SA: Storage<N, R1, C1>> Div<&'b Rotation<N, D2>> for &'a Matrix<N, R1, C1, SA> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul,
    DefaultAllocator: Allocator<N, R1, C1> + Allocator<N, D2, D2> + Allocator<N, R1, D2>,
    DefaultAllocator: Allocator<N, R1, D2>,
    ShapeConstraint: AreMultipliable<R1, C1, D2, D2>, 
[src]

type Output = MatrixMN<N, R1, D2>

The resulting type after applying the / operator.

impl<'a, 'b, N: Real> Div<&'b Rotation<N, U3>> for &'a UnitQuaternion<N> where
    DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U3>, 
[src]

type Output = UnitQuaternion<N>

The resulting type after applying the / operator.

impl<'a, N: Real> Div<Rotation<N, U3>> for &'a UnitQuaternion<N> where
    DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U3>, 
[src]

type Output = UnitQuaternion<N>

The resulting type after applying the / operator.

impl<'b, N: Real> Div<&'b Rotation<N, U3>> for UnitQuaternion<N> where
    DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U3>, 
[src]

type Output = UnitQuaternion<N>

The resulting type after applying the / operator.

impl<N: Real> Div<Rotation<N, U3>> for UnitQuaternion<N> where
    DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U3>, 
[src]

type Output = UnitQuaternion<N>

The resulting type after applying the / operator.

impl<'a, 'b, N: Real> Div<&'b Unit<Quaternion<N>>> for &'a Rotation<N, U3> where
    DefaultAllocator: Allocator<N, U3, U3> + Allocator<N, U4, U1>, 
[src]

type Output = UnitQuaternion<N>

The resulting type after applying the / operator.

impl<'a, N: Real> Div<Unit<Quaternion<N>>> for &'a Rotation<N, U3> where
    DefaultAllocator: Allocator<N, U3, U3> + Allocator<N, U4, U1>, 
[src]

type Output = UnitQuaternion<N>

The resulting type after applying the / operator.

impl<'b, N: Real> Div<&'b Unit<Quaternion<N>>> for Rotation<N, U3> where
    DefaultAllocator: Allocator<N, U3, U3> + Allocator<N, U4, U1>, 
[src]

type Output = UnitQuaternion<N>

The resulting type after applying the / operator.

impl<N: Real> Div<Unit<Quaternion<N>>> for Rotation<N, U3> where
    DefaultAllocator: Allocator<N, U3, U3> + Allocator<N, U4, U1>, 
[src]

type Output = UnitQuaternion<N>

The resulting type after applying the / operator.

impl<N: Real> Div<Rotation<N, U2>> for UnitComplex<N> where
    DefaultAllocator: Allocator<N, U2, U2>, 
[src]

type Output = UnitComplex<N>

The resulting type after applying the / operator.

impl<'a, N: Real> Div<Rotation<N, U2>> for &'a UnitComplex<N> where
    DefaultAllocator: Allocator<N, U2, U2>, 
[src]

type Output = UnitComplex<N>

The resulting type after applying the / operator.

impl<'b, N: Real> Div<&'b Rotation<N, U2>> for UnitComplex<N> where
    DefaultAllocator: Allocator<N, U2, U2>, 
[src]

type Output = UnitComplex<N>

The resulting type after applying the / operator.

impl<'a, 'b, N: Real> Div<&'b Rotation<N, U2>> for &'a UnitComplex<N> where
    DefaultAllocator: Allocator<N, U2, U2>, 
[src]

type Output = UnitComplex<N>

The resulting type after applying the / operator.

impl<N: Real> Div<Unit<Complex<N>>> for Rotation<N, U2> where
    DefaultAllocator: Allocator<N, U2, U2>, 
[src]

type Output = UnitComplex<N>

The resulting type after applying the / operator.

impl<'a, N: Real> Div<Unit<Complex<N>>> for &'a Rotation<N, U2> where
    DefaultAllocator: Allocator<N, U2, U2>, 
[src]

type Output = UnitComplex<N>

The resulting type after applying the / operator.

impl<'b, N: Real> Div<&'b Unit<Complex<N>>> for Rotation<N, U2> where
    DefaultAllocator: Allocator<N, U2, U2>, 
[src]

type Output = UnitComplex<N>

The resulting type after applying the / operator.

impl<'a, 'b, N: Real> Div<&'b Unit<Complex<N>>> for &'a Rotation<N, U2> where
    DefaultAllocator: Allocator<N, U2, U2>, 
[src]

type Output = UnitComplex<N>

The resulting type after applying the / operator.

impl<N: Real, D: DimName> Div<Isometry<N, D, Rotation<N, D>>> for Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, U1>, 
[src]

type Output = Isometry<N, D, Rotation<N, D>>

The resulting type after applying the / operator.

impl<'a, N: Real, D: DimName> Div<Isometry<N, D, Rotation<N, D>>> for &'a Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, U1>, 
[src]

type Output = Isometry<N, D, Rotation<N, D>>

The resulting type after applying the / operator.

impl<'b, N: Real, D: DimName> Div<&'b Isometry<N, D, Rotation<N, D>>> for Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, U1>, 
[src]

type Output = Isometry<N, D, Rotation<N, D>>

The resulting type after applying the / operator.

impl<'a, 'b, N: Real, D: DimName> Div<&'b Isometry<N, D, Rotation<N, D>>> for &'a Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, U1>, 
[src]

type Output = Isometry<N, D, Rotation<N, D>>

The resulting type after applying the / operator.

impl<N: Real, D: DimName> Div<Similarity<N, D, Rotation<N, D>>> for Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, U1>, 
[src]

type Output = Similarity<N, D, Rotation<N, D>>

The resulting type after applying the / operator.

impl<'a, N: Real, D: DimName> Div<Similarity<N, D, Rotation<N, D>>> for &'a Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, U1>, 
[src]

type Output = Similarity<N, D, Rotation<N, D>>

The resulting type after applying the / operator.

impl<'b, N: Real, D: DimName> Div<&'b Similarity<N, D, Rotation<N, D>>> for Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, U1>, 
[src]

type Output = Similarity<N, D, Rotation<N, D>>

The resulting type after applying the / operator.

impl<'a, 'b, N: Real, D: DimName> Div<&'b Similarity<N, D, Rotation<N, D>>> for &'a Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, U1>, 
[src]

type Output = Similarity<N, D, Rotation<N, D>>

The resulting type after applying the / operator.

impl<N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Div<Rotation<N, D>> for Transform<N, D, C> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul + Real,
    DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, D> + Allocator<N, DimNameSum<D, U1>, D>, 
[src]

type Output = Transform<N, D, C::Representative>

The resulting type after applying the / operator.

impl<'a, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Div<Rotation<N, D>> for &'a Transform<N, D, C> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul + Real,
    DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, D> + Allocator<N, DimNameSum<D, U1>, D>, 
[src]

type Output = Transform<N, D, C::Representative>

The resulting type after applying the / operator.

impl<'b, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Div<&'b Rotation<N, D>> for Transform<N, D, C> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul + Real,
    DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, D> + Allocator<N, DimNameSum<D, U1>, D>, 
[src]

type Output = Transform<N, D, C::Representative>

The resulting type after applying the / operator.

impl<'a, 'b, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Div<&'b Rotation<N, D>> for &'a Transform<N, D, C> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul + Real,
    DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, D> + Allocator<N, DimNameSum<D, U1>, D>, 
[src]

type Output = Transform<N, D, C::Representative>

The resulting type after applying the / operator.

impl<N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Div<Transform<N, D, C>> for Rotation<N, D> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul + Real,
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, DimNameSum<D, U1>>, 
[src]

type Output = Transform<N, D, C::Representative>

The resulting type after applying the / operator.

impl<'a, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Div<Transform<N, D, C>> for &'a Rotation<N, D> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul + Real,
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, DimNameSum<D, U1>>, 
[src]

type Output = Transform<N, D, C::Representative>

The resulting type after applying the / operator.

impl<'b, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Div<&'b Transform<N, D, C>> for Rotation<N, D> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul + Real,
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, DimNameSum<D, U1>>, 
[src]

type Output = Transform<N, D, C::Representative>

The resulting type after applying the / operator.

impl<'a, 'b, N, D: DimNameAdd<U1>, C: TCategoryMul<TAffine>> Div<&'b Transform<N, D, C>> for &'a Rotation<N, D> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul + Real,
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, DimNameSum<D, U1>>, 
[src]

type Output = Transform<N, D, C::Representative>

The resulting type after applying the / operator.

impl<N, D: DimName> MulAssign<Rotation<N, D>> for Rotation<N, D> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul,
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, D>, 
[src]

impl<'b, N, D: DimName> MulAssign<&'b Rotation<N, D>> for Rotation<N, D> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul,
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, D>, 
[src]

impl<N, R1: DimName, C1: DimName> MulAssign<Rotation<N, C1>> for MatrixMN<N, R1, C1> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul,
    DefaultAllocator: Allocator<N, R1, C1> + Allocator<N, C1, C1>, 
[src]

impl<'b, N, R1: DimName, C1: DimName> MulAssign<&'b Rotation<N, C1>> for MatrixMN<N, R1, C1> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul,
    DefaultAllocator: Allocator<N, R1, C1> + Allocator<N, C1, C1>, 
[src]

impl<'b, N: Real> MulAssign<&'b Rotation<N, U3>> for UnitQuaternion<N> where
    DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U3>, 
[src]

impl<N: Real> MulAssign<Rotation<N, U3>> for UnitQuaternion<N> where
    DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U3>, 
[src]

impl<N: Real> MulAssign<Rotation<N, U2>> for UnitComplex<N> where
    DefaultAllocator: Allocator<N, U2, U2>, 
[src]

impl<'b, N: Real> MulAssign<&'b Rotation<N, U2>> for UnitComplex<N> where
    DefaultAllocator: Allocator<N, U2, U2>, 
[src]

impl<N: Real> MulAssign<Unit<Complex<N>>> for Rotation<N, U2> where
    DefaultAllocator: Allocator<N, U2, U2>, 
[src]

impl<'b, N: Real> MulAssign<&'b Unit<Complex<N>>> for Rotation<N, U2> where
    DefaultAllocator: Allocator<N, U2, U2>, 
[src]

impl<N, D: DimNameAdd<U1>, C: TCategory> MulAssign<Rotation<N, D>> for Transform<N, D, C> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul + Real,
    DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, D>, 
[src]

impl<'b, N, D: DimNameAdd<U1>, C: TCategory> MulAssign<&'b Rotation<N, D>> for Transform<N, D, C> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul + Real,
    DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, D>, 
[src]

impl<N, D: DimName> DivAssign<Rotation<N, D>> for Rotation<N, D> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul,
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, D>, 
[src]

impl<'b, N, D: DimName> DivAssign<&'b Rotation<N, D>> for Rotation<N, D> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul,
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D, D>, 
[src]

impl<N, R1: DimName, C1: DimName> DivAssign<Rotation<N, C1>> for MatrixMN<N, R1, C1> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul,
    DefaultAllocator: Allocator<N, R1, C1> + Allocator<N, C1, C1>, 
[src]

impl<'b, N, R1: DimName, C1: DimName> DivAssign<&'b Rotation<N, C1>> for MatrixMN<N, R1, C1> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul,
    DefaultAllocator: Allocator<N, R1, C1> + Allocator<N, C1, C1>, 
[src]

impl<'b, N: Real> DivAssign<&'b Rotation<N, U3>> for UnitQuaternion<N> where
    DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U3>, 
[src]

impl<N: Real> DivAssign<Rotation<N, U3>> for UnitQuaternion<N> where
    DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U3>, 
[src]

impl<N: Real> DivAssign<Rotation<N, U2>> for UnitComplex<N> where
    DefaultAllocator: Allocator<N, U2, U2>, 
[src]

impl<'b, N: Real> DivAssign<&'b Rotation<N, U2>> for UnitComplex<N> where
    DefaultAllocator: Allocator<N, U2, U2>, 
[src]

impl<N: Real> DivAssign<Unit<Complex<N>>> for Rotation<N, U2> where
    DefaultAllocator: Allocator<N, U2, U2>, 
[src]

impl<'b, N: Real> DivAssign<&'b Unit<Complex<N>>> for Rotation<N, U2> where
    DefaultAllocator: Allocator<N, U2, U2>, 
[src]

impl<N, D: DimNameAdd<U1>, C: TCategory> DivAssign<Rotation<N, D>> for Transform<N, D, C> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul + Real,
    DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, D>, 
[src]

impl<'b, N, D: DimNameAdd<U1>, C: TCategory> DivAssign<&'b Rotation<N, D>> for Transform<N, D, C> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul + Real,
    DefaultAllocator: Allocator<N, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N, D, D>, 
[src]

impl<N: Scalar, D: DimName> Index<(usize, usize)> for Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D>, 
[src]

type Output = N

The returned type after indexing.

impl<N: Scalar + Hash, D: DimName + Hash> Hash for Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D>,
    <DefaultAllocator as Allocator<N, D, D>>::Buffer: Hash
[src]

fn hash_slice<H>(data: &[Self], state: &mut H) where
    H: Hasher
1.3.0
[src]

Feeds a slice of this type into the given [Hasher]. Read more

impl<N, D: DimName> AbsDiffEq for Rotation<N, D> where
    N: Scalar + AbsDiffEq,
    DefaultAllocator: Allocator<N, D, D>,
    N::Epsilon: Copy
[src]

type Epsilon = N::Epsilon

Used for specifying relative comparisons.

fn abs_diff_ne(&self, other: &Self, epsilon: Self::Epsilon) -> bool[src]

The inverse of ApproxEq::abs_diff_eq.

impl<N, D: DimName> RelativeEq for Rotation<N, D> where
    N: Scalar + RelativeEq,
    DefaultAllocator: Allocator<N, D, D>,
    N::Epsilon: Copy
[src]

fn relative_ne(
    &self,
    other: &Self,
    epsilon: Self::Epsilon,
    max_relative: Self::Epsilon
) -> bool
[src]

The inverse of ApproxEq::relative_eq.

impl<N, D: DimName> UlpsEq for Rotation<N, D> where
    N: Scalar + UlpsEq,
    DefaultAllocator: Allocator<N, D, D>,
    N::Epsilon: Copy
[src]

fn ulps_ne(&self, other: &Self, epsilon: Self::Epsilon, max_ulps: u32) -> bool[src]

The inverse of ApproxEq::ulps_eq.

impl<N, D: DimName> One for Rotation<N, D> where
    N: Scalar + Zero + One + ClosedAdd + ClosedMul,
    DefaultAllocator: Allocator<N, D, D>, 
[src]

fn is_one(&self) -> bool where
    Self: PartialEq<Self>, 
[src]

Returns true if self is equal to the multiplicative identity. Read more

impl<N: Real> Distribution<Rotation<N, U2>> for Standard where
    OpenClosed01: Distribution<N>, 
[src]

fn sample<'a, R: Rng + ?Sized>(&self, rng: &'a mut R) -> Rotation2<N>[src]

Generate a uniformly distributed random rotation.

fn sample_iter<R>(&'a self, rng: &'a mut R) -> DistIter<'a, Self, R, T> where
    R: Rng
[src]

Create an iterator that generates random values of T, using rng as the source of randomness. Read more

impl<N: Real> Distribution<Rotation<N, U3>> for Standard where
    OpenClosed01: Distribution<N>, 
[src]

fn sample<'a, R: Rng + ?Sized>(&self, rng: &mut R) -> Rotation3<N>[src]

Generate a uniformly distributed random rotation.

fn sample_iter<R>(&'a self, rng: &'a mut R) -> DistIter<'a, Self, R, T> where
    R: Rng
[src]

Create an iterator that generates random values of T, using rng as the source of randomness. Read more

impl<N: Real, D: DimName> AbstractMagma<Multiplicative> for Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D>, 
[src]

fn op(&self, O, lhs: &Self) -> Self[src]

Performs specific operation.

impl<N: Real, D: DimName> AbstractQuasigroup<Multiplicative> for Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D>, 
[src]

fn prop_inv_is_latin_square_approx(args: (Self, Self)) -> bool where
    Self: RelativeEq
[src]

Returns true if latin squareness holds for the given arguments. Approximate equality is used for verifications. Read more

fn prop_inv_is_latin_square(args: (Self, Self)) -> bool where
    Self: Eq
[src]

Returns true if latin squareness holds for the given arguments. Read more

impl<N: Real, D: DimName> AbstractSemigroup<Multiplicative> for Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D>, 
[src]

fn prop_is_associative_approx(args: (Self, Self, Self)) -> bool where
    Self: RelativeEq
[src]

Returns true if associativity holds for the given arguments. Approximate equality is used for verifications. Read more

fn prop_is_associative(args: (Self, Self, Self)) -> bool where
    Self: Eq
[src]

Returns true if associativity holds for the given arguments.

impl<N: Real, D: DimName> AbstractLoop<Multiplicative> for Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D>, 
[src]

impl<N: Real, D: DimName> AbstractMonoid<Multiplicative> for Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D>, 
[src]

fn prop_operating_identity_element_is_noop_approx(args: (Self,)) -> bool where
    Self: RelativeEq
[src]

Checks whether operating with the identity element is a no-op for the given argument. Approximate equality is used for verifications. Read more

fn prop_operating_identity_element_is_noop(args: (Self,)) -> bool where
    Self: Eq
[src]

Checks whether operating with the identity element is a no-op for the given argument. Read more

impl<N: Real, D: DimName> AbstractGroup<Multiplicative> for Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D>, 
[src]

impl<N: Real, D: DimName> Identity<Multiplicative> for Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D>, 
[src]

fn id(O) -> Self[src]

Specific identity.

impl<N: Real, D: DimName> TwoSidedInverse<Multiplicative> for Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D>, 
[src]

impl<N1, N2, D: DimName> SubsetOf<Rotation<N2, D>> for Rotation<N1, D> where
    N1: Real,
    N2: Real + SupersetOf<N1>,
    DefaultAllocator: Allocator<N1, D, D> + Allocator<N2, D, D>, 
[src]

fn from_superset(element: &T) -> Option<Self>[src]

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more

impl<N1, N2, D: DimName, R> SubsetOf<Isometry<N2, D, R>> for Rotation<N1, D> where
    N1: Real,
    N2: Real + SupersetOf<N1>,
    R: AlgaRotation<Point<N2, D>> + SupersetOf<Self>,
    DefaultAllocator: Allocator<N1, D, D> + Allocator<N2, D>, 
[src]

fn from_superset(element: &T) -> Option<Self>[src]

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more

impl<N1, N2, D: DimName, R> SubsetOf<Similarity<N2, D, R>> for Rotation<N1, D> where
    N1: Real,
    N2: Real + SupersetOf<N1>,
    R: AlgaRotation<Point<N2, D>> + SupersetOf<Self>,
    DefaultAllocator: Allocator<N1, D, D> + Allocator<N2, D>, 
[src]

fn from_superset(element: &T) -> Option<Self>[src]

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more

impl<N1, N2, D, C> SubsetOf<Transform<N2, D, C>> for Rotation<N1, D> where
    N1: Real,
    N2: Real + SupersetOf<N1>,
    C: SuperTCategoryOf<TAffine>,
    D: DimNameAdd<U1> + DimMin<D, Output = D>,
    DefaultAllocator: Allocator<N1, D, D> + Allocator<N2, D, D> + Allocator<N1, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N2, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<(usize, usize), D>, 
[src]

fn from_superset(element: &T) -> Option<Self>[src]

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more

impl<N1, N2, D> SubsetOf<Matrix<N2, <D as DimNameAdd<U1>>::Output, <D as DimNameAdd<U1>>::Output, <DefaultAllocator as Allocator<N2, <D as DimNameAdd<U1>>::Output, <D as DimNameAdd<U1>>::Output>>::Buffer>> for Rotation<N1, D> where
    N1: Real,
    N2: Real + SupersetOf<N1>,
    D: DimNameAdd<U1> + DimMin<D, Output = D>,
    DefaultAllocator: Allocator<N1, D, D> + Allocator<N2, D, D> + Allocator<N1, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<N2, DimNameSum<D, U1>, DimNameSum<D, U1>> + Allocator<(usize, usize), D>, 
[src]

fn from_superset(element: &T) -> Option<Self>[src]

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more

impl<N1, N2> SubsetOf<Rotation<N2, U3>> for UnitQuaternion<N1> where
    N1: Real,
    N2: Real + SupersetOf<N1>, 
[src]

fn from_superset(element: &T) -> Option<Self>[src]

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more

impl<N1, N2> SubsetOf<Rotation<N2, U2>> for UnitComplex<N1> where
    N1: Real,
    N2: Real + SupersetOf<N1>, 
[src]

fn from_superset(element: &T) -> Option<Self>[src]

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more

impl<N: Real, D: DimName> Transformation<Point<N, D>> for Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D>, 
[src]

impl<N: Real, D: DimName> ProjectiveTransformation<Point<N, D>> for Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D>, 
[src]

impl<N: Real, D: DimName> AffineTransformation<Point<N, D>> for Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D>, 
[src]

type Rotation = Self

Type of the first rotation to be applied.

type NonUniformScaling = Id

Type of the non-uniform scaling to be applied.

type Translation = Id

The type of the pure translation part of this affine transformation.

fn append_rotation_wrt_point(&self, r: &Self::Rotation, p: &E) -> Option<Self>[src]

Appends to this similarity a rotation centered at the point p, i.e., this point is left invariant. Read more

impl<N: Real, D: DimName> Similarity<Point<N, D>> for Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D>, 
[src]

type Scaling = Id

The type of the pure (uniform) scaling part of this similarity transformation.

fn translate_point(&self, pt: &E) -> E[src]

Applies this transformation's pure translational part to a point.

fn rotate_point(&self, pt: &E) -> E[src]

Applies this transformation's pure rotational part to a point.

fn scale_point(&self, pt: &E) -> E[src]

Applies this transformation's pure scaling part to a point.

fn rotate_vector(
    &self,
    pt: &<E as EuclideanSpace>::Coordinates
) -> <E as EuclideanSpace>::Coordinates
[src]

Applies this transformation's pure rotational part to a vector.

fn scale_vector(
    &self,
    pt: &<E as EuclideanSpace>::Coordinates
) -> <E as EuclideanSpace>::Coordinates
[src]

Applies this transformation's pure scaling part to a vector.

fn inverse_translate_point(&self, pt: &E) -> E[src]

Applies this transformation inverse's pure translational part to a point.

fn inverse_rotate_point(&self, pt: &E) -> E[src]

Applies this transformation inverse's pure rotational part to a point.

fn inverse_scale_point(&self, pt: &E) -> E[src]

Applies this transformation inverse's pure scaling part to a point.

fn inverse_rotate_vector(
    &self,
    pt: &<E as EuclideanSpace>::Coordinates
) -> <E as EuclideanSpace>::Coordinates
[src]

Applies this transformation inverse's pure rotational part to a vector.

fn inverse_scale_vector(
    &self,
    pt: &<E as EuclideanSpace>::Coordinates
) -> <E as EuclideanSpace>::Coordinates
[src]

Applies this transformation inverse's pure scaling part to a vector.

impl<N: Real, D: DimName> Isometry<Point<N, D>> for Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D>, 
[src]

impl<N: Real, D: DimName> DirectIsometry<Point<N, D>> for Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D>, 
[src]

impl<N: Real, D: DimName> OrthogonalTransformation<Point<N, D>> for Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D>, 
[src]

impl<N: Real, D: DimName> Rotation<Point<N, D>> for Rotation<N, D> where
    DefaultAllocator: Allocator<N, D, D> + Allocator<N, D>, 
[src]

Subgroups of the n-dimensional rotation group SO(n).

Auto Trait Implementations

impl<N, D> !Send for Rotation<N, D>

impl<N, D> !Sync for Rotation<N, D>

Blanket Implementations

impl<T> From for T[src]

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

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

type Owned = T

impl<T> ToString for T where
    T: Display + ?Sized
[src]

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

type Error = !

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

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

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

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

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

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

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

impl<T> Same for T[src]

type Output = T

Should always be Self

impl<T, Right> ClosedMul for T where
    T: Mul<Right, Output = T> + MulAssign<Right>, 
[src]

impl<T, Right> ClosedDiv for T where
    T: Div<Right, Output = T> + DivAssign<Right>, 
[src]

impl<SS, SP> SupersetOf for SP where
    SS: SubsetOf<SP>, 
[src]

impl<T> MultiplicativeMagma for T where
    T: AbstractMagma<Multiplicative>, 
[src]

impl<T> MultiplicativeQuasigroup for T where
    T: AbstractQuasigroup<Multiplicative> + ClosedDiv<T> + MultiplicativeMagma
[src]

impl<T> MultiplicativeLoop for T where
    T: AbstractLoop<Multiplicative> + MultiplicativeQuasigroup + One
[src]

impl<T> MultiplicativeSemigroup for T where
    T: AbstractSemigroup<Multiplicative> + ClosedMul<T> + MultiplicativeMagma
[src]

impl<T> MultiplicativeMonoid for T where
    T: AbstractMonoid<Multiplicative> + MultiplicativeSemigroup + One
[src]

impl<T> MultiplicativeGroup for T where
    T: AbstractGroup<Multiplicative> + MultiplicativeLoop + MultiplicativeMonoid
[src]

impl<R, E> Transformation for R where
    E: EuclideanSpace<Real = R>,
    R: Real,
    <E as EuclideanSpace>::Coordinates: ClosedMul<R>,
    <E as EuclideanSpace>::Coordinates: ClosedDiv<R>,
    <E as EuclideanSpace>::Coordinates: ClosedNeg
[src]

impl<R, E> ProjectiveTransformation for R where
    E: EuclideanSpace<Real = R>,
    R: Real,
    <E as EuclideanSpace>::Coordinates: ClosedMul<R>,
    <E as EuclideanSpace>::Coordinates: ClosedDiv<R>,
    <E as EuclideanSpace>::Coordinates: ClosedNeg
[src]

impl<R, E> AffineTransformation for R where
    E: EuclideanSpace<Real = R>,
    R: Real,
    <E as EuclideanSpace>::Coordinates: ClosedMul<R>,
    <E as EuclideanSpace>::Coordinates: ClosedDiv<R>,
    <E as EuclideanSpace>::Coordinates: ClosedNeg
[src]

type Rotation = Id<Multiplicative>

Type of the first rotation to be applied.

type NonUniformScaling = R

Type of the non-uniform scaling to be applied.

type Translation = Id<Multiplicative>

The type of the pure translation part of this affine transformation.

fn append_rotation_wrt_point(&self, r: &Self::Rotation, p: &E) -> Option<Self>[src]

Appends to this similarity a rotation centered at the point p, i.e., this point is left invariant. Read more

impl<R, E> Similarity for R where
    E: EuclideanSpace<Real = R>,
    R: Real + SubsetOf<R>,
    <E as EuclideanSpace>::Coordinates: ClosedMul<R>,
    <E as EuclideanSpace>::Coordinates: ClosedDiv<R>,
    <E as EuclideanSpace>::Coordinates: ClosedNeg
[src]

type Scaling = R

The type of the pure (uniform) scaling part of this similarity transformation.

fn translate_point(&self, pt: &E) -> E[src]

Applies this transformation's pure translational part to a point.

fn rotate_point(&self, pt: &E) -> E[src]

Applies this transformation's pure rotational part to a point.

fn scale_point(&self, pt: &E) -> E[src]

Applies this transformation's pure scaling part to a point.

fn rotate_vector(
    &self,
    pt: &<E as EuclideanSpace>::Coordinates
) -> <E as EuclideanSpace>::Coordinates
[src]

Applies this transformation's pure rotational part to a vector.

fn scale_vector(
    &self,
    pt: &<E as EuclideanSpace>::Coordinates
) -> <E as EuclideanSpace>::Coordinates
[src]

Applies this transformation's pure scaling part to a vector.

fn inverse_translate_point(&self, pt: &E) -> E[src]

Applies this transformation inverse's pure translational part to a point.

fn inverse_rotate_point(&self, pt: &E) -> E[src]

Applies this transformation inverse's pure rotational part to a point.

fn inverse_scale_point(&self, pt: &E) -> E[src]

Applies this transformation inverse's pure scaling part to a point.

fn inverse_rotate_vector(
    &self,
    pt: &<E as EuclideanSpace>::Coordinates
) -> <E as EuclideanSpace>::Coordinates
[src]

Applies this transformation inverse's pure rotational part to a vector.

fn inverse_scale_vector(
    &self,
    pt: &<E as EuclideanSpace>::Coordinates
) -> <E as EuclideanSpace>::Coordinates
[src]

Applies this transformation inverse's pure scaling part to a vector.