[][src]Struct na::geometry::Rotation

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

A rotation matrix.

Methods

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

pub fn matrix(
    &self
) -> &Matrix<N, D, D, <DefaultAllocator as Allocator<N, D, D>>::Buffer>
[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 Matrix<N, D, D, <DefaultAllocator as Allocator<N, D, D>>::Buffer>
[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 Matrix<N, D, D, <DefaultAllocator as Allocator<N, D, D>>::Buffer>
[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
) -> Matrix<N, D, D, <DefaultAllocator as Allocator<N, D, D>>::Buffer>
[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
) -> Matrix<N, D, D, <DefaultAllocator as Allocator<N, D, D>>::Buffer>
[src]

Deprecated:

use .into_inner() instead

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

pub fn to_homogeneous(
    &self
) -> Matrix<N, <D as DimNameAdd<U1>>::Output, <D as DimNameAdd<U1>>::Output, <DefaultAllocator as Allocator<N, <D as DimNameAdd<U1>>::Output, <D as DimNameAdd<U1>>::Output>>::Buffer> where
    D: DimNameAdd<U1>,
    N: Zero + One,
    DefaultAllocator: Allocator<N, <D as DimNameAdd<U1>>::Output, <D as DimNameAdd<U1>>::Output>, 
[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: Matrix<N, D, D, <DefaultAllocator as Allocator<N, D, D>>::Buffer>
) -> Rotation<N, D>
[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) -> Rotation<N, D>[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) -> Rotation<N, D>[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> Rotation<N, D> where
    D: DimName,
    N: RealField,
    DefaultAllocator: Allocator<N, D, D>,
    DefaultAllocator: Allocator<N, D, U1>, 
[src]

pub fn transform_point(&self, pt: &Point<N, D>) -> Point<N, D>[src]

Rotate the given point.

This is the same as the multiplication self * pt.

Example

let rot = Rotation3::new(Vector3::y() * f32::consts::FRAC_PI_2);
let transformed_point = rot.transform_point(&Point3::new(1.0, 2.0, 3.0));

assert_relative_eq!(transformed_point, Point3::new(3.0, 2.0, -1.0), epsilon = 1.0e-6);

pub fn transform_vector(
    &self,
    v: &Matrix<N, D, U1, <DefaultAllocator as Allocator<N, D, U1>>::Buffer>
) -> Matrix<N, D, U1, <DefaultAllocator as Allocator<N, D, U1>>::Buffer>
[src]

Rotate the given vector.

This is the same as the multiplication self * v.

Example

let rot = Rotation3::new(Vector3::y() * f32::consts::FRAC_PI_2);
let transformed_vector = rot.transform_vector(&Vector3::new(1.0, 2.0, 3.0));

assert_relative_eq!(transformed_vector, Vector3::new(3.0, 2.0, -1.0), epsilon = 1.0e-6);

pub fn inverse_transform_point(&self, pt: &Point<N, D>) -> Point<N, D>[src]

Rotate the given point by the inverse of this rotation. This may be cheaper than inverting the rotation and then transforming the given point.

Example

let rot = Rotation3::new(Vector3::y() * f32::consts::FRAC_PI_2);
let transformed_point = rot.inverse_transform_point(&Point3::new(1.0, 2.0, 3.0));

assert_relative_eq!(transformed_point, Point3::new(-3.0, 2.0, 1.0), epsilon = 1.0e-6);

pub fn inverse_transform_vector(
    &self,
    v: &Matrix<N, D, U1, <DefaultAllocator as Allocator<N, D, U1>>::Buffer>
) -> Matrix<N, D, U1, <DefaultAllocator as Allocator<N, D, U1>>::Buffer>
[src]

Rotate the given vector by the inverse of this rotation. This may be cheaper than inverting the rotation and then transforming the given vector.

Example

let rot = Rotation3::new(Vector3::y() * f32::consts::FRAC_PI_2);
let transformed_vector = rot.inverse_transform_vector(&Vector3::new(1.0, 2.0, 3.0));

assert_relative_eq!(transformed_vector, Vector3::new(-3.0, 2.0, 1.0), epsilon = 1.0e-6);

impl<N, D> Rotation<N, D> where
    D: DimName,
    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);

impl<N> Rotation<N, U2> where
    N: RealField
[src]

pub fn new(angle: N) -> Rotation<N, U2>[src]

Builds a 2 dimensional rotation matrix from an angle in radian.

Example

let rot = Rotation2::new(f32::consts::FRAC_PI_2);

assert_relative_eq!(rot * Point2::new(3.0, 4.0), Point2::new(-4.0, 3.0));

pub fn from_scaled_axis<SB>(axisangle: Matrix<N, U1, U1, SB>) -> Rotation<N, U2> where
    SB: Storage<N, U1, U1>, 
[src]

Builds a 2 dimensional rotation matrix from an angle in radian wrapped in a 1-dimensional vector.

This is generally used in the context of generic programming. Using the ::new(angle) method instead is more common.

pub fn from_matrix(
    m: &Matrix<N, U2, U2, <DefaultAllocator as Allocator<N, U2, U2>>::Buffer>
) -> Rotation<N, U2>
[src]

Builds a rotation matrix by extracting the rotation part of the given transformation m.

This is an iterative method. See .from_matrix_eps to provide mover convergence parameters and starting solution. This implements "A Robust Method to Extract the Rotational Part of Deformations" by Müller et al.

pub fn from_matrix_eps(
    m: &Matrix<N, U2, U2, <DefaultAllocator as Allocator<N, U2, U2>>::Buffer>,
    eps: N,
    max_iter: usize,
    guess: Rotation<N, U2>
) -> Rotation<N, U2>
[src]

Builds a rotation matrix by extracting the rotation part of the given transformation m.

This implements "A Robust Method to Extract the Rotational Part of Deformations" by Müller et al.

Parameters

  • m: the matrix from which the rotational part is to be extracted.
  • eps: the angular errors tolerated between the current rotation and the optimal one.
  • max_iter: the maximum number of iterations. Loops indefinitely until convergence if set to 0.
  • guess: an estimate of the solution. Convergence will be significantly faster if an initial solution close to the actual solution is provided. Can be set to Rotation2::identity() if no other guesses come to mind.

pub fn rotation_between<SB, SC>(
    a: &Matrix<N, U2, U1, SB>,
    b: &Matrix<N, U2, U1, SC>
) -> Rotation<N, U2> where
    SB: Storage<N, U2, U1>,
    SC: Storage<N, U2, U1>, 
[src]

The rotation matrix required to align a and b but with its angle.

This is the rotation R such that (R * a).angle(b) == 0 && (R * a).dot(b).is_positive().

Example

let a = Vector2::new(1.0, 2.0);
let b = Vector2::new(2.0, 1.0);
let rot = Rotation2::rotation_between(&a, &b);
assert_relative_eq!(rot * a, b);
assert_relative_eq!(rot.inverse() * b, a);

pub fn scaled_rotation_between<SB, SC>(
    a: &Matrix<N, U2, U1, SB>,
    b: &Matrix<N, U2, U1, SC>,
    s: N
) -> Rotation<N, U2> where
    SB: Storage<N, U2, U1>,
    SC: Storage<N, U2, U1>, 
[src]

The smallest rotation needed to make a and b collinear and point toward the same direction, raised to the power s.

Example

let a = Vector2::new(1.0, 2.0);
let b = Vector2::new(2.0, 1.0);
let rot2 = Rotation2::scaled_rotation_between(&a, &b, 0.2);
let rot5 = Rotation2::scaled_rotation_between(&a, &b, 0.5);
assert_relative_eq!(rot2 * rot2 * rot2 * rot2 * rot2 * a, b, epsilon = 1.0e-6);
assert_relative_eq!(rot5 * rot5 * a, b, epsilon = 1.0e-6);

pub fn angle(&self) -> N[src]

The rotation angle.

Example

let rot = Rotation2::new(1.78);
assert_relative_eq!(rot.angle(), 1.78);

pub fn angle_to(&self, other: &Rotation<N, U2>) -> N[src]

The rotation angle needed to make self and other coincide.

Example

let rot1 = Rotation2::new(0.1);
let rot2 = Rotation2::new(1.7);
assert_relative_eq!(rot1.angle_to(&rot2), 1.6);

pub fn rotation_to(&self, other: &Rotation<N, U2>) -> Rotation<N, U2>[src]

The rotation matrix needed to make self and other coincide.

The result is such that: self.rotation_to(other) * self == other.

Example

let rot1 = Rotation2::new(0.1);
let rot2 = Rotation2::new(1.7);
let rot_to = rot1.rotation_to(&rot2);

assert_relative_eq!(rot_to * rot1, rot2);
assert_relative_eq!(rot_to.inverse() * rot2, rot1);

pub fn renormalize(&mut self)[src]

Ensure this rotation is an orthonormal rotation matrix. This is useful when repeated computations might cause the matrix from progressively not being orthonormal anymore.

pub fn powf(&self, n: N) -> Rotation<N, U2>[src]

Raise the quaternion to a given floating power, i.e., returns the rotation with the angle of self multiplied by n.

Example

let rot = Rotation2::new(0.78);
let pow = rot.powf(2.0);
assert_relative_eq!(pow.angle(), 2.0 * 0.78);

pub fn scaled_axis(
    &self
) -> Matrix<N, U1, U1, <DefaultAllocator as Allocator<N, U1, U1>>::Buffer>
[src]

The rotation angle returned as a 1-dimensional vector.

This is generally used in the context of generic programming. Using the .angle() method instead is more common.

impl<N> Rotation<N, U3> where
    N: RealField
[src]

pub fn new<SB>(axisangle: Matrix<N, U3, U1, SB>) -> Rotation<N, U3> where
    SB: Storage<N, U3, U1>, 
[src]

Builds a 3 dimensional rotation matrix from an axis and an angle.

Arguments

  • axisangle - A vector representing the rotation. Its magnitude is the amount of rotation in radian. Its direction is the axis of rotation.

Example

let axisangle = Vector3::y() * f32::consts::FRAC_PI_2;
// Point and vector being transformed in the tests.
let pt = Point3::new(4.0, 5.0, 6.0);
let vec = Vector3::new(4.0, 5.0, 6.0);
let rot = Rotation3::new(axisangle);

assert_relative_eq!(rot * pt, Point3::new(6.0, 5.0, -4.0), epsilon = 1.0e-6);
assert_relative_eq!(rot * vec, Vector3::new(6.0, 5.0, -4.0), epsilon = 1.0e-6);

// A zero vector yields an identity.
assert_eq!(Rotation3::new(Vector3::<f32>::zeros()), Rotation3::identity());

pub fn from_matrix(
    m: &Matrix<N, U3, U3, <DefaultAllocator as Allocator<N, U3, U3>>::Buffer>
) -> Rotation<N, U3>
[src]

Builds a rotation matrix by extracting the rotation part of the given transformation m.

This is an iterative method. See .from_matrix_eps to provide mover convergence parameters and starting solution. This implements "A Robust Method to Extract the Rotational Part of Deformations" by Müller et al.

pub fn from_matrix_eps(
    m: &Matrix<N, U3, U3, <DefaultAllocator as Allocator<N, U3, U3>>::Buffer>,
    eps: N,
    max_iter: usize,
    guess: Rotation<N, U3>
) -> Rotation<N, U3>
[src]

Builds a rotation matrix by extracting the rotation part of the given transformation m.

This implements "A Robust Method to Extract the Rotational Part of Deformations" by Müller et al.

Parameters

  • m: the matrix from which the rotational part is to be extracted.
  • eps: the angular errors tolerated between the current rotation and the optimal one.
  • max_iter: the maximum number of iterations. Loops indefinitely until convergence if set to 0.
  • guess: a guess of the solution. Convergence will be significantly faster if an initial solution close to the actual solution is provided. Can be set to Rotation3::identity() if no other guesses come to mind.

pub fn from_scaled_axis<SB>(axisangle: Matrix<N, U3, U1, SB>) -> Rotation<N, U3> where
    SB: Storage<N, U3, U1>, 
[src]

Builds a 3D rotation matrix from an axis scaled by the rotation angle.

This is the same as Self::new(axisangle).

Example

let axisangle = Vector3::y() * f32::consts::FRAC_PI_2;
// Point and vector being transformed in the tests.
let pt = Point3::new(4.0, 5.0, 6.0);
let vec = Vector3::new(4.0, 5.0, 6.0);
let rot = Rotation3::new(axisangle);

assert_relative_eq!(rot * pt, Point3::new(6.0, 5.0, -4.0), epsilon = 1.0e-6);
assert_relative_eq!(rot * vec, Vector3::new(6.0, 5.0, -4.0), epsilon = 1.0e-6);

// A zero vector yields an identity.
assert_eq!(Rotation3::from_scaled_axis(Vector3::<f32>::zeros()), Rotation3::identity());

pub fn from_axis_angle<SB>(
    axis: &Unit<Matrix<N, U3, U1, SB>>,
    angle: N
) -> Rotation<N, U3> where
    SB: Storage<N, U3, U1>, 
[src]

Builds a 3D rotation matrix from an axis and a rotation angle.

Example

let axis = Vector3::y_axis();
let angle = f32::consts::FRAC_PI_2;
// Point and vector being transformed in the tests.
let pt = Point3::new(4.0, 5.0, 6.0);
let vec = Vector3::new(4.0, 5.0, 6.0);
let rot = Rotation3::from_axis_angle(&axis, angle);

assert_eq!(rot.axis().unwrap(), axis);
assert_eq!(rot.angle(), angle);
assert_relative_eq!(rot * pt, Point3::new(6.0, 5.0, -4.0), epsilon = 1.0e-6);
assert_relative_eq!(rot * vec, Vector3::new(6.0, 5.0, -4.0), epsilon = 1.0e-6);

// A zero vector yields an identity.
assert_eq!(Rotation3::from_scaled_axis(Vector3::<f32>::zeros()), Rotation3::identity());

pub fn from_euler_angles(roll: N, pitch: N, yaw: N) -> Rotation<N, U3>[src]

Creates a new rotation from Euler angles.

The primitive rotations are applied in order: 1 roll − 2 pitch − 3 yaw.

Example

let rot = Rotation3::from_euler_angles(0.1, 0.2, 0.3);
let euler = rot.euler_angles();
assert_relative_eq!(euler.0, 0.1, epsilon = 1.0e-6);
assert_relative_eq!(euler.1, 0.2, epsilon = 1.0e-6);
assert_relative_eq!(euler.2, 0.3, epsilon = 1.0e-6);

pub fn to_euler_angles(&self) -> (N, N, N)[src]

Deprecated:

This is renamed to use .euler_angles().

Creates Euler angles from a rotation.

The angles are produced in the form (roll, pitch, yaw).

pub fn euler_angles(&self) -> (N, N, N)[src]

Euler angles corresponding to this rotation from a rotation.

The angles are produced in the form (roll, pitch, yaw).

Example

let rot = Rotation3::from_euler_angles(0.1, 0.2, 0.3);
let euler = rot.euler_angles();
assert_relative_eq!(euler.0, 0.1, epsilon = 1.0e-6);
assert_relative_eq!(euler.1, 0.2, epsilon = 1.0e-6);
assert_relative_eq!(euler.2, 0.3, epsilon = 1.0e-6);

pub fn renormalize(&mut self)[src]

Ensure this rotation is an orthonormal rotation matrix. This is useful when repeated computations might cause the matrix from progressively not being orthonormal anymore.

pub fn face_towards<SB, SC>(
    dir: &Matrix<N, U3, U1, SB>,
    up: &Matrix<N, U3, U1, SC>
) -> Rotation<N, U3> where
    SB: Storage<N, U3, U1>,
    SC: Storage<N, U3, U1>, 
[src]

Creates a rotation that corresponds to the local frame of an observer standing at the origin and looking toward dir.

It maps the z axis to the direction dir.

Arguments

  • dir - The look direction, that is, direction the matrix z axis will be aligned with.
  • up - The vertical direction. The only requirement of this parameter is to not be collinear to dir. Non-collinearity is not checked.

Example

let dir = Vector3::new(1.0, 2.0, 3.0);
let up = Vector3::y();

let rot = Rotation3::face_towards(&dir, &up);
assert_relative_eq!(rot * Vector3::z(), dir.normalize());

pub fn new_observer_frames<SB, SC>(
    dir: &Matrix<N, U3, U1, SB>,
    up: &Matrix<N, U3, U1, SC>
) -> Rotation<N, U3> where
    SB: Storage<N, U3, U1>,
    SC: Storage<N, U3, U1>, 
[src]

Deprecated:

renamed to face_towards

Deprecated: Use [Rotation3::face_towards] instead.

pub fn look_at_rh<SB, SC>(
    dir: &Matrix<N, U3, U1, SB>,
    up: &Matrix<N, U3, U1, SC>
) -> Rotation<N, U3> where
    SB: Storage<N, U3, U1>,
    SC: Storage<N, U3, U1>, 
[src]

Builds a right-handed look-at view matrix without translation.

It maps the view direction dir to the negative z axis. This conforms to the common notion of right handed look-at matrix from the computer graphics community.

Arguments

  • dir - The direction toward which the camera looks.
  • up - A vector approximately aligned with required the vertical axis. The only requirement of this parameter is to not be collinear to dir.

Example

let dir = Vector3::new(1.0, 2.0, 3.0);
let up = Vector3::y();

let rot = Rotation3::look_at_rh(&dir, &up);
assert_relative_eq!(rot * dir.normalize(), -Vector3::z());

pub fn look_at_lh<SB, SC>(
    dir: &Matrix<N, U3, U1, SB>,
    up: &Matrix<N, U3, U1, SC>
) -> Rotation<N, U3> where
    SB: Storage<N, U3, U1>,
    SC: Storage<N, U3, U1>, 
[src]

Builds a left-handed look-at view matrix without translation.

It maps the view direction dir to the positive z axis. This conforms to the common notion of left handed look-at matrix from the computer graphics community.

Arguments

  • dir - The direction toward which the camera looks.
  • up - A vector approximately aligned with required the vertical axis. The only requirement of this parameter is to not be collinear to dir.

Example

let dir = Vector3::new(1.0, 2.0, 3.0);
let up = Vector3::y();

let rot = Rotation3::look_at_lh(&dir, &up);
assert_relative_eq!(rot * dir.normalize(), Vector3::z());

pub fn rotation_between<SB, SC>(
    a: &Matrix<N, U3, U1, SB>,
    b: &Matrix<N, U3, U1, SC>
) -> Option<Rotation<N, U3>> where
    SB: Storage<N, U3, U1>,
    SC: Storage<N, U3, U1>, 
[src]

The rotation matrix required to align a and b but with its angle.

This is the rotation R such that (R * a).angle(b) == 0 && (R * a).dot(b).is_positive().

Example

let a = Vector3::new(1.0, 2.0, 3.0);
let b = Vector3::new(3.0, 1.0, 2.0);
let rot = Rotation3::rotation_between(&a, &b).unwrap();
assert_relative_eq!(rot * a, b, epsilon = 1.0e-6);
assert_relative_eq!(rot.inverse() * b, a, epsilon = 1.0e-6);

pub fn scaled_rotation_between<SB, SC>(
    a: &Matrix<N, U3, U1, SB>,
    b: &Matrix<N, U3, U1, SC>,
    n: N
) -> Option<Rotation<N, U3>> where
    SB: Storage<N, U3, U1>,
    SC: Storage<N, U3, U1>, 
[src]

The smallest rotation needed to make a and b collinear and point toward the same direction, raised to the power s.

Example

let a = Vector3::new(1.0, 2.0, 3.0);
let b = Vector3::new(3.0, 1.0, 2.0);
let rot2 = Rotation3::scaled_rotation_between(&a, &b, 0.2).unwrap();
let rot5 = Rotation3::scaled_rotation_between(&a, &b, 0.5).unwrap();
assert_relative_eq!(rot2 * rot2 * rot2 * rot2 * rot2 * a, b, epsilon = 1.0e-6);
assert_relative_eq!(rot5 * rot5 * a, b, epsilon = 1.0e-6);

pub fn angle(&self) -> N[src]

The rotation angle in [0; pi].

Example

let axis = Unit::new_normalize(Vector3::new(1.0, 2.0, 3.0));
let rot = Rotation3::from_axis_angle(&axis, 1.78);
assert_relative_eq!(rot.angle(), 1.78);

pub fn axis(
    &self
) -> Option<Unit<Matrix<N, U3, U1, <DefaultAllocator as Allocator<N, U3, U1>>::Buffer>>>
[src]

The rotation axis. Returns None if the rotation angle is zero or PI.

Example

let axis = Unit::new_normalize(Vector3::new(1.0, 2.0, 3.0));
let angle = 1.2;
let rot = Rotation3::from_axis_angle(&axis, angle);
assert_relative_eq!(rot.axis().unwrap(), axis);

// Case with a zero angle.
let rot = Rotation3::from_axis_angle(&axis, 0.0);
assert!(rot.axis().is_none());

pub fn scaled_axis(
    &self
) -> Matrix<N, U3, U1, <DefaultAllocator as Allocator<N, U3, U1>>::Buffer>
[src]

The rotation axis multiplied by the rotation angle.

Example

let axisangle = Vector3::new(0.1, 0.2, 0.3);
let rot = Rotation3::new(axisangle);
assert_relative_eq!(rot.scaled_axis(), axisangle, epsilon = 1.0e-6);

pub fn axis_angle(
    &self
) -> Option<(Unit<Matrix<N, U3, U1, <DefaultAllocator as Allocator<N, U3, U1>>::Buffer>>, N)>
[src]

The rotation axis and angle in ]0, pi] of this unit quaternion.

Returns None if the angle is zero.

Example

let axis = Unit::new_normalize(Vector3::new(1.0, 2.0, 3.0));
let angle = 1.2;
let rot = Rotation3::from_axis_angle(&axis, angle);
let axis_angle = rot.axis_angle().unwrap();
assert_relative_eq!(axis_angle.0, axis);
assert_relative_eq!(axis_angle.1, angle);

// Case with a zero angle.
let rot = Rotation3::from_axis_angle(&axis, 0.0);
assert!(rot.axis_angle().is_none());

pub fn angle_to(&self, other: &Rotation<N, U3>) -> N[src]

The rotation angle needed to make self and other coincide.

Example

let rot1 = Rotation3::from_axis_angle(&Vector3::y_axis(), 1.0);
let rot2 = Rotation3::from_axis_angle(&Vector3::x_axis(), 0.1);
assert_relative_eq!(rot1.angle_to(&rot2), 1.0045657, epsilon = 1.0e-6);

pub fn rotation_to(&self, other: &Rotation<N, U3>) -> Rotation<N, U3>[src]

The rotation matrix needed to make self and other coincide.

The result is such that: self.rotation_to(other) * self == other.

Example

let rot1 = Rotation3::from_axis_angle(&Vector3::y_axis(), 1.0);
let rot2 = Rotation3::from_axis_angle(&Vector3::x_axis(), 0.1);
let rot_to = rot1.rotation_to(&rot2);
assert_relative_eq!(rot_to * rot1, rot2, epsilon = 1.0e-6);

pub fn powf(&self, n: N) -> Rotation<N, U3>[src]

Raise the quaternion to a given floating power, i.e., returns the rotation with the same axis as self and an angle equal to self.angle() multiplied by n.

Example

let axis = Unit::new_normalize(Vector3::new(1.0, 2.0, 3.0));
let angle = 1.2;
let rot = Rotation3::from_axis_angle(&axis, angle);
let pow = rot.powf(2.0);
assert_relative_eq!(pow.axis().unwrap(), axis, epsilon = 1.0e-6);
assert_eq!(pow.angle(), 2.4);

Trait Implementations

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

type Rotation = Rotation<N, D>

Type of the first rotation to be applied.

type NonUniformScaling = Id<Multiplicative>

Type of the non-uniform scaling to be applied.

type Translation = Id<Multiplicative>

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

default 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, D> TwoSidedInverse<Multiplicative> for Rotation<N, D> where
    D: DimName,
    N: RealField,
    DefaultAllocator: Allocator<N, D, D>, 
[src]

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

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

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

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

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

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

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

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

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

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

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

impl<N> MulAssign<Rotation<N, U3>> for Unit<Quaternion<N>> where
    N: RealField,
    DefaultAllocator: Allocator<N, U4, U1>,
    DefaultAllocator: Allocator<N, U3, U3>, 
[src]

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

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

Used for specifying relative comparisons.

default fn abs_diff_ne(&self, other: &Rhs, epsilon: Self::Epsilon) -> bool

The inverse of ApproxEq::abs_diff_eq.

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

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

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

Performs copy-assignment from source. Read more

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

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

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

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

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

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

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

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

Returns true if associativity holds for the given arguments.

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

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

default fn relative_ne(
    &self,
    other: &Rhs,
    epsilon: Self::Epsilon,
    max_relative: Self::Epsilon
) -> bool

The inverse of ApproxEq::relative_eq.

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

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

This method tests for !=.

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

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

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

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

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

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

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

impl<N> DivAssign<Rotation<N, U3>> for Unit<Quaternion<N>> where
    N: RealField,
    DefaultAllocator: Allocator<N, U4, U1>,
    DefaultAllocator: Allocator<N, U3, U3>, 
[src]

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

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

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

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

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

default fn id(O) -> Self[src]

Specific identity.

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

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

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

type Scaling = Id<Multiplicative>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

default 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<'a, N, D> Mul<Rotation<N, D>> for &'a Translation<N, D> where
    D: DimName,
    N: RealField,
    DefaultAllocator: Allocator<N, D, D>,
    DefaultAllocator: Allocator<N, D, U1>, 
[src]

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

The resulting type after applying the * operator.

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

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

The resulting type after applying the * operator.

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

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

The resulting type after applying the * operator.

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

type Output = Unit<Matrix<N, D, U1, <DefaultAllocator as Allocator<N, D, U1>>::Buffer>>

The resulting type after applying the * operator.

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

type Output = Matrix<N, D1, C2, <DefaultAllocator as Allocator<N, D1, C2>>::Buffer>

The resulting type after applying the * operator.

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

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

The resulting type after applying the * operator.

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

type Output = Matrix<N, R1, D2, <DefaultAllocator as Allocator<N, R1, D2>>::Buffer>

The resulting type after applying the * operator.

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

type Output = Unit<Matrix<N, D, U1, <DefaultAllocator as Allocator<N, D, U1>>::Buffer>>

The resulting type after applying the * operator.

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

type Output = Point<N, D>

The resulting type after applying the * operator.

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

type Output = Unit<Quaternion<N>>

The resulting type after applying the * operator.

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

type Output = Unit<Quaternion<N>>

The resulting type after applying the * operator.

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

type Output = Point<N, D>

The resulting type after applying the * operator.

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

type Output = Unit<Quaternion<N>>

The resulting type after applying the * operator.

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

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

The resulting type after applying the * operator.

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

type Output = Unit<Complex<N>>

The resulting type after applying the * operator.

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

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

The resulting type after applying the * operator.

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

type Output = Rotation<N, D>

The resulting type after applying the * operator.

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

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

The resulting type after applying the * operator.

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

type Output = Matrix<N, D1, C2, <DefaultAllocator as Allocator<N, D1, C2>>::Buffer>

The resulting type after applying the * operator.

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

type Output = Unit<Quaternion<N>>

The resulting type after applying the * operator.

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

type Output = Matrix<N, R1, D2, <DefaultAllocator as Allocator<N, R1, D2>>::Buffer>

The resulting type after applying the * operator.

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

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

The resulting type after applying the * operator.

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

type Output = Unit<Complex<N>>

The resulting type after applying the * operator.

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

type Output = Point<N, D>

The resulting type after applying the * operator.

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

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

The resulting type after applying the * operator.

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

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

The resulting type after applying the * operator.

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

type Output = Unit<Complex<N>>

The resulting type after applying the * operator.

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

type Output = Matrix<N, R1, D2, <DefaultAllocator as Allocator<N, R1, D2>>::Buffer>

The resulting type after applying the * operator.

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

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

The resulting type after applying the * operator.

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

type Output = Unit<Complex<N>>

The resulting type after applying the * operator.

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

type Output = Unit<Quaternion<N>>

The resulting type after applying the * operator.

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

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

The resulting type after applying the * operator.

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

type Output = Unit<Matrix<N, D, U1, <DefaultAllocator as Allocator<N, D, U1>>::Buffer>>

The resulting type after applying the * operator.

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

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

The resulting type after applying the * operator.

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

type Output = Matrix<N, D1, C2, <DefaultAllocator as Allocator<N, D1, C2>>::Buffer>

The resulting type after applying the * operator.

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

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

The resulting type after applying the * operator.

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

type Output = Unit<Complex<N>>

The resulting type after applying the * operator.

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

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

The resulting type after applying the * operator.

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

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

The resulting type after applying the * operator.

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

type Output = Unit<Matrix<N, D, U1, <DefaultAllocator as Allocator<N, D, U1>>::Buffer>>

The resulting type after applying the * operator.

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

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

The resulting type after applying the * operator.

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

type Output = Rotation<N, D>

The resulting type after applying the * operator.

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

type Output = Unit<Quaternion<N>>

The resulting type after applying the * operator.

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

type Output = Unit<Complex<N>>

The resulting type after applying the * operator.

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

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

The resulting type after applying the * operator.

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

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

The resulting type after applying the * operator.

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

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

The resulting type after applying the * operator.

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

type Output = Unit<Quaternion<N>>

The resulting type after applying the * operator.

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

type Output = Unit<Complex<N>>

The resulting type after applying the * operator.

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

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

The resulting type after applying the * operator.

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

type Output = Point<N, D>

The resulting type after applying the * operator.

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

type Output = Matrix<N, D1, C2, <DefaultAllocator as Allocator<N, D1, C2>>::Buffer>

The resulting type after applying the * operator.

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

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

The resulting type after applying the * operator.

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

type Output = Matrix<N, R1, D2, <DefaultAllocator as Allocator<N, R1, D2>>::Buffer>

The resulting type after applying the * operator.

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

type Output = Rotation<N, D>

The resulting type after applying the * operator.

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

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

The resulting type after applying the * operator.

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

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

The resulting type after applying the * operator.

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

type Output = Unit<Complex<N>>

The resulting type after applying the * operator.

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

type Output = Rotation<N, D>

The resulting type after applying the * operator.

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

type Output = Unit<Quaternion<N>>

The resulting type after applying the * operator.

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

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

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

default 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> Isometry<Point<N, D>> for Rotation<N, D> where
    D: DimName,
    N: RealField,
    DefaultAllocator: Allocator<N, D, D>,
    DefaultAllocator: Allocator<N, D, U1>, 
[src]

impl<N1, N2> SubsetOf<Unit<Quaternion<N2>>> for Rotation<N1, U3> where
    N1: RealField,
    N2: RealField + SupersetOf<N1>, 
[src]

default 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
    C: SuperTCategoryOf<TAffine>,
    D: DimNameAdd<U1> + DimMin<D, Output = D>,
    N1: RealField,
    N2: RealField + SupersetOf<N1>,
    DefaultAllocator: Allocator<N1, D, D>,
    DefaultAllocator: Allocator<N2, D, D>,
    DefaultAllocator: Allocator<N1, <D as DimNameAdd<U1>>::Output, <D as DimNameAdd<U1>>::Output>,
    DefaultAllocator: Allocator<N2, <D as DimNameAdd<U1>>::Output, <D as DimNameAdd<U1>>::Output>,
    DefaultAllocator: Allocator<(usize, usize), D, U1>, 
[src]

default 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
    D: DimNameAdd<U1> + DimMin<D, Output = D>,
    N1: RealField,
    N2: RealField + SupersetOf<N1>,
    DefaultAllocator: Allocator<N1, D, D>,
    DefaultAllocator: Allocator<N2, D, D>,
    DefaultAllocator: Allocator<N1, <D as DimNameAdd<U1>>::Output, <D as DimNameAdd<U1>>::Output>,
    DefaultAllocator: Allocator<N2, <D as DimNameAdd<U1>>::Output, <D as DimNameAdd<U1>>::Output>,
    DefaultAllocator: Allocator<(usize, usize), D, U1>, 
[src]

default 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<Unit<Complex<N2>>> for Rotation<N1, U2> where
    N1: RealField,
    N2: RealField + SupersetOf<N1>, 
[src]

default 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, R> SubsetOf<Similarity<N2, D, R>> for Rotation<N1, D> where
    D: DimName,
    N1: RealField,
    N2: RealField + SupersetOf<N1>,
    R: Rotation<Point<N2, D>> + SupersetOf<Rotation<N1, D>>,
    DefaultAllocator: Allocator<N1, D, D>,
    DefaultAllocator: Allocator<N2, D, U1>, 
[src]

default 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 Unit<Complex<N1>> where
    N1: RealField,
    N2: RealField + SupersetOf<N1>, 
[src]

default 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, R> SubsetOf<Isometry<N2, D, R>> for Rotation<N1, D> where
    D: DimName,
    N1: RealField,
    N2: RealField + SupersetOf<N1>,
    R: Rotation<Point<N2, D>> + SupersetOf<Rotation<N1, D>>,
    DefaultAllocator: Allocator<N1, D, D>,
    DefaultAllocator: Allocator<N2, D, U1>, 
[src]

default 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 Unit<Quaternion<N1>> where
    N1: RealField,
    N2: RealField + SupersetOf<N1>, 
[src]

default 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<Rotation<N2, D>> for Rotation<N1, D> where
    D: DimName,
    N1: RealField,
    N2: RealField + SupersetOf<N1>,
    DefaultAllocator: Allocator<N1, D, D>,
    DefaultAllocator: Allocator<N2, D, D>, 
[src]

default 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, D> Rotation<Point<N, D>> for Rotation<N, D> where
    D: DimName,
    N: RealField,
    DefaultAllocator: Allocator<N, D, D>,
    DefaultAllocator: Allocator<N, D, U1>, 
[src]

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

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

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

Performs specific operation.

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

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

default fn ulps_ne(
    &self,
    other: &Rhs,
    epsilon: Self::Epsilon,
    max_ulps: u32
) -> bool

The inverse of ApproxEq::ulps_eq.

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

type Output = Unit<Complex<N>>

The resulting type after applying the / operator.

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

type Output = Rotation<N, D>

The resulting type after applying the / operator.

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

type Output = Unit<Complex<N>>

The resulting type after applying the / operator.

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

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

The resulting type after applying the / operator.

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

type Output = Matrix<N, R1, D2, <DefaultAllocator as Allocator<N, R1, D2>>::Buffer>

The resulting type after applying the / operator.

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

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

The resulting type after applying the / operator.

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

type Output = Rotation<N, D>

The resulting type after applying the / operator.

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

type Output = Rotation<N, D>

The resulting type after applying the / operator.

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

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

The resulting type after applying the / operator.

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

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

The resulting type after applying the / operator.

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

type Output = Rotation<N, D>

The resulting type after applying the / operator.

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

type Output = Unit<Quaternion<N>>

The resulting type after applying the / operator.

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

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

The resulting type after applying the / operator.

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

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

The resulting type after applying the / operator.

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

type Output = Unit<Quaternion<N>>

The resulting type after applying the / operator.

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

type Output = Unit<Quaternion<N>>

The resulting type after applying the / operator.

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

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

The resulting type after applying the / operator.

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

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

The resulting type after applying the / operator.

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

type Output = Unit<Complex<N>>

The resulting type after applying the / operator.

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

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

The resulting type after applying the / operator.

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

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

The resulting type after applying the / operator.

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

type Output = Unit<Complex<N>>

The resulting type after applying the / operator.

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

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

The resulting type after applying the / operator.

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

type Output = Unit<Quaternion<N>>

The resulting type after applying the / operator.

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

type Output = Unit<Quaternion<N>>

The resulting type after applying the / operator.

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

type Output = Unit<Complex<N>>

The resulting type after applying the / operator.

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

type Output = Unit<Quaternion<N>>

The resulting type after applying the / operator.

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

type Output = Matrix<N, R1, D2, <DefaultAllocator as Allocator<N, R1, D2>>::Buffer>

The resulting type after applying the / operator.

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

type Output = Unit<Quaternion<N>>

The resulting type after applying the / operator.

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

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

The resulting type after applying the / operator.

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

type Output = Unit<Complex<N>>

The resulting type after applying the / operator.

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

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

The resulting type after applying the / operator.

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

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

The resulting type after applying the / operator.

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

type Output = Unit<Quaternion<N>>

The resulting type after applying the / operator.

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

type Output = Matrix<N, R1, D2, <DefaultAllocator as Allocator<N, R1, D2>>::Buffer>

The resulting type after applying the / operator.

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

type Output = Unit<Complex<N>>

The resulting type after applying the / operator.

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

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

The resulting type after applying the / operator.

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

type Output = Unit<Complex<N>>

The resulting type after applying the / operator.

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

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

The resulting type after applying the / operator.

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

type Output = Matrix<N, R1, D2, <DefaultAllocator as Allocator<N, R1, D2>>::Buffer>

The resulting type after applying the / operator.

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

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

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

default 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, D> AbstractQuasigroup<Multiplicative> for Rotation<N, D> where
    D: DimName,
    N: RealField,
    DefaultAllocator: Allocator<N, D, D>, 
[src]

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

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

default 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, D> Index<(usize, usize)> for Rotation<N, D> where
    D: DimName,
    N: Scalar,
    DefaultAllocator: Allocator<N, D, D>, 
[src]

type Output = N

The returned type after indexing.

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

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

impl<N> From<Unit<Complex<N>>> for Rotation<N, U2> where
    N: RealField
[src]

impl<N> From<Rotation<N, U2>> for Matrix<N, U2, U2, <DefaultAllocator as Allocator<N, U2, U2>>::Buffer> where
    N: RealField
[src]

impl<N> From<Rotation<N, U2>> for Unit<Complex<N>> where
    N: RealField
[src]

impl<N> From<Rotation<N, U2>> for Matrix<N, U3, U3, <DefaultAllocator as Allocator<N, U3, U3>>::Buffer> where
    N: RealField
[src]

impl<N> From<Rotation<N, U3>> for Matrix<N, U4, U4, <DefaultAllocator as Allocator<N, U4, U4>>::Buffer> where
    N: RealField
[src]

impl<N> From<Rotation<N, U3>> for Unit<Quaternion<N>> where
    N: RealField
[src]

impl<N> From<Rotation<N, U3>> for Matrix<N, U3, U3, <DefaultAllocator as Allocator<N, U3, U3>>::Buffer> where
    N: RealField
[src]

impl<N> From<Unit<Quaternion<N>>> for Rotation<N, U3> where
    N: RealField
[src]

Auto Trait Implementations

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

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

Blanket Implementations

impl<V> IntoVec for V[src]

impl<V> IntoPnt for V[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> From for T[src]

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

type Error = Infallible

The type returned in the event of a conversion error.

impl<T> Borrow for T where
    T: ?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

The type returned in the event of a conversion error.

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

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

impl<T> Same for T

type Output = T

Should always be Self

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

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

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

impl<R, E> ProjectiveTransformation for R where
    E: EuclideanSpace<RealField = R>,
    R: RealField,
    <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<RealField = R>,
    R: RealField,
    <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.

default 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<RealField = R>,
    R: RealField + 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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

default 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<T> MultiplicativeGroup for T where
    T: AbstractGroup<Multiplicative> + MultiplicativeLoop + MultiplicativeMonoid
[src]

impl<T> MultiplicativeMonoid for T where
    T: AbstractMonoid<Multiplicative> + MultiplicativeSemigroup + One
[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]