Struct nalgebra::geometry::Isometry[][src]

#[repr(C)]
pub struct Isometry<T: Scalar, R, const D: usize> { pub rotation: R, pub translation: Translation<T, D>, }
Expand description

A direct isometry, i.e., a rotation followed by a translation (aka. a rigid-body motion).

This is also known as an element of a Special Euclidean (SE) group. The Isometry type can either represent a 2D or 3D isometry. A 2D isometry is composed of:

Note that instead of using the Isometry type in your code directly, you should use one of its aliases: Isometry2, Isometry3, IsometryMatrix2, IsometryMatrix3. Though keep in mind that all the documentation of all the methods of these aliases will also appears on this page.

Construction

Transformation and composition

Note that transforming vectors and points can be done by multiplication, e.g., isometry * point. Composing an isometry with another transformation can also be done by multiplication or division.

Conversion to a matrix

Fields

rotation: R

The pure rotational part of this isometry.

translation: Translation<T, D>

The pure translational part of this isometry.

Implementations

impl<T: Scalar, R: AbstractRotation<T, D>, const D: usize> Isometry<T, R, D>[src]

pub fn from_parts(translation: Translation<T, D>, rotation: R) -> Self[src]

Creates a new isometry from its rotational and translational parts.

Example

let tra = Translation3::new(0.0, 0.0, 3.0);
let rot = UnitQuaternion::from_scaled_axis(Vector3::y() * f32::consts::PI);
let iso = Isometry3::from_parts(tra, rot);

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

impl<T: SimdRealField, R: AbstractRotation<T, D>, const D: usize> Isometry<T, R, D> where
    T::Element: SimdRealField
[src]

#[must_use = "Did you mean to use inverse_mut()?"]
pub fn inverse(&self) -> Self
[src]

Inverts self.

Example

let iso = Isometry2::new(Vector2::new(1.0, 2.0), f32::consts::FRAC_PI_2);
let inv = iso.inverse();
let pt = Point2::new(1.0, 2.0);

assert_eq!(inv * (iso * pt), pt);

pub fn inverse_mut(&mut self)[src]

Inverts self in-place.

Example

let mut iso = Isometry2::new(Vector2::new(1.0, 2.0), f32::consts::FRAC_PI_2);
let pt = Point2::new(1.0, 2.0);
let transformed_pt = iso * pt;
iso.inverse_mut();

assert_eq!(iso * transformed_pt, pt);

pub fn inv_mul(&self, rhs: &Isometry<T, R, D>) -> Self[src]

Computes self.inverse() * rhs in a more efficient way.

Example

let mut iso1 = Isometry2::new(Vector2::new(1.0, 2.0), f32::consts::FRAC_PI_2);
let mut iso2 = Isometry2::new(Vector2::new(10.0, 20.0), f32::consts::FRAC_PI_4);

assert_eq!(iso1.inverse() * iso2, iso1.inv_mul(&iso2));

pub fn append_translation_mut(&mut self, t: &Translation<T, D>)[src]

Appends to self the given translation in-place.

Example

let mut iso = Isometry2::new(Vector2::new(1.0, 2.0), f32::consts::FRAC_PI_2);
let tra = Translation2::new(3.0, 4.0);
// Same as `iso = tra * iso`.
iso.append_translation_mut(&tra);

assert_eq!(iso.translation, Translation2::new(4.0, 6.0));

pub fn append_rotation_mut(&mut self, r: &R)[src]

Appends to self the given rotation in-place.

Example

let mut iso = Isometry2::new(Vector2::new(1.0, 2.0), f32::consts::PI / 6.0);
let rot = UnitComplex::new(f32::consts::PI / 2.0);
// Same as `iso = rot * iso`.
iso.append_rotation_mut(&rot);

assert_relative_eq!(iso, Isometry2::new(Vector2::new(-2.0, 1.0), f32::consts::PI * 2.0 / 3.0), epsilon = 1.0e-6);

pub fn append_rotation_wrt_point_mut(&mut self, r: &R, p: &Point<T, D>)[src]

Appends in-place to self a rotation centered at the point p, i.e., the rotation that lets p invariant.

Example

let mut iso = Isometry2::new(Vector2::new(1.0, 2.0), f32::consts::FRAC_PI_2);
let rot = UnitComplex::new(f32::consts::FRAC_PI_2);
let pt = Point2::new(1.0, 0.0);
iso.append_rotation_wrt_point_mut(&rot, &pt);

assert_relative_eq!(iso * pt, Point2::new(-2.0, 0.0), epsilon = 1.0e-6);

pub fn append_rotation_wrt_center_mut(&mut self, r: &R)[src]

Appends in-place to self a rotation centered at the point with coordinates self.translation.

Example

let mut iso = Isometry2::new(Vector2::new(1.0, 2.0), f32::consts::FRAC_PI_2);
let rot = UnitComplex::new(f32::consts::FRAC_PI_2);
iso.append_rotation_wrt_center_mut(&rot);

// The translation part should not have changed.
assert_eq!(iso.translation.vector, Vector2::new(1.0, 2.0));
assert_eq!(iso.rotation, UnitComplex::new(f32::consts::PI));

impl<T: SimdRealField, R: AbstractRotation<T, D>, const D: usize> Isometry<T, R, D> where
    T::Element: SimdRealField
[src]

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

Transform the given point by this isometry.

This is the same as the multiplication self * pt.

Example

let tra = Translation3::new(0.0, 0.0, 3.0);
let rot = UnitQuaternion::from_scaled_axis(Vector3::y() * f32::consts::FRAC_PI_2);
let iso = Isometry3::from_parts(tra, rot);

let transformed_point = iso.transform_point(&Point3::new(1.0, 2.0, 3.0));
assert_relative_eq!(transformed_point, Point3::new(3.0, 2.0, 2.0), epsilon = 1.0e-6);

pub fn transform_vector(&self, v: &SVector<T, D>) -> SVector<T, D>[src]

Transform the given vector by this isometry, ignoring the translation component of the isometry.

This is the same as the multiplication self * v.

Example

let tra = Translation3::new(0.0, 0.0, 3.0);
let rot = UnitQuaternion::from_scaled_axis(Vector3::y() * f32::consts::FRAC_PI_2);
let iso = Isometry3::from_parts(tra, rot);

let transformed_point = iso.transform_vector(&Vector3::new(1.0, 2.0, 3.0));
assert_relative_eq!(transformed_point, Vector3::new(3.0, 2.0, -1.0), epsilon = 1.0e-6);

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

Transform the given point by the inverse of this isometry. This may be less expensive than computing the entire isometry inverse and then transforming the point.

Example

let tra = Translation3::new(0.0, 0.0, 3.0);
let rot = UnitQuaternion::from_scaled_axis(Vector3::y() * f32::consts::FRAC_PI_2);
let iso = Isometry3::from_parts(tra, rot);

let transformed_point = iso.inverse_transform_point(&Point3::new(1.0, 2.0, 3.0));
assert_relative_eq!(transformed_point, Point3::new(0.0, 2.0, 1.0), epsilon = 1.0e-6);

pub fn inverse_transform_vector(&self, v: &SVector<T, D>) -> SVector<T, D>[src]

Transform the given vector by the inverse of this isometry, ignoring the translation component of the isometry. This may be less expensive than computing the entire isometry inverse and then transforming the point.

Example

let tra = Translation3::new(0.0, 0.0, 3.0);
let rot = UnitQuaternion::from_scaled_axis(Vector3::y() * f32::consts::FRAC_PI_2);
let iso = Isometry3::from_parts(tra, rot);

let transformed_point = iso.inverse_transform_vector(&Vector3::new(1.0, 2.0, 3.0));
assert_relative_eq!(transformed_point, Vector3::new(-3.0, 2.0, 1.0), epsilon = 1.0e-6);

pub fn inverse_transform_unit_vector(
    &self,
    v: &Unit<SVector<T, D>>
) -> Unit<SVector<T, D>>
[src]

Transform the given unit vector by the inverse of this isometry, ignoring the translation component of the isometry. This may be less expensive than computing the entire isometry inverse and then transforming the point.

Example

let tra = Translation3::new(0.0, 0.0, 3.0);
let rot = UnitQuaternion::from_scaled_axis(Vector3::z() * f32::consts::FRAC_PI_2);
let iso = Isometry3::from_parts(tra, rot);

let transformed_point = iso.inverse_transform_unit_vector(&Vector3::x_axis());
assert_relative_eq!(transformed_point, -Vector3::y_axis(), epsilon = 1.0e-6);

impl<T: SimdRealField, R, const D: usize> Isometry<T, R, D>[src]

pub fn to_homogeneous(
    &self
) -> OMatrix<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>> where
    Const<D>: DimNameAdd<U1>,
    R: SubsetOf<OMatrix<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>>,
    DefaultAllocator: Allocator<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>, 
[src]

Converts this isometry into its equivalent homogeneous transformation matrix.

This is the same as self.to_matrix().

Example

let iso = Isometry2::new(Vector2::new(10.0, 20.0), f32::consts::FRAC_PI_6);
let expected = Matrix3::new(0.8660254, -0.5,      10.0,
                            0.5,       0.8660254, 20.0,
                            0.0,       0.0,       1.0);

assert_relative_eq!(iso.to_homogeneous(), expected, epsilon = 1.0e-6);

pub fn to_matrix(
    &self
) -> OMatrix<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>> where
    Const<D>: DimNameAdd<U1>,
    R: SubsetOf<OMatrix<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>>,
    DefaultAllocator: Allocator<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>, 
[src]

Converts this isometry into its equivalent homogeneous transformation matrix.

This is the same as self.to_homogeneous().

Example

let iso = Isometry2::new(Vector2::new(10.0, 20.0), f32::consts::FRAC_PI_6);
let expected = Matrix3::new(0.8660254, -0.5,      10.0,
                            0.5,       0.8660254, 20.0,
                            0.0,       0.0,       1.0);

assert_relative_eq!(iso.to_matrix(), expected, epsilon = 1.0e-6);

impl<T: SimdRealField, R: AbstractRotation<T, D>, const D: usize> Isometry<T, R, D> where
    T::Element: SimdRealField
[src]

pub fn identity() -> Self[src]

Creates a new identity isometry.

Example


let iso = Isometry2::identity();
let pt = Point2::new(1.0, 2.0);
assert_eq!(iso * pt, pt);

let iso = Isometry3::identity();
let pt = Point3::new(1.0, 2.0, 3.0);
assert_eq!(iso * pt, pt);

pub fn rotation_wrt_point(r: R, p: Point<T, D>) -> Self[src]

The isometry that applies the rotation r with its axis passing through the point p. This effectively lets p invariant.

Example

let rot = UnitComplex::new(f32::consts::PI);
let pt = Point2::new(1.0, 0.0);
let iso = Isometry2::rotation_wrt_point(rot, pt);

assert_eq!(iso * pt, pt); // The rotation center is not affected.
assert_relative_eq!(iso * Point2::new(1.0, 2.0), Point2::new(1.0, -2.0), epsilon = 1.0e-6);

impl<T: SimdRealField> Isometry<T, Rotation<T, 2_usize>, 2_usize> where
    T::Element: SimdRealField
[src]

pub fn new(translation: Vector2<T>, angle: T) -> Self[src]

Creates a new 2D isometry from a translation and a rotation angle.

Its rotational part is represented as a 2x2 rotation matrix.

Example

let iso = Isometry2::new(Vector2::new(1.0, 2.0), f32::consts::FRAC_PI_2);

assert_eq!(iso * Point2::new(3.0, 4.0), Point2::new(-3.0, 5.0));

pub fn translation(x: T, y: T) -> Self[src]

Creates a new isometry from the given translation coordinates.

pub fn rotation(angle: T) -> Self[src]

Creates a new isometry from the given rotation angle.

pub fn cast<To: Scalar>(self) -> IsometryMatrix2<To> where
    IsometryMatrix2<To>: SupersetOf<Self>, 
[src]

Cast the components of self to another type.

Example

let iso = IsometryMatrix2::<f64>::identity();
let iso2 = iso.cast::<f32>();
assert_eq!(iso2, IsometryMatrix2::<f32>::identity());

impl<T: SimdRealField> Isometry<T, Unit<Complex<T>>, 2_usize> where
    T::Element: SimdRealField
[src]

pub fn new(translation: Vector2<T>, angle: T) -> Self[src]

Creates a new 2D isometry from a translation and a rotation angle.

Its rotational part is represented as an unit complex number.

Example

let iso = IsometryMatrix2::new(Vector2::new(1.0, 2.0), f32::consts::FRAC_PI_2);

assert_eq!(iso * Point2::new(3.0, 4.0), Point2::new(-3.0, 5.0));

pub fn translation(x: T, y: T) -> Self[src]

Creates a new isometry from the given translation coordinates.

pub fn rotation(angle: T) -> Self[src]

Creates a new isometry from the given rotation angle.

pub fn cast<To: Scalar>(self) -> Isometry2<To> where
    Isometry2<To>: SupersetOf<Self>, 
[src]

Cast the components of self to another type.

Example

let iso = Isometry2::<f64>::identity();
let iso2 = iso.cast::<f32>();
assert_eq!(iso2, Isometry2::<f32>::identity());

impl<T: SimdRealField> Isometry<T, Unit<Quaternion<T>>, 3_usize> where
    T::Element: SimdRealField
[src]

pub fn new(translation: Vector3<T>, axisangle: Vector3<T>) -> Self[src]

Creates a new isometry from a translation and a rotation axis-angle.

Example

let axisangle = Vector3::y() * f32::consts::FRAC_PI_2;
let translation = Vector3::new(1.0, 2.0, 3.0);
// 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);

// Isometry with its rotation part represented as a UnitQuaternion
let iso = Isometry3::new(translation, axisangle);
assert_relative_eq!(iso * pt, Point3::new(7.0, 7.0, -1.0), epsilon = 1.0e-6);
assert_relative_eq!(iso * vec, Vector3::new(6.0, 5.0, -4.0), epsilon = 1.0e-6);

// Isometry with its rotation part represented as a Rotation3 (a 3x3 rotation matrix).
let iso = IsometryMatrix3::new(translation, axisangle);
assert_relative_eq!(iso * pt, Point3::new(7.0, 7.0, -1.0), epsilon = 1.0e-6);
assert_relative_eq!(iso * vec, Vector3::new(6.0, 5.0, -4.0), epsilon = 1.0e-6);

pub fn translation(x: T, y: T, z: T) -> Self[src]

Creates a new isometry from the given translation coordinates.

pub fn rotation(axisangle: Vector3<T>) -> Self[src]

Creates a new isometry from the given rotation angle.

pub fn cast<To: Scalar>(self) -> Isometry3<To> where
    Isometry3<To>: SupersetOf<Self>, 
[src]

Cast the components of self to another type.

Example

let iso = Isometry3::<f64>::identity();
let iso2 = iso.cast::<f32>();
assert_eq!(iso2, Isometry3::<f32>::identity());

impl<T: SimdRealField> Isometry<T, Rotation<T, 3_usize>, 3_usize> where
    T::Element: SimdRealField
[src]

pub fn new(translation: Vector3<T>, axisangle: Vector3<T>) -> Self[src]

Creates a new isometry from a translation and a rotation axis-angle.

Example

let axisangle = Vector3::y() * f32::consts::FRAC_PI_2;
let translation = Vector3::new(1.0, 2.0, 3.0);
// 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);

// Isometry with its rotation part represented as a UnitQuaternion
let iso = Isometry3::new(translation, axisangle);
assert_relative_eq!(iso * pt, Point3::new(7.0, 7.0, -1.0), epsilon = 1.0e-6);
assert_relative_eq!(iso * vec, Vector3::new(6.0, 5.0, -4.0), epsilon = 1.0e-6);

// Isometry with its rotation part represented as a Rotation3 (a 3x3 rotation matrix).
let iso = IsometryMatrix3::new(translation, axisangle);
assert_relative_eq!(iso * pt, Point3::new(7.0, 7.0, -1.0), epsilon = 1.0e-6);
assert_relative_eq!(iso * vec, Vector3::new(6.0, 5.0, -4.0), epsilon = 1.0e-6);

pub fn translation(x: T, y: T, z: T) -> Self[src]

Creates a new isometry from the given translation coordinates.

pub fn rotation(axisangle: Vector3<T>) -> Self[src]

Creates a new isometry from the given rotation angle.

pub fn cast<To: Scalar>(self) -> IsometryMatrix3<To> where
    IsometryMatrix3<To>: SupersetOf<Self>, 
[src]

Cast the components of self to another type.

Example

let iso = IsometryMatrix3::<f64>::identity();
let iso2 = iso.cast::<f32>();
assert_eq!(iso2, IsometryMatrix3::<f32>::identity());

impl<T: SimdRealField> Isometry<T, Unit<Quaternion<T>>, 3_usize> where
    T::Element: SimdRealField
[src]

pub fn face_towards(
    eye: &Point3<T>,
    target: &Point3<T>,
    up: &Vector3<T>
) -> Self
[src]

Creates an isometry that corresponds to the local frame of an observer standing at the point eye and looking toward target.

It maps the z axis to the view direction target - eyeand the origin to the eye.

Arguments

  • eye - The observer position.
  • target - The target position.
  • up - Vertical direction. The only requirement of this parameter is to not be collinear to eye - at. Non-collinearity is not checked.

Example

let eye = Point3::new(1.0, 2.0, 3.0);
let target = Point3::new(2.0, 2.0, 3.0);
let up = Vector3::y();

// Isometry with its rotation part represented as a UnitQuaternion
let iso = Isometry3::face_towards(&eye, &target, &up);
assert_eq!(iso * Point3::origin(), eye);
assert_relative_eq!(iso * Vector3::z(), Vector3::x());

// Isometry with its rotation part represented as Rotation3 (a 3x3 rotation matrix).
let iso = IsometryMatrix3::face_towards(&eye, &target, &up);
assert_eq!(iso * Point3::origin(), eye);
assert_relative_eq!(iso * Vector3::z(), Vector3::x());

pub fn new_observer_frame(
    eye: &Point3<T>,
    target: &Point3<T>,
    up: &Vector3<T>
) -> Self
[src]

👎 Deprecated:

renamed to face_towards

Deprecated: Use Isometry::face_towards instead.

pub fn look_at_rh(eye: &Point3<T>, target: &Point3<T>, up: &Vector3<T>) -> Self[src]

Builds a right-handed look-at view matrix.

It maps the view direction target - eye to the negative z axis to and the eye to the origin. This conforms to the common notion of right handed camera look-at view matrix from the computer graphics community, i.e. the camera is assumed to look toward its local -z axis.

Arguments

  • eye - The eye position.
  • target - The target position.
  • up - A vector approximately aligned with required the vertical axis. The only requirement of this parameter is to not be collinear to target - eye.

Example

let eye = Point3::new(1.0, 2.0, 3.0);
let target = Point3::new(2.0, 2.0, 3.0);
let up = Vector3::y();

// Isometry with its rotation part represented as a UnitQuaternion
let iso = Isometry3::look_at_rh(&eye, &target, &up);
assert_eq!(iso * eye, Point3::origin());
assert_relative_eq!(iso * Vector3::x(), -Vector3::z());

// Isometry with its rotation part represented as Rotation3 (a 3x3 rotation matrix).
let iso = IsometryMatrix3::look_at_rh(&eye, &target, &up);
assert_eq!(iso * eye, Point3::origin());
assert_relative_eq!(iso * Vector3::x(), -Vector3::z());

pub fn look_at_lh(eye: &Point3<T>, target: &Point3<T>, up: &Vector3<T>) -> Self[src]

Builds a left-handed look-at view matrix.

It maps the view direction target - eye to the positive z axis and the eye to the origin. This conforms to the common notion of right handed camera look-at view matrix from the computer graphics community, i.e. the camera is assumed to look toward its local z axis.

Arguments

  • eye - The eye position.
  • target - The target position.
  • up - A vector approximately aligned with required the vertical axis. The only requirement of this parameter is to not be collinear to target - eye.

Example

let eye = Point3::new(1.0, 2.0, 3.0);
let target = Point3::new(2.0, 2.0, 3.0);
let up = Vector3::y();

// Isometry with its rotation part represented as a UnitQuaternion
let iso = Isometry3::look_at_lh(&eye, &target, &up);
assert_eq!(iso * eye, Point3::origin());
assert_relative_eq!(iso * Vector3::x(), Vector3::z());

// Isometry with its rotation part represented as Rotation3 (a 3x3 rotation matrix).
let iso = IsometryMatrix3::look_at_lh(&eye, &target, &up);
assert_eq!(iso * eye, Point3::origin());
assert_relative_eq!(iso * Vector3::x(), Vector3::z());

impl<T: SimdRealField> Isometry<T, Rotation<T, 3_usize>, 3_usize> where
    T::Element: SimdRealField
[src]

pub fn face_towards(
    eye: &Point3<T>,
    target: &Point3<T>,
    up: &Vector3<T>
) -> Self
[src]

Creates an isometry that corresponds to the local frame of an observer standing at the point eye and looking toward target.

It maps the z axis to the view direction target - eyeand the origin to the eye.

Arguments

  • eye - The observer position.
  • target - The target position.
  • up - Vertical direction. The only requirement of this parameter is to not be collinear to eye - at. Non-collinearity is not checked.

Example

let eye = Point3::new(1.0, 2.0, 3.0);
let target = Point3::new(2.0, 2.0, 3.0);
let up = Vector3::y();

// Isometry with its rotation part represented as a UnitQuaternion
let iso = Isometry3::face_towards(&eye, &target, &up);
assert_eq!(iso * Point3::origin(), eye);
assert_relative_eq!(iso * Vector3::z(), Vector3::x());

// Isometry with its rotation part represented as Rotation3 (a 3x3 rotation matrix).
let iso = IsometryMatrix3::face_towards(&eye, &target, &up);
assert_eq!(iso * Point3::origin(), eye);
assert_relative_eq!(iso * Vector3::z(), Vector3::x());

pub fn new_observer_frame(
    eye: &Point3<T>,
    target: &Point3<T>,
    up: &Vector3<T>
) -> Self
[src]

👎 Deprecated:

renamed to face_towards

Deprecated: Use Isometry::face_towards instead.

pub fn look_at_rh(eye: &Point3<T>, target: &Point3<T>, up: &Vector3<T>) -> Self[src]

Builds a right-handed look-at view matrix.

It maps the view direction target - eye to the negative z axis to and the eye to the origin. This conforms to the common notion of right handed camera look-at view matrix from the computer graphics community, i.e. the camera is assumed to look toward its local -z axis.

Arguments

  • eye - The eye position.
  • target - The target position.
  • up - A vector approximately aligned with required the vertical axis. The only requirement of this parameter is to not be collinear to target - eye.

Example

let eye = Point3::new(1.0, 2.0, 3.0);
let target = Point3::new(2.0, 2.0, 3.0);
let up = Vector3::y();

// Isometry with its rotation part represented as a UnitQuaternion
let iso = Isometry3::look_at_rh(&eye, &target, &up);
assert_eq!(iso * eye, Point3::origin());
assert_relative_eq!(iso * Vector3::x(), -Vector3::z());

// Isometry with its rotation part represented as Rotation3 (a 3x3 rotation matrix).
let iso = IsometryMatrix3::look_at_rh(&eye, &target, &up);
assert_eq!(iso * eye, Point3::origin());
assert_relative_eq!(iso * Vector3::x(), -Vector3::z());

pub fn look_at_lh(eye: &Point3<T>, target: &Point3<T>, up: &Vector3<T>) -> Self[src]

Builds a left-handed look-at view matrix.

It maps the view direction target - eye to the positive z axis and the eye to the origin. This conforms to the common notion of right handed camera look-at view matrix from the computer graphics community, i.e. the camera is assumed to look toward its local z axis.

Arguments

  • eye - The eye position.
  • target - The target position.
  • up - A vector approximately aligned with required the vertical axis. The only requirement of this parameter is to not be collinear to target - eye.

Example

let eye = Point3::new(1.0, 2.0, 3.0);
let target = Point3::new(2.0, 2.0, 3.0);
let up = Vector3::y();

// Isometry with its rotation part represented as a UnitQuaternion
let iso = Isometry3::look_at_lh(&eye, &target, &up);
assert_eq!(iso * eye, Point3::origin());
assert_relative_eq!(iso * Vector3::x(), Vector3::z());

// Isometry with its rotation part represented as Rotation3 (a 3x3 rotation matrix).
let iso = IsometryMatrix3::look_at_lh(&eye, &target, &up);
assert_eq!(iso * eye, Point3::origin());
assert_relative_eq!(iso * Vector3::x(), Vector3::z());

impl<T: SimdRealField> Isometry<T, Unit<Quaternion<T>>, 3_usize>[src]

pub fn lerp_slerp(&self, other: &Self, t: T) -> Self where
    T: RealField
[src]

Interpolates between two isometries using a linear interpolation for the translation part, and a spherical interpolation for the rotation part.

Panics if the angle between both rotations is 180 degrees (in which case the interpolation is not well-defined). Use .try_lerp_slerp instead to avoid the panic.

Examples:


let t1 = Translation3::new(1.0, 2.0, 3.0);
let t2 = Translation3::new(4.0, 8.0, 12.0);
let q1 = UnitQuaternion::from_euler_angles(std::f32::consts::FRAC_PI_4, 0.0, 0.0);
let q2 = UnitQuaternion::from_euler_angles(-std::f32::consts::PI, 0.0, 0.0);
let iso1 = Isometry3::from_parts(t1, q1);
let iso2 = Isometry3::from_parts(t2, q2);

let iso3 = iso1.lerp_slerp(&iso2, 1.0 / 3.0);

assert_eq!(iso3.translation.vector, Vector3::new(2.0, 4.0, 6.0));
assert_eq!(iso3.rotation.euler_angles(), (std::f32::consts::FRAC_PI_2, 0.0, 0.0));

pub fn try_lerp_slerp(&self, other: &Self, t: T, epsilon: T) -> Option<Self> where
    T: RealField
[src]

Attempts to interpolate between two isometries using a linear interpolation for the translation part, and a spherical interpolation for the rotation part.

Retuns None if the angle between both rotations is 180 degrees (in which case the interpolation is not well-defined).

Examples:


let t1 = Translation3::new(1.0, 2.0, 3.0);
let t2 = Translation3::new(4.0, 8.0, 12.0);
let q1 = UnitQuaternion::from_euler_angles(std::f32::consts::FRAC_PI_4, 0.0, 0.0);
let q2 = UnitQuaternion::from_euler_angles(-std::f32::consts::PI, 0.0, 0.0);
let iso1 = Isometry3::from_parts(t1, q1);
let iso2 = Isometry3::from_parts(t2, q2);

let iso3 = iso1.lerp_slerp(&iso2, 1.0 / 3.0);

assert_eq!(iso3.translation.vector, Vector3::new(2.0, 4.0, 6.0));
assert_eq!(iso3.rotation.euler_angles(), (std::f32::consts::FRAC_PI_2, 0.0, 0.0));

impl<T: SimdRealField> Isometry<T, Rotation<T, 3_usize>, 3_usize>[src]

pub fn lerp_slerp(&self, other: &Self, t: T) -> Self where
    T: RealField
[src]

Interpolates between two isometries using a linear interpolation for the translation part, and a spherical interpolation for the rotation part.

Panics if the angle between both rotations is 180 degrees (in which case the interpolation is not well-defined). Use .try_lerp_slerp instead to avoid the panic.

Examples:


let t1 = Translation3::new(1.0, 2.0, 3.0);
let t2 = Translation3::new(4.0, 8.0, 12.0);
let q1 = Rotation3::from_euler_angles(std::f32::consts::FRAC_PI_4, 0.0, 0.0);
let q2 = Rotation3::from_euler_angles(-std::f32::consts::PI, 0.0, 0.0);
let iso1 = IsometryMatrix3::from_parts(t1, q1);
let iso2 = IsometryMatrix3::from_parts(t2, q2);

let iso3 = iso1.lerp_slerp(&iso2, 1.0 / 3.0);

assert_eq!(iso3.translation.vector, Vector3::new(2.0, 4.0, 6.0));
assert_eq!(iso3.rotation.euler_angles(), (std::f32::consts::FRAC_PI_2, 0.0, 0.0));

pub fn try_lerp_slerp(&self, other: &Self, t: T, epsilon: T) -> Option<Self> where
    T: RealField
[src]

Attempts to interpolate between two isometries using a linear interpolation for the translation part, and a spherical interpolation for the rotation part.

Retuns None if the angle between both rotations is 180 degrees (in which case the interpolation is not well-defined).

Examples:


let t1 = Translation3::new(1.0, 2.0, 3.0);
let t2 = Translation3::new(4.0, 8.0, 12.0);
let q1 = Rotation3::from_euler_angles(std::f32::consts::FRAC_PI_4, 0.0, 0.0);
let q2 = Rotation3::from_euler_angles(-std::f32::consts::PI, 0.0, 0.0);
let iso1 = IsometryMatrix3::from_parts(t1, q1);
let iso2 = IsometryMatrix3::from_parts(t2, q2);

let iso3 = iso1.lerp_slerp(&iso2, 1.0 / 3.0);

assert_eq!(iso3.translation.vector, Vector3::new(2.0, 4.0, 6.0));
assert_eq!(iso3.rotation.euler_angles(), (std::f32::consts::FRAC_PI_2, 0.0, 0.0));

impl<T: SimdRealField> Isometry<T, Unit<Complex<T>>, 2_usize>[src]

pub fn lerp_slerp(&self, other: &Self, t: T) -> Self where
    T: RealField
[src]

Interpolates between two isometries using a linear interpolation for the translation part, and a spherical interpolation for the rotation part.

Panics if the angle between both rotations is 180 degrees (in which case the interpolation is not well-defined). Use .try_lerp_slerp instead to avoid the panic.

Examples:


let t1 = Translation2::new(1.0, 2.0);
let t2 = Translation2::new(4.0, 8.0);
let q1 = UnitComplex::new(std::f32::consts::FRAC_PI_4);
let q2 = UnitComplex::new(-std::f32::consts::PI);
let iso1 = Isometry2::from_parts(t1, q1);
let iso2 = Isometry2::from_parts(t2, q2);

let iso3 = iso1.lerp_slerp(&iso2, 1.0 / 3.0);

assert_eq!(iso3.translation.vector, Vector2::new(2.0, 4.0));
assert_relative_eq!(iso3.rotation.angle(), std::f32::consts::FRAC_PI_2);

impl<T: SimdRealField> Isometry<T, Rotation<T, 2_usize>, 2_usize>[src]

pub fn lerp_slerp(&self, other: &Self, t: T) -> Self where
    T: RealField
[src]

Interpolates between two isometries using a linear interpolation for the translation part, and a spherical interpolation for the rotation part.

Panics if the angle between both rotations is 180 degrees (in which case the interpolation is not well-defined). Use .try_lerp_slerp instead to avoid the panic.

Examples:


let t1 = Translation2::new(1.0, 2.0);
let t2 = Translation2::new(4.0, 8.0);
let q1 = Rotation2::new(std::f32::consts::FRAC_PI_4);
let q2 = Rotation2::new(-std::f32::consts::PI);
let iso1 = IsometryMatrix2::from_parts(t1, q1);
let iso2 = IsometryMatrix2::from_parts(t2, q2);

let iso3 = iso1.lerp_slerp(&iso2, 1.0 / 3.0);

assert_eq!(iso3.translation.vector, Vector2::new(2.0, 4.0));
assert_relative_eq!(iso3.rotation.angle(), std::f32::consts::FRAC_PI_2);

Trait Implementations

impl<T: RealField, R, const D: usize> AbsDiffEq<Isometry<T, R, D>> for Isometry<T, R, D> where
    R: AbstractRotation<T, D> + AbsDiffEq<Epsilon = T::Epsilon>,
    T::Epsilon: Copy
[src]

type Epsilon = T::Epsilon

Used for specifying relative comparisons.

fn default_epsilon() -> Self::Epsilon[src]

The default tolerance to use when testing values that are close together. Read more

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

A test for equality that uses the absolute difference to compute the approximate equality of two numbers. Read more

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

The inverse of AbsDiffEq::abs_diff_eq.

impl<T: Scalar, R: Clone, const D: usize> Clone for Isometry<T, R, D>[src]

fn clone(&self) -> Self[src]

Returns a copy of the value. Read more

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

Performs copy-assignment from source. Read more

impl<T: Debug + Scalar, R: Debug, const D: usize> Debug for Isometry<T, R, D>[src]

fn fmt(&self, f: &mut Formatter<'_>) -> Result[src]

Formats the value using the given formatter. Read more

impl<T: RealField + Display, R, const D: usize> Display for Isometry<T, R, D> where
    R: Display
[src]

fn fmt(&self, f: &mut Formatter<'_>) -> Result[src]

Formats the value using the given formatter. Read more

impl<'b, T: SimdRealField, R, const D: usize> Div<&'b Isometry<T, R, D>> for Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Isometry<T, R, D>

The resulting type after applying the / operator.

fn div(self, rhs: &'b Isometry<T, R, D>) -> Self::Output[src]

Performs the / operation. Read more

impl<'a, 'b, T: SimdRealField, R, const D: usize> Div<&'b Isometry<T, R, D>> for &'a Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Isometry<T, R, D>

The resulting type after applying the / operator.

fn div(self, rhs: &'b Isometry<T, R, D>) -> Self::Output[src]

Performs the / operation. Read more

impl<'b, T: SimdRealField, R, const D: usize> Div<&'b Isometry<T, R, D>> for Similarity<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Similarity<T, R, D>

The resulting type after applying the / operator.

fn div(self, rhs: &'b Isometry<T, R, D>) -> Self::Output[src]

Performs the / operation. Read more

impl<'a, 'b, T: SimdRealField, R, const D: usize> Div<&'b Isometry<T, R, D>> for &'a Similarity<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Similarity<T, R, D>

The resulting type after applying the / operator.

fn div(self, rhs: &'b Isometry<T, R, D>) -> Self::Output[src]

Performs the / operation. Read more

impl<'b, T: SimdRealField, const D: usize> Div<&'b Isometry<T, Rotation<T, D>, D>> for Rotation<T, D> where
    T::Element: SimdRealField
[src]

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

The resulting type after applying the / operator.

fn div(self, right: &'b Isometry<T, Rotation<T, D>, D>) -> Self::Output[src]

Performs the / operation. Read more

impl<'a, 'b, T: SimdRealField, const D: usize> Div<&'b Isometry<T, Rotation<T, D>, D>> for &'a Rotation<T, D> where
    T::Element: SimdRealField
[src]

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

The resulting type after applying the / operator.

fn div(self, right: &'b Isometry<T, Rotation<T, D>, D>) -> Self::Output[src]

Performs the / operation. Read more

impl<'a, 'b, T: SimdRealField> Div<&'b Isometry<T, Unit<Quaternion<T>>, 3_usize>> for &'a UnitDualQuaternion<T> where
    T::Element: SimdRealField
[src]

type Output = UnitDualQuaternion<T>

The resulting type after applying the / operator.

fn div(self, rhs: &'b Isometry3<T>) -> Self::Output[src]

Performs the / operation. Read more

impl<'b, T: SimdRealField> Div<&'b Isometry<T, Unit<Quaternion<T>>, 3_usize>> for UnitDualQuaternion<T> where
    T::Element: SimdRealField
[src]

type Output = UnitDualQuaternion<T>

The resulting type after applying the / operator.

fn div(self, rhs: &'b Isometry3<T>) -> Self::Output[src]

Performs the / operation. Read more

impl<'b, T: SimdRealField> Div<&'b Isometry<T, Unit<Quaternion<T>>, 3_usize>> for UnitQuaternion<T> where
    T::Element: SimdRealField
[src]

type Output = Isometry<T, UnitQuaternion<T>, 3>

The resulting type after applying the / operator.

fn div(self, right: &'b Isometry<T, UnitQuaternion<T>, 3>) -> Self::Output[src]

Performs the / operation. Read more

impl<'a, 'b, T: SimdRealField> Div<&'b Isometry<T, Unit<Quaternion<T>>, 3_usize>> for &'a UnitQuaternion<T> where
    T::Element: SimdRealField
[src]

type Output = Isometry<T, UnitQuaternion<T>, 3>

The resulting type after applying the / operator.

fn div(self, right: &'b Isometry<T, UnitQuaternion<T>, 3>) -> Self::Output[src]

Performs the / operation. Read more

impl<'b, T: SimdRealField, const D: usize> Div<&'b Rotation<T, D>> for Isometry<T, Rotation<T, D>, D> where
    T::Element: SimdRealField
[src]

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

The resulting type after applying the / operator.

fn div(self, rhs: &'b Rotation<T, D>) -> Self::Output[src]

Performs the / operation. Read more

impl<'a, 'b, T: SimdRealField, const D: usize> Div<&'b Rotation<T, D>> for &'a Isometry<T, Rotation<T, D>, D> where
    T::Element: SimdRealField
[src]

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

The resulting type after applying the / operator.

fn div(self, rhs: &'b Rotation<T, D>) -> Self::Output[src]

Performs the / operation. Read more

impl<'b, T: SimdRealField, R, const D: usize> Div<&'b Similarity<T, R, D>> for Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Similarity<T, R, D>

The resulting type after applying the / operator.

fn div(self, rhs: &'b Similarity<T, R, D>) -> Self::Output[src]

Performs the / operation. Read more

impl<'a, 'b, T: SimdRealField, R, const D: usize> Div<&'b Similarity<T, R, D>> for &'a Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Similarity<T, R, D>

The resulting type after applying the / operator.

fn div(self, rhs: &'b Similarity<T, R, D>) -> Self::Output[src]

Performs the / operation. Read more

impl<'b, T: SimdRealField> Div<&'b Unit<Complex<T>>> for Isometry<T, UnitComplex<T>, 2> where
    T::Element: SimdRealField
[src]

type Output = Isometry<T, UnitComplex<T>, 2>

The resulting type after applying the / operator.

fn div(self, rhs: &'b UnitComplex<T>) -> Self::Output[src]

Performs the / operation. Read more

impl<'a, 'b, T: SimdRealField> Div<&'b Unit<Complex<T>>> for &'a Isometry<T, UnitComplex<T>, 2> where
    T::Element: SimdRealField
[src]

type Output = Isometry<T, UnitComplex<T>, 2>

The resulting type after applying the / operator.

fn div(self, rhs: &'b UnitComplex<T>) -> Self::Output[src]

Performs the / operation. Read more

impl<'b, T: SimdRealField> Div<&'b Unit<Quaternion<T>>> for Isometry<T, UnitQuaternion<T>, 3> where
    T::Element: SimdRealField
[src]

type Output = Isometry<T, UnitQuaternion<T>, 3>

The resulting type after applying the / operator.

fn div(self, rhs: &'b UnitQuaternion<T>) -> Self::Output[src]

Performs the / operation. Read more

impl<'a, 'b, T: SimdRealField> Div<&'b Unit<Quaternion<T>>> for &'a Isometry<T, UnitQuaternion<T>, 3> where
    T::Element: SimdRealField
[src]

type Output = Isometry<T, UnitQuaternion<T>, 3>

The resulting type after applying the / operator.

fn div(self, rhs: &'b UnitQuaternion<T>) -> Self::Output[src]

Performs the / operation. Read more

impl<T: SimdRealField, R, const D: usize> Div<Isometry<T, R, D>> for Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Isometry<T, R, D>

The resulting type after applying the / operator.

fn div(self, rhs: Isometry<T, R, D>) -> Self::Output[src]

Performs the / operation. Read more

impl<'a, T: SimdRealField, R, const D: usize> Div<Isometry<T, R, D>> for &'a Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Isometry<T, R, D>

The resulting type after applying the / operator.

fn div(self, rhs: Isometry<T, R, D>) -> Self::Output[src]

Performs the / operation. Read more

impl<T: SimdRealField, R, const D: usize> Div<Isometry<T, R, D>> for Similarity<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Similarity<T, R, D>

The resulting type after applying the / operator.

fn div(self, rhs: Isometry<T, R, D>) -> Self::Output[src]

Performs the / operation. Read more

impl<'a, T: SimdRealField, R, const D: usize> Div<Isometry<T, R, D>> for &'a Similarity<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Similarity<T, R, D>

The resulting type after applying the / operator.

fn div(self, rhs: Isometry<T, R, D>) -> Self::Output[src]

Performs the / operation. Read more

impl<T: SimdRealField, const D: usize> Div<Isometry<T, Rotation<T, D>, D>> for Rotation<T, D> where
    T::Element: SimdRealField
[src]

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

The resulting type after applying the / operator.

fn div(self, right: Isometry<T, Rotation<T, D>, D>) -> Self::Output[src]

Performs the / operation. Read more

impl<'a, T: SimdRealField, const D: usize> Div<Isometry<T, Rotation<T, D>, D>> for &'a Rotation<T, D> where
    T::Element: SimdRealField
[src]

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

The resulting type after applying the / operator.

fn div(self, right: Isometry<T, Rotation<T, D>, D>) -> Self::Output[src]

Performs the / operation. Read more

impl<'a, T: SimdRealField> Div<Isometry<T, Unit<Quaternion<T>>, 3_usize>> for &'a UnitDualQuaternion<T> where
    T::Element: SimdRealField
[src]

type Output = UnitDualQuaternion<T>

The resulting type after applying the / operator.

fn div(self, rhs: Isometry3<T>) -> Self::Output[src]

Performs the / operation. Read more

impl<T: SimdRealField> Div<Isometry<T, Unit<Quaternion<T>>, 3_usize>> for UnitDualQuaternion<T> where
    T::Element: SimdRealField
[src]

type Output = UnitDualQuaternion<T>

The resulting type after applying the / operator.

fn div(self, rhs: Isometry3<T>) -> Self::Output[src]

Performs the / operation. Read more

impl<T: SimdRealField> Div<Isometry<T, Unit<Quaternion<T>>, 3_usize>> for UnitQuaternion<T> where
    T::Element: SimdRealField
[src]

type Output = Isometry<T, UnitQuaternion<T>, 3>

The resulting type after applying the / operator.

fn div(self, right: Isometry<T, UnitQuaternion<T>, 3>) -> Self::Output[src]

Performs the / operation. Read more

impl<'a, T: SimdRealField> Div<Isometry<T, Unit<Quaternion<T>>, 3_usize>> for &'a UnitQuaternion<T> where
    T::Element: SimdRealField
[src]

type Output = Isometry<T, UnitQuaternion<T>, 3>

The resulting type after applying the / operator.

fn div(self, right: Isometry<T, UnitQuaternion<T>, 3>) -> Self::Output[src]

Performs the / operation. Read more

impl<T: SimdRealField, const D: usize> Div<Rotation<T, D>> for Isometry<T, Rotation<T, D>, D> where
    T::Element: SimdRealField
[src]

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

The resulting type after applying the / operator.

fn div(self, rhs: Rotation<T, D>) -> Self::Output[src]

Performs the / operation. Read more

impl<'a, T: SimdRealField, const D: usize> Div<Rotation<T, D>> for &'a Isometry<T, Rotation<T, D>, D> where
    T::Element: SimdRealField
[src]

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

The resulting type after applying the / operator.

fn div(self, rhs: Rotation<T, D>) -> Self::Output[src]

Performs the / operation. Read more

impl<T: SimdRealField, R, const D: usize> Div<Similarity<T, R, D>> for Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Similarity<T, R, D>

The resulting type after applying the / operator.

fn div(self, rhs: Similarity<T, R, D>) -> Self::Output[src]

Performs the / operation. Read more

impl<'a, T: SimdRealField, R, const D: usize> Div<Similarity<T, R, D>> for &'a Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Similarity<T, R, D>

The resulting type after applying the / operator.

fn div(self, rhs: Similarity<T, R, D>) -> Self::Output[src]

Performs the / operation. Read more

impl<T: SimdRealField> Div<Unit<Complex<T>>> for Isometry<T, UnitComplex<T>, 2> where
    T::Element: SimdRealField
[src]

type Output = Isometry<T, UnitComplex<T>, 2>

The resulting type after applying the / operator.

fn div(self, rhs: UnitComplex<T>) -> Self::Output[src]

Performs the / operation. Read more

impl<'a, T: SimdRealField> Div<Unit<Complex<T>>> for &'a Isometry<T, UnitComplex<T>, 2> where
    T::Element: SimdRealField
[src]

type Output = Isometry<T, UnitComplex<T>, 2>

The resulting type after applying the / operator.

fn div(self, rhs: UnitComplex<T>) -> Self::Output[src]

Performs the / operation. Read more

impl<T: SimdRealField> Div<Unit<Quaternion<T>>> for Isometry<T, UnitQuaternion<T>, 3> where
    T::Element: SimdRealField
[src]

type Output = Isometry<T, UnitQuaternion<T>, 3>

The resulting type after applying the / operator.

fn div(self, rhs: UnitQuaternion<T>) -> Self::Output[src]

Performs the / operation. Read more

impl<'a, T: SimdRealField> Div<Unit<Quaternion<T>>> for &'a Isometry<T, UnitQuaternion<T>, 3> where
    T::Element: SimdRealField
[src]

type Output = Isometry<T, UnitQuaternion<T>, 3>

The resulting type after applying the / operator.

fn div(self, rhs: UnitQuaternion<T>) -> Self::Output[src]

Performs the / operation. Read more

impl<'b, T: SimdRealField, R, const D: usize> DivAssign<&'b Isometry<T, R, D>> for Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

fn div_assign(&mut self, rhs: &'b Isometry<T, R, D>)[src]

Performs the /= operation. Read more

impl<'b, T: SimdRealField, R, const D: usize> DivAssign<&'b Isometry<T, R, D>> for Similarity<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

fn div_assign(&mut self, rhs: &'b Isometry<T, R, D>)[src]

Performs the /= operation. Read more

impl<'b, T: SimdRealField> DivAssign<&'b Isometry<T, Unit<Quaternion<T>>, 3_usize>> for UnitDualQuaternion<T> where
    T::Element: SimdRealField
[src]

fn div_assign(&mut self, rhs: &'b Isometry3<T>)[src]

Performs the /= operation. Read more

impl<'b, T, const D: usize> DivAssign<&'b Rotation<T, D>> for Isometry<T, Rotation<T, D>, D> where
    T: Scalar + Zero + One + ClosedAdd + ClosedMul + SimdRealField,
    T::Element: SimdRealField
[src]

fn div_assign(&mut self, rhs: &'b Rotation<T, D>)[src]

Performs the /= operation. Read more

impl<'b, T> DivAssign<&'b Unit<Complex<T>>> for Isometry<T, UnitComplex<T>, 2> where
    T: Scalar + Zero + One + ClosedAdd + ClosedMul + SimdRealField,
    T::Element: SimdRealField
[src]

fn div_assign(&mut self, rhs: &'b UnitComplex<T>)[src]

Performs the /= operation. Read more

impl<'b, T> DivAssign<&'b Unit<Quaternion<T>>> for Isometry<T, UnitQuaternion<T>, 3> where
    T: Scalar + Zero + One + ClosedAdd + ClosedMul + SimdRealField,
    T::Element: SimdRealField
[src]

fn div_assign(&mut self, rhs: &'b UnitQuaternion<T>)[src]

Performs the /= operation. Read more

impl<T: SimdRealField, R, const D: usize> DivAssign<Isometry<T, R, D>> for Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

fn div_assign(&mut self, rhs: Isometry<T, R, D>)[src]

Performs the /= operation. Read more

impl<T: SimdRealField, R, const D: usize> DivAssign<Isometry<T, R, D>> for Similarity<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

fn div_assign(&mut self, rhs: Isometry<T, R, D>)[src]

Performs the /= operation. Read more

impl<T: SimdRealField> DivAssign<Isometry<T, Unit<Quaternion<T>>, 3_usize>> for UnitDualQuaternion<T> where
    T::Element: SimdRealField
[src]

fn div_assign(&mut self, rhs: Isometry3<T>)[src]

Performs the /= operation. Read more

impl<T, const D: usize> DivAssign<Rotation<T, D>> for Isometry<T, Rotation<T, D>, D> where
    T: Scalar + Zero + One + ClosedAdd + ClosedMul + SimdRealField,
    T::Element: SimdRealField
[src]

fn div_assign(&mut self, rhs: Rotation<T, D>)[src]

Performs the /= operation. Read more

impl<T> DivAssign<Unit<Complex<T>>> for Isometry<T, UnitComplex<T>, 2> where
    T: Scalar + Zero + One + ClosedAdd + ClosedMul + SimdRealField,
    T::Element: SimdRealField
[src]

fn div_assign(&mut self, rhs: UnitComplex<T>)[src]

Performs the /= operation. Read more

impl<T> DivAssign<Unit<Quaternion<T>>> for Isometry<T, UnitQuaternion<T>, 3> where
    T: Scalar + Zero + One + ClosedAdd + ClosedMul + SimdRealField,
    T::Element: SimdRealField
[src]

fn div_assign(&mut self, rhs: UnitQuaternion<T>)[src]

Performs the /= operation. Read more

impl<T: Scalar + PrimitiveSimdValue, R, const D: usize> From<[Isometry<<T as SimdValue>::Element, <R as SimdValue>::Element, D>; 16]> for Isometry<T, R, D> where
    T: From<[<T as SimdValue>::Element; 16]>,
    R: SimdValue + AbstractRotation<T, D> + From<[<R as SimdValue>::Element; 16]>,
    R::Element: AbstractRotation<T::Element, D>,
    T::Element: Scalar + Copy,
    R::Element: Scalar + Copy
[src]

fn from(arr: [Isometry<T::Element, R::Element, D>; 16]) -> Self[src]

Performs the conversion.

impl<T: Scalar + PrimitiveSimdValue, R, const D: usize> From<[Isometry<<T as SimdValue>::Element, <R as SimdValue>::Element, D>; 2]> for Isometry<T, R, D> where
    T: From<[<T as SimdValue>::Element; 2]>,
    R: SimdValue + AbstractRotation<T, D> + From<[<R as SimdValue>::Element; 2]>,
    R::Element: AbstractRotation<T::Element, D>,
    T::Element: Scalar + Copy,
    R::Element: Scalar + Copy
[src]

fn from(arr: [Isometry<T::Element, R::Element, D>; 2]) -> Self[src]

Performs the conversion.

impl<T: Scalar + PrimitiveSimdValue, R, const D: usize> From<[Isometry<<T as SimdValue>::Element, <R as SimdValue>::Element, D>; 4]> for Isometry<T, R, D> where
    T: From<[<T as SimdValue>::Element; 4]>,
    R: SimdValue + AbstractRotation<T, D> + From<[<R as SimdValue>::Element; 4]>,
    R::Element: AbstractRotation<T::Element, D>,
    T::Element: Scalar + Copy,
    R::Element: Scalar + Copy
[src]

fn from(arr: [Isometry<T::Element, R::Element, D>; 4]) -> Self[src]

Performs the conversion.

impl<T: Scalar + PrimitiveSimdValue, R, const D: usize> From<[Isometry<<T as SimdValue>::Element, <R as SimdValue>::Element, D>; 8]> for Isometry<T, R, D> where
    T: From<[<T as SimdValue>::Element; 8]>,
    R: SimdValue + AbstractRotation<T, D> + From<[<R as SimdValue>::Element; 8]>,
    R::Element: AbstractRotation<T::Element, D>,
    T::Element: Scalar + Copy,
    R::Element: Scalar + Copy
[src]

fn from(arr: [Isometry<T::Element, R::Element, D>; 8]) -> Self[src]

Performs the conversion.

impl<T: SimdRealField, R, const D: usize> From<[T; D]> for Isometry<T, R, D> where
    R: AbstractRotation<T, D>, 
[src]

fn from(coords: [T; D]) -> Self[src]

Performs the conversion.

impl<T: SimdRealField, R, const D: usize> From<Isometry<T, R, D>> for OMatrix<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>> where
    Const<D>: DimNameAdd<U1>,
    R: SubsetOf<OMatrix<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>>,
    DefaultAllocator: Allocator<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>, 
[src]

fn from(iso: Isometry<T, R, D>) -> Self[src]

Performs the conversion.

impl<T: SimdRealField> From<Isometry<T, Unit<Quaternion<T>>, 3_usize>> for UnitDualQuaternion<T> where
    T::Element: SimdRealField
[src]

fn from(iso: Isometry3<T>) -> Self[src]

Performs the conversion.

impl<T: SimdRealField, R, const D: usize> From<Matrix<T, Const<D>, Const<1_usize>, ArrayStorage<T, D, 1_usize>>> for Isometry<T, R, D> where
    R: AbstractRotation<T, D>, 
[src]

fn from(coords: SVector<T, D>) -> Self[src]

Performs the conversion.

impl<T: SimdRealField, R, const D: usize> From<Point<T, D>> for Isometry<T, R, D> where
    R: AbstractRotation<T, D>, 
[src]

fn from(coords: Point<T, D>) -> Self[src]

Performs the conversion.

impl<T: SimdRealField, R: AbstractRotation<T, D>, const D: usize> From<Translation<T, D>> for Isometry<T, R, D>[src]

fn from(tra: Translation<T, D>) -> Self[src]

Performs the conversion.

impl<T: Scalar + Hash, R: Hash, const D: usize> Hash for Isometry<T, R, D> where
    Owned<T, Const<D>>: Hash
[src]

fn hash<H: Hasher>(&self, state: &mut H)[src]

Feeds this value into the given Hasher. Read more

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<'b, T: SimdRealField, R, const D: usize> Mul<&'b Isometry<T, R, D>> for Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Isometry<T, R, D>

The resulting type after applying the * operator.

fn mul(self, rhs: &'b Isometry<T, R, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<'a, 'b, T: SimdRealField, R, const D: usize> Mul<&'b Isometry<T, R, D>> for &'a Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Isometry<T, R, D>

The resulting type after applying the * operator.

fn mul(self, rhs: &'b Isometry<T, R, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<'b, T: SimdRealField, R, const D: usize> Mul<&'b Isometry<T, R, D>> for Translation<T, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Isometry<T, R, D>

The resulting type after applying the * operator.

fn mul(self, right: &'b Isometry<T, R, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<'a, 'b, T: SimdRealField, R, const D: usize> Mul<&'b Isometry<T, R, D>> for &'a Translation<T, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Isometry<T, R, D>

The resulting type after applying the * operator.

fn mul(self, right: &'b Isometry<T, R, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<'b, T: SimdRealField, R, const D: usize> Mul<&'b Isometry<T, R, D>> for Similarity<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Similarity<T, R, D>

The resulting type after applying the * operator.

fn mul(self, rhs: &'b Isometry<T, R, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<'a, 'b, T: SimdRealField, R, const D: usize> Mul<&'b Isometry<T, R, D>> for &'a Similarity<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Similarity<T, R, D>

The resulting type after applying the * operator.

fn mul(self, rhs: &'b Isometry<T, R, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<'b, T, C, R, const D: usize> Mul<&'b Isometry<T, R, D>> for Transform<T, C, D> where
    T: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
    Const<D>: DimNameAdd<U1>,
    C: TCategoryMul<TAffine>,
    R: SubsetOf<OMatrix<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>>,
    DefaultAllocator: Allocator<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>, 
[src]

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

The resulting type after applying the * operator.

fn mul(self, rhs: &'b Isometry<T, R, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<'a, 'b, T, C, R, const D: usize> Mul<&'b Isometry<T, R, D>> for &'a Transform<T, C, D> where
    T: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
    Const<D>: DimNameAdd<U1>,
    C: TCategoryMul<TAffine>,
    R: SubsetOf<OMatrix<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>>,
    DefaultAllocator: Allocator<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>, 
[src]

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

The resulting type after applying the * operator.

fn mul(self, rhs: &'b Isometry<T, R, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<'b, T: SimdRealField, const D: usize> Mul<&'b Isometry<T, Rotation<T, D>, D>> for Rotation<T, D> where
    T::Element: SimdRealField
[src]

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

The resulting type after applying the * operator.

fn mul(self, right: &'b Isometry<T, Rotation<T, D>, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<'a, 'b, T: SimdRealField, const D: usize> Mul<&'b Isometry<T, Rotation<T, D>, D>> for &'a Rotation<T, D> where
    T::Element: SimdRealField
[src]

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

The resulting type after applying the * operator.

fn mul(self, right: &'b Isometry<T, Rotation<T, D>, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<'b, T: SimdRealField> Mul<&'b Isometry<T, Unit<Complex<T>>, 2_usize>> for UnitComplex<T> where
    T::Element: SimdRealField
[src]

type Output = Isometry<T, UnitComplex<T>, 2>

The resulting type after applying the * operator.

fn mul(self, rhs: &'b Isometry<T, UnitComplex<T>, 2>) -> Self::Output[src]

Performs the * operation. Read more

impl<'a, 'b, T: SimdRealField> Mul<&'b Isometry<T, Unit<Complex<T>>, 2_usize>> for &'a UnitComplex<T> where
    T::Element: SimdRealField
[src]

type Output = Isometry<T, UnitComplex<T>, 2>

The resulting type after applying the * operator.

fn mul(self, rhs: &'b Isometry<T, UnitComplex<T>, 2>) -> Self::Output[src]

Performs the * operation. Read more

impl<'a, 'b, T: SimdRealField> Mul<&'b Isometry<T, Unit<Quaternion<T>>, 3_usize>> for &'a UnitDualQuaternion<T> where
    T::Element: SimdRealField
[src]

type Output = UnitDualQuaternion<T>

The resulting type after applying the * operator.

fn mul(self, rhs: &'b Isometry3<T>) -> Self::Output[src]

Performs the * operation. Read more

impl<'b, T: SimdRealField> Mul<&'b Isometry<T, Unit<Quaternion<T>>, 3_usize>> for UnitDualQuaternion<T> where
    T::Element: SimdRealField
[src]

type Output = UnitDualQuaternion<T>

The resulting type after applying the * operator.

fn mul(self, rhs: &'b Isometry3<T>) -> Self::Output[src]

Performs the * operation. Read more

impl<'b, T: SimdRealField> Mul<&'b Isometry<T, Unit<Quaternion<T>>, 3_usize>> for UnitQuaternion<T> where
    T::Element: SimdRealField
[src]

type Output = Isometry<T, UnitQuaternion<T>, 3>

The resulting type after applying the * operator.

fn mul(self, right: &'b Isometry<T, UnitQuaternion<T>, 3>) -> Self::Output[src]

Performs the * operation. Read more

impl<'a, 'b, T: SimdRealField> Mul<&'b Isometry<T, Unit<Quaternion<T>>, 3_usize>> for &'a UnitQuaternion<T> where
    T::Element: SimdRealField
[src]

type Output = Isometry<T, UnitQuaternion<T>, 3>

The resulting type after applying the * operator.

fn mul(self, right: &'b Isometry<T, UnitQuaternion<T>, 3>) -> Self::Output[src]

Performs the * operation. Read more

impl<'b, T: SimdRealField, R, const D: usize> Mul<&'b Matrix<T, Const<D>, Const<1_usize>, ArrayStorage<T, D, 1_usize>>> for Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = SVector<T, D>

The resulting type after applying the * operator.

fn mul(self, right: &'b SVector<T, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<'a, 'b, T: SimdRealField, R, const D: usize> Mul<&'b Matrix<T, Const<D>, Const<1_usize>, ArrayStorage<T, D, 1_usize>>> for &'a Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = SVector<T, D>

The resulting type after applying the * operator.

fn mul(self, right: &'b SVector<T, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<'b, T: SimdRealField, R, const D: usize> Mul<&'b Point<T, D>> for Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Point<T, D>

The resulting type after applying the * operator.

fn mul(self, right: &'b Point<T, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<'a, 'b, T: SimdRealField, R, const D: usize> Mul<&'b Point<T, D>> for &'a Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Point<T, D>

The resulting type after applying the * operator.

fn mul(self, right: &'b Point<T, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<'b, T: SimdRealField, const D: usize> Mul<&'b Rotation<T, D>> for Isometry<T, Rotation<T, D>, D> where
    T::Element: SimdRealField
[src]

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

The resulting type after applying the * operator.

fn mul(self, rhs: &'b Rotation<T, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<'a, 'b, T: SimdRealField, const D: usize> Mul<&'b Rotation<T, D>> for &'a Isometry<T, Rotation<T, D>, D> where
    T::Element: SimdRealField
[src]

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

The resulting type after applying the * operator.

fn mul(self, rhs: &'b Rotation<T, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<'b, T: SimdRealField, R, const D: usize> Mul<&'b Similarity<T, R, D>> for Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Similarity<T, R, D>

The resulting type after applying the * operator.

fn mul(self, rhs: &'b Similarity<T, R, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<'a, 'b, T: SimdRealField, R, const D: usize> Mul<&'b Similarity<T, R, D>> for &'a Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Similarity<T, R, D>

The resulting type after applying the * operator.

fn mul(self, rhs: &'b Similarity<T, R, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<'b, T, C, R, const D: usize> Mul<&'b Transform<T, C, D>> for Isometry<T, R, D> where
    T: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
    Const<D>: DimNameAdd<U1>,
    C: TCategoryMul<TAffine>,
    R: SubsetOf<OMatrix<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>>,
    DefaultAllocator: Allocator<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>, 
[src]

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

The resulting type after applying the * operator.

fn mul(self, rhs: &'b Transform<T, C, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<'a, 'b, T, C, R, const D: usize> Mul<&'b Transform<T, C, D>> for &'a Isometry<T, R, D> where
    T: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
    Const<D>: DimNameAdd<U1>,
    C: TCategoryMul<TAffine>,
    R: SubsetOf<OMatrix<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>>,
    DefaultAllocator: Allocator<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>, 
[src]

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

The resulting type after applying the * operator.

fn mul(self, rhs: &'b Transform<T, C, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<'b, T: SimdRealField, R, const D: usize> Mul<&'b Translation<T, D>> for Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Isometry<T, R, D>

The resulting type after applying the * operator.

fn mul(self, right: &'b Translation<T, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<'a, 'b, T: SimdRealField, R, const D: usize> Mul<&'b Translation<T, D>> for &'a Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Isometry<T, R, D>

The resulting type after applying the * operator.

fn mul(self, right: &'b Translation<T, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<'b, T: SimdRealField> Mul<&'b Unit<Complex<T>>> for Isometry<T, UnitComplex<T>, 2> where
    T::Element: SimdRealField
[src]

type Output = Isometry<T, UnitComplex<T>, 2>

The resulting type after applying the * operator.

fn mul(self, rhs: &'b UnitComplex<T>) -> Self::Output[src]

Performs the * operation. Read more

impl<'a, 'b, T: SimdRealField> Mul<&'b Unit<Complex<T>>> for &'a Isometry<T, UnitComplex<T>, 2> where
    T::Element: SimdRealField
[src]

type Output = Isometry<T, UnitComplex<T>, 2>

The resulting type after applying the * operator.

fn mul(self, rhs: &'b UnitComplex<T>) -> Self::Output[src]

Performs the * operation. Read more

impl<'b, T: SimdRealField, R, const D: usize> Mul<&'b Unit<Matrix<T, Const<D>, Const<1_usize>, ArrayStorage<T, D, 1_usize>>>> for Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Unit<SVector<T, D>>

The resulting type after applying the * operator.

fn mul(self, right: &'b Unit<SVector<T, D>>) -> Self::Output[src]

Performs the * operation. Read more

impl<'a, 'b, T: SimdRealField, R, const D: usize> Mul<&'b Unit<Matrix<T, Const<D>, Const<1_usize>, ArrayStorage<T, D, 1_usize>>>> for &'a Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Unit<SVector<T, D>>

The resulting type after applying the * operator.

fn mul(self, right: &'b Unit<SVector<T, D>>) -> Self::Output[src]

Performs the * operation. Read more

impl<'b, T: SimdRealField> Mul<&'b Unit<Quaternion<T>>> for Isometry<T, UnitQuaternion<T>, 3> where
    T::Element: SimdRealField
[src]

type Output = Isometry<T, UnitQuaternion<T>, 3>

The resulting type after applying the * operator.

fn mul(self, rhs: &'b UnitQuaternion<T>) -> Self::Output[src]

Performs the * operation. Read more

impl<'a, 'b, T: SimdRealField> Mul<&'b Unit<Quaternion<T>>> for &'a Isometry<T, UnitQuaternion<T>, 3> where
    T::Element: SimdRealField
[src]

type Output = Isometry<T, UnitQuaternion<T>, 3>

The resulting type after applying the * operator.

fn mul(self, rhs: &'b UnitQuaternion<T>) -> Self::Output[src]

Performs the * operation. Read more

impl<T: SimdRealField, R, const D: usize> Mul<Isometry<T, R, D>> for Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Isometry<T, R, D>

The resulting type after applying the * operator.

fn mul(self, rhs: Isometry<T, R, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<'a, T: SimdRealField, R, const D: usize> Mul<Isometry<T, R, D>> for &'a Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Isometry<T, R, D>

The resulting type after applying the * operator.

fn mul(self, rhs: Isometry<T, R, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<T: SimdRealField, R, const D: usize> Mul<Isometry<T, R, D>> for Translation<T, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Isometry<T, R, D>

The resulting type after applying the * operator.

fn mul(self, right: Isometry<T, R, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<'a, T: SimdRealField, R, const D: usize> Mul<Isometry<T, R, D>> for &'a Translation<T, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Isometry<T, R, D>

The resulting type after applying the * operator.

fn mul(self, right: Isometry<T, R, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<T: SimdRealField, R, const D: usize> Mul<Isometry<T, R, D>> for Similarity<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Similarity<T, R, D>

The resulting type after applying the * operator.

fn mul(self, rhs: Isometry<T, R, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<'a, T: SimdRealField, R, const D: usize> Mul<Isometry<T, R, D>> for &'a Similarity<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Similarity<T, R, D>

The resulting type after applying the * operator.

fn mul(self, rhs: Isometry<T, R, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<T, C, R, const D: usize> Mul<Isometry<T, R, D>> for Transform<T, C, D> where
    T: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
    Const<D>: DimNameAdd<U1>,
    C: TCategoryMul<TAffine>,
    R: SubsetOf<OMatrix<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>>,
    DefaultAllocator: Allocator<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>, 
[src]

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

The resulting type after applying the * operator.

fn mul(self, rhs: Isometry<T, R, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<'a, T, C, R, const D: usize> Mul<Isometry<T, R, D>> for &'a Transform<T, C, D> where
    T: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
    Const<D>: DimNameAdd<U1>,
    C: TCategoryMul<TAffine>,
    R: SubsetOf<OMatrix<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>>,
    DefaultAllocator: Allocator<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>, 
[src]

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

The resulting type after applying the * operator.

fn mul(self, rhs: Isometry<T, R, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<T: SimdRealField, const D: usize> Mul<Isometry<T, Rotation<T, D>, D>> for Rotation<T, D> where
    T::Element: SimdRealField
[src]

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

The resulting type after applying the * operator.

fn mul(self, right: Isometry<T, Rotation<T, D>, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<'a, T: SimdRealField, const D: usize> Mul<Isometry<T, Rotation<T, D>, D>> for &'a Rotation<T, D> where
    T::Element: SimdRealField
[src]

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

The resulting type after applying the * operator.

fn mul(self, right: Isometry<T, Rotation<T, D>, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<T: SimdRealField> Mul<Isometry<T, Unit<Complex<T>>, 2_usize>> for UnitComplex<T> where
    T::Element: SimdRealField
[src]

type Output = Isometry<T, UnitComplex<T>, 2>

The resulting type after applying the * operator.

fn mul(self, rhs: Isometry<T, UnitComplex<T>, 2>) -> Self::Output[src]

Performs the * operation. Read more

impl<'a, T: SimdRealField> Mul<Isometry<T, Unit<Complex<T>>, 2_usize>> for &'a UnitComplex<T> where
    T::Element: SimdRealField
[src]

type Output = Isometry<T, UnitComplex<T>, 2>

The resulting type after applying the * operator.

fn mul(self, rhs: Isometry<T, UnitComplex<T>, 2>) -> Self::Output[src]

Performs the * operation. Read more

impl<'a, T: SimdRealField> Mul<Isometry<T, Unit<Quaternion<T>>, 3_usize>> for &'a UnitDualQuaternion<T> where
    T::Element: SimdRealField
[src]

type Output = UnitDualQuaternion<T>

The resulting type after applying the * operator.

fn mul(self, rhs: Isometry3<T>) -> Self::Output[src]

Performs the * operation. Read more

impl<T: SimdRealField> Mul<Isometry<T, Unit<Quaternion<T>>, 3_usize>> for UnitDualQuaternion<T> where
    T::Element: SimdRealField
[src]

type Output = UnitDualQuaternion<T>

The resulting type after applying the * operator.

fn mul(self, rhs: Isometry3<T>) -> Self::Output[src]

Performs the * operation. Read more

impl<T: SimdRealField> Mul<Isometry<T, Unit<Quaternion<T>>, 3_usize>> for UnitQuaternion<T> where
    T::Element: SimdRealField
[src]

type Output = Isometry<T, UnitQuaternion<T>, 3>

The resulting type after applying the * operator.

fn mul(self, right: Isometry<T, UnitQuaternion<T>, 3>) -> Self::Output[src]

Performs the * operation. Read more

impl<'a, T: SimdRealField> Mul<Isometry<T, Unit<Quaternion<T>>, 3_usize>> for &'a UnitQuaternion<T> where
    T::Element: SimdRealField
[src]

type Output = Isometry<T, UnitQuaternion<T>, 3>

The resulting type after applying the * operator.

fn mul(self, right: Isometry<T, UnitQuaternion<T>, 3>) -> Self::Output[src]

Performs the * operation. Read more

impl<T: SimdRealField, R, const D: usize> Mul<Matrix<T, Const<D>, Const<1_usize>, ArrayStorage<T, D, 1_usize>>> for Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = SVector<T, D>

The resulting type after applying the * operator.

fn mul(self, right: SVector<T, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<'a, T: SimdRealField, R, const D: usize> Mul<Matrix<T, Const<D>, Const<1_usize>, ArrayStorage<T, D, 1_usize>>> for &'a Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = SVector<T, D>

The resulting type after applying the * operator.

fn mul(self, right: SVector<T, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<T: SimdRealField, R, const D: usize> Mul<Point<T, D>> for Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Point<T, D>

The resulting type after applying the * operator.

fn mul(self, right: Point<T, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<'a, T: SimdRealField, R, const D: usize> Mul<Point<T, D>> for &'a Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Point<T, D>

The resulting type after applying the * operator.

fn mul(self, right: Point<T, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<T: SimdRealField, const D: usize> Mul<Rotation<T, D>> for Isometry<T, Rotation<T, D>, D> where
    T::Element: SimdRealField
[src]

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

The resulting type after applying the * operator.

fn mul(self, rhs: Rotation<T, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<'a, T: SimdRealField, const D: usize> Mul<Rotation<T, D>> for &'a Isometry<T, Rotation<T, D>, D> where
    T::Element: SimdRealField
[src]

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

The resulting type after applying the * operator.

fn mul(self, rhs: Rotation<T, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<T: SimdRealField, R, const D: usize> Mul<Similarity<T, R, D>> for Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Similarity<T, R, D>

The resulting type after applying the * operator.

fn mul(self, rhs: Similarity<T, R, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<'a, T: SimdRealField, R, const D: usize> Mul<Similarity<T, R, D>> for &'a Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Similarity<T, R, D>

The resulting type after applying the * operator.

fn mul(self, rhs: Similarity<T, R, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<T, C, R, const D: usize> Mul<Transform<T, C, D>> for Isometry<T, R, D> where
    T: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
    Const<D>: DimNameAdd<U1>,
    C: TCategoryMul<TAffine>,
    R: SubsetOf<OMatrix<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>>,
    DefaultAllocator: Allocator<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>, 
[src]

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

The resulting type after applying the * operator.

fn mul(self, rhs: Transform<T, C, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<'a, T, C, R, const D: usize> Mul<Transform<T, C, D>> for &'a Isometry<T, R, D> where
    T: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
    Const<D>: DimNameAdd<U1>,
    C: TCategoryMul<TAffine>,
    R: SubsetOf<OMatrix<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>>,
    DefaultAllocator: Allocator<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>, 
[src]

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

The resulting type after applying the * operator.

fn mul(self, rhs: Transform<T, C, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<T: SimdRealField, R, const D: usize> Mul<Translation<T, D>> for Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Isometry<T, R, D>

The resulting type after applying the * operator.

fn mul(self, right: Translation<T, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<'a, T: SimdRealField, R, const D: usize> Mul<Translation<T, D>> for &'a Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Isometry<T, R, D>

The resulting type after applying the * operator.

fn mul(self, right: Translation<T, D>) -> Self::Output[src]

Performs the * operation. Read more

impl<T: SimdRealField> Mul<Unit<Complex<T>>> for Isometry<T, UnitComplex<T>, 2> where
    T::Element: SimdRealField
[src]

type Output = Isometry<T, UnitComplex<T>, 2>

The resulting type after applying the * operator.

fn mul(self, rhs: UnitComplex<T>) -> Self::Output[src]

Performs the * operation. Read more

impl<'a, T: SimdRealField> Mul<Unit<Complex<T>>> for &'a Isometry<T, UnitComplex<T>, 2> where
    T::Element: SimdRealField
[src]

type Output = Isometry<T, UnitComplex<T>, 2>

The resulting type after applying the * operator.

fn mul(self, rhs: UnitComplex<T>) -> Self::Output[src]

Performs the * operation. Read more

impl<T: SimdRealField, R, const D: usize> Mul<Unit<Matrix<T, Const<D>, Const<1_usize>, ArrayStorage<T, D, 1_usize>>>> for Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Unit<SVector<T, D>>

The resulting type after applying the * operator.

fn mul(self, right: Unit<SVector<T, D>>) -> Self::Output[src]

Performs the * operation. Read more

impl<'a, T: SimdRealField, R, const D: usize> Mul<Unit<Matrix<T, Const<D>, Const<1_usize>, ArrayStorage<T, D, 1_usize>>>> for &'a Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

type Output = Unit<SVector<T, D>>

The resulting type after applying the * operator.

fn mul(self, right: Unit<SVector<T, D>>) -> Self::Output[src]

Performs the * operation. Read more

impl<T: SimdRealField> Mul<Unit<Quaternion<T>>> for Isometry<T, UnitQuaternion<T>, 3> where
    T::Element: SimdRealField
[src]

type Output = Isometry<T, UnitQuaternion<T>, 3>

The resulting type after applying the * operator.

fn mul(self, rhs: UnitQuaternion<T>) -> Self::Output[src]

Performs the * operation. Read more

impl<'a, T: SimdRealField> Mul<Unit<Quaternion<T>>> for &'a Isometry<T, UnitQuaternion<T>, 3> where
    T::Element: SimdRealField
[src]

type Output = Isometry<T, UnitQuaternion<T>, 3>

The resulting type after applying the * operator.

fn mul(self, rhs: UnitQuaternion<T>) -> Self::Output[src]

Performs the * operation. Read more

impl<'b, T: SimdRealField, R, const D: usize> MulAssign<&'b Isometry<T, R, D>> for Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

fn mul_assign(&mut self, rhs: &'b Isometry<T, R, D>)[src]

Performs the *= operation. Read more

impl<'b, T: SimdRealField, R, const D: usize> MulAssign<&'b Isometry<T, R, D>> for Similarity<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

fn mul_assign(&mut self, rhs: &'b Isometry<T, R, D>)[src]

Performs the *= operation. Read more

impl<'b, T, C, R, const D: usize> MulAssign<&'b Isometry<T, R, D>> for Transform<T, C, D> where
    T: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
    Const<D>: DimNameAdd<U1>,
    C: TCategory,
    R: SubsetOf<OMatrix<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>>,
    DefaultAllocator: Allocator<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>, 
[src]

fn mul_assign(&mut self, rhs: &'b Isometry<T, R, D>)[src]

Performs the *= operation. Read more

impl<'b, T: SimdRealField> MulAssign<&'b Isometry<T, Unit<Quaternion<T>>, 3_usize>> for UnitDualQuaternion<T> where
    T::Element: SimdRealField
[src]

fn mul_assign(&mut self, rhs: &'b Isometry3<T>)[src]

Performs the *= operation. Read more

impl<'b, T, const D: usize> MulAssign<&'b Rotation<T, D>> for Isometry<T, Rotation<T, D>, D> where
    T: Scalar + Zero + One + ClosedAdd + ClosedMul + SimdRealField,
    T::Element: SimdRealField
[src]

fn mul_assign(&mut self, rhs: &'b Rotation<T, D>)[src]

Performs the *= operation. Read more

impl<'b, T: SimdRealField, R, const D: usize> MulAssign<&'b Translation<T, D>> for Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

fn mul_assign(&mut self, rhs: &'b Translation<T, D>)[src]

Performs the *= operation. Read more

impl<'b, T> MulAssign<&'b Unit<Complex<T>>> for Isometry<T, UnitComplex<T>, 2> where
    T: Scalar + Zero + One + ClosedAdd + ClosedMul + SimdRealField,
    T::Element: SimdRealField
[src]

fn mul_assign(&mut self, rhs: &'b UnitComplex<T>)[src]

Performs the *= operation. Read more

impl<'b, T> MulAssign<&'b Unit<Quaternion<T>>> for Isometry<T, UnitQuaternion<T>, 3> where
    T: Scalar + Zero + One + ClosedAdd + ClosedMul + SimdRealField,
    T::Element: SimdRealField
[src]

fn mul_assign(&mut self, rhs: &'b UnitQuaternion<T>)[src]

Performs the *= operation. Read more

impl<T: SimdRealField, R, const D: usize> MulAssign<Isometry<T, R, D>> for Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

fn mul_assign(&mut self, rhs: Isometry<T, R, D>)[src]

Performs the *= operation. Read more

impl<T: SimdRealField, R, const D: usize> MulAssign<Isometry<T, R, D>> for Similarity<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

fn mul_assign(&mut self, rhs: Isometry<T, R, D>)[src]

Performs the *= operation. Read more

impl<T, C, R, const D: usize> MulAssign<Isometry<T, R, D>> for Transform<T, C, D> where
    T: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
    Const<D>: DimNameAdd<U1>,
    C: TCategory,
    R: SubsetOf<OMatrix<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>>,
    DefaultAllocator: Allocator<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>, 
[src]

fn mul_assign(&mut self, rhs: Isometry<T, R, D>)[src]

Performs the *= operation. Read more

impl<T: SimdRealField> MulAssign<Isometry<T, Unit<Quaternion<T>>, 3_usize>> for UnitDualQuaternion<T> where
    T::Element: SimdRealField
[src]

fn mul_assign(&mut self, rhs: Isometry3<T>)[src]

Performs the *= operation. Read more

impl<T, const D: usize> MulAssign<Rotation<T, D>> for Isometry<T, Rotation<T, D>, D> where
    T: Scalar + Zero + One + ClosedAdd + ClosedMul + SimdRealField,
    T::Element: SimdRealField
[src]

fn mul_assign(&mut self, rhs: Rotation<T, D>)[src]

Performs the *= operation. Read more

impl<T: SimdRealField, R, const D: usize> MulAssign<Translation<T, D>> for Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: AbstractRotation<T, D>, 
[src]

fn mul_assign(&mut self, rhs: Translation<T, D>)[src]

Performs the *= operation. Read more

impl<T> MulAssign<Unit<Complex<T>>> for Isometry<T, UnitComplex<T>, 2> where
    T: Scalar + Zero + One + ClosedAdd + ClosedMul + SimdRealField,
    T::Element: SimdRealField
[src]

fn mul_assign(&mut self, rhs: UnitComplex<T>)[src]

Performs the *= operation. Read more

impl<T> MulAssign<Unit<Quaternion<T>>> for Isometry<T, UnitQuaternion<T>, 3> where
    T: Scalar + Zero + One + ClosedAdd + ClosedMul + SimdRealField,
    T::Element: SimdRealField
[src]

fn mul_assign(&mut self, rhs: UnitQuaternion<T>)[src]

Performs the *= operation. Read more

impl<T: SimdRealField, R: AbstractRotation<T, D>, const D: usize> One for Isometry<T, R, D> where
    T::Element: SimdRealField
[src]

fn one() -> Self[src]

Creates a new identity isometry.

fn set_one(&mut self)[src]

Sets self to the multiplicative identity element of Self, 1.

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

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

impl<T: SimdRealField, R, const D: usize> PartialEq<Isometry<T, R, D>> for Isometry<T, R, D> where
    R: AbstractRotation<T, D> + PartialEq
[src]

fn eq(&self, right: &Self) -> bool[src]

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

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

This method tests for !=.

impl<T: RealField, R, const D: usize> RelativeEq<Isometry<T, R, D>> for Isometry<T, R, D> where
    R: AbstractRotation<T, D> + RelativeEq<Epsilon = T::Epsilon>,
    T::Epsilon: Copy
[src]

fn default_max_relative() -> Self::Epsilon[src]

The default relative tolerance for testing values that are far-apart. Read more

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

A test for equality that uses a relative comparison if the values are far apart.

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

The inverse of RelativeEq::relative_eq.

impl<T: SimdRealField, R, const D: usize> SimdValue for Isometry<T, R, D> where
    T::Element: SimdRealField,
    R: SimdValue<SimdBool = T::SimdBool> + AbstractRotation<T, D>,
    R::Element: AbstractRotation<T::Element, D>, 
[src]

type Element = Isometry<T::Element, R::Element, D>

The type of the elements of each lane of this SIMD value.

type SimdBool = T::SimdBool

Type of the result of comparing two SIMD values like self.

fn lanes() -> usize[src]

The number of lanes of this SIMD value.

fn splat(val: Self::Element) -> Self[src]

Initializes an SIMD value with each lanes set to val.

fn extract(&self, i: usize) -> Self::Element[src]

Extracts the i-th lane of self. Read more

unsafe fn extract_unchecked(&self, i: usize) -> Self::Element[src]

Extracts the i-th lane of self without bound-checking.

fn replace(&mut self, i: usize, val: Self::Element)[src]

Replaces the i-th lane of self by val. Read more

unsafe fn replace_unchecked(&mut self, i: usize, val: Self::Element)[src]

Replaces the i-th lane of self by val without bound-checking.

fn select(self, cond: Self::SimdBool, other: Self) -> Self[src]

Merges self and other depending on the lanes of cond. Read more

fn map_lanes(self, f: impl Fn(Self::Element) -> Self::Element) -> Self where
    Self: Clone
[src]

Applies a function to each lane of self. Read more

fn zip_map_lanes(
    self,
    b: Self,
    f: impl Fn(Self::Element, Self::Element) -> Self::Element
) -> Self where
    Self: Clone
[src]

Applies a function to each lane of self paired with the corresponding lane of b. Read more

impl<T1, T2, R> SubsetOf<Isometry<T2, R, 2_usize>> for UnitComplex<T1> where
    T1: RealField,
    T2: RealField + SupersetOf<T1>,
    R: AbstractRotation<T2, 2> + SupersetOf<Self>, 
[src]

fn to_superset(&self) -> Isometry<T2, R, 2>[src]

The inclusion map: converts self to the equivalent element of its superset.

fn is_in_subset(iso: &Isometry<T2, R, 2>) -> bool[src]

Checks if element is actually part of the subset Self (and can be converted to it).

fn from_superset_unchecked(iso: &Isometry<T2, R, 2>) -> Self[src]

Use with care! Same as self.to_superset but without any property checks. Always succeeds.

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<T1, T2, R> SubsetOf<Isometry<T2, R, 3_usize>> for UnitQuaternion<T1> where
    T1: RealField,
    T2: RealField + SupersetOf<T1>,
    R: AbstractRotation<T2, 3> + SupersetOf<Self>, 
[src]

fn to_superset(&self) -> Isometry<T2, R, 3>[src]

The inclusion map: converts self to the equivalent element of its superset.

fn is_in_subset(iso: &Isometry<T2, R, 3>) -> bool[src]

Checks if element is actually part of the subset Self (and can be converted to it).

fn from_superset_unchecked(iso: &Isometry<T2, R, 3>) -> Self[src]

Use with care! Same as self.to_superset but without any property checks. Always succeeds.

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<T1, T2, R, const D: usize> SubsetOf<Isometry<T2, R, D>> for Rotation<T1, D> where
    T1: RealField,
    T2: RealField + SupersetOf<T1>,
    R: AbstractRotation<T2, D> + SupersetOf<Self>, 
[src]

fn to_superset(&self) -> Isometry<T2, R, D>[src]

The inclusion map: converts self to the equivalent element of its superset.

fn is_in_subset(iso: &Isometry<T2, R, D>) -> bool[src]

Checks if element is actually part of the subset Self (and can be converted to it).

fn from_superset_unchecked(iso: &Isometry<T2, R, D>) -> Self[src]

Use with care! Same as self.to_superset but without any property checks. Always succeeds.

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<T1, T2, R, const D: usize> SubsetOf<Isometry<T2, R, D>> for Translation<T1, D> where
    T1: RealField,
    T2: RealField + SupersetOf<T1>,
    R: AbstractRotation<T2, D>, 
[src]

fn to_superset(&self) -> Isometry<T2, R, D>[src]

The inclusion map: converts self to the equivalent element of its superset.

fn is_in_subset(iso: &Isometry<T2, R, D>) -> bool[src]

Checks if element is actually part of the subset Self (and can be converted to it).

fn from_superset_unchecked(iso: &Isometry<T2, R, D>) -> Self[src]

Use with care! Same as self.to_superset but without any property checks. Always succeeds.

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<T1, T2, R1, R2, const D: usize> SubsetOf<Isometry<T2, R2, D>> for Isometry<T1, R1, D> where
    T1: RealField,
    T2: RealField + SupersetOf<T1>,
    R1: AbstractRotation<T1, D> + SubsetOf<R2>,
    R2: AbstractRotation<T2, D>, 
[src]

fn to_superset(&self) -> Isometry<T2, R2, D>[src]

The inclusion map: converts self to the equivalent element of its superset.

fn is_in_subset(iso: &Isometry<T2, R2, D>) -> bool[src]

Checks if element is actually part of the subset Self (and can be converted to it).

fn from_superset_unchecked(iso: &Isometry<T2, R2, D>) -> Self[src]

Use with care! Same as self.to_superset but without any property checks. Always succeeds.

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<T1, T2> SubsetOf<Isometry<T2, Unit<Quaternion<T2>>, 3_usize>> for UnitDualQuaternion<T1> where
    T1: RealField,
    T2: RealField + SupersetOf<T1>, 
[src]

fn to_superset(&self) -> Isometry3<T2>[src]

The inclusion map: converts self to the equivalent element of its superset.

fn is_in_subset(iso: &Isometry3<T2>) -> bool[src]

Checks if element is actually part of the subset Self (and can be converted to it).

fn from_superset_unchecked(iso: &Isometry3<T2>) -> Self[src]

Use with care! Same as self.to_superset but without any property checks. Always succeeds.

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<T1, T2, R, const D: usize> SubsetOf<Matrix<T2, <Const<D> as DimNameAdd<Const<1_usize>>>::Output, <Const<D> as DimNameAdd<Const<1_usize>>>::Output, <DefaultAllocator as Allocator<T2, <Const<D> as DimNameAdd<Const<1_usize>>>::Output, <Const<D> as DimNameAdd<Const<1_usize>>>::Output>>::Buffer>> for Isometry<T1, R, D> where
    T1: RealField,
    T2: RealField + SupersetOf<T1>,
    R: AbstractRotation<T1, D> + SubsetOf<OMatrix<T1, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>> + SubsetOf<OMatrix<T2, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>>,
    Const<D>: DimNameAdd<U1> + DimMin<Const<D>, Output = Const<D>>,
    DefaultAllocator: Allocator<T1, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>> + Allocator<T2, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>, 
[src]

fn to_superset(
    &self
) -> OMatrix<T2, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>
[src]

The inclusion map: converts self to the equivalent element of its superset.

fn is_in_subset(
    m: &OMatrix<T2, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>
) -> bool
[src]

Checks if element is actually part of the subset Self (and can be converted to it).

fn from_superset_unchecked(
    m: &OMatrix<T2, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>
) -> Self
[src]

Use with care! Same as self.to_superset but without any property checks. Always succeeds.

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<T1, T2, R1, R2, const D: usize> SubsetOf<Similarity<T2, R2, D>> for Isometry<T1, R1, D> where
    T1: RealField,
    T2: RealField + SupersetOf<T1>,
    R1: AbstractRotation<T1, D> + SubsetOf<R2>,
    R2: AbstractRotation<T2, D>, 
[src]

fn to_superset(&self) -> Similarity<T2, R2, D>[src]

The inclusion map: converts self to the equivalent element of its superset.

fn is_in_subset(sim: &Similarity<T2, R2, D>) -> bool[src]

Checks if element is actually part of the subset Self (and can be converted to it).

fn from_superset_unchecked(sim: &Similarity<T2, R2, D>) -> Self[src]

Use with care! Same as self.to_superset but without any property checks. Always succeeds.

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<T1, T2, R, C, const D: usize> SubsetOf<Transform<T2, C, D>> for Isometry<T1, R, D> where
    T1: RealField,
    T2: RealField + SupersetOf<T1>,
    C: SuperTCategoryOf<TAffine>,
    R: AbstractRotation<T1, D> + SubsetOf<OMatrix<T1, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>> + SubsetOf<OMatrix<T2, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>>,
    Const<D>: DimNameAdd<U1> + DimMin<Const<D>, Output = Const<D>>,
    DefaultAllocator: Allocator<T1, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>> + Allocator<T2, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>, 
[src]

fn to_superset(&self) -> Transform<T2, C, D>[src]

The inclusion map: converts self to the equivalent element of its superset.

fn is_in_subset(t: &Transform<T2, C, D>) -> bool[src]

Checks if element is actually part of the subset Self (and can be converted to it).

fn from_superset_unchecked(t: &Transform<T2, C, D>) -> Self[src]

Use with care! Same as self.to_superset but without any property checks. Always succeeds.

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<T: RealField, R, const D: usize> UlpsEq<Isometry<T, R, D>> for Isometry<T, R, D> where
    R: AbstractRotation<T, D> + UlpsEq<Epsilon = T::Epsilon>,
    T::Epsilon: Copy
[src]

fn default_max_ulps() -> u32[src]

The default ULPs to tolerate when testing values that are far-apart. Read more

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

A test for equality that uses units in the last place (ULP) if the values are far apart.

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

The inverse of UlpsEq::ulps_eq.

impl<T: Scalar + Copy, R: Copy, const D: usize> Copy for Isometry<T, R, D> where
    Owned<T, Const<D>>: Copy
[src]

impl<T: SimdRealField, R, const D: usize> Eq for Isometry<T, R, D> where
    R: AbstractRotation<T, D> + Eq
[src]

Auto Trait Implementations

impl<T, R, const D: usize> RefUnwindSafe for Isometry<T, R, D> where
    R: RefUnwindSafe,
    T: RefUnwindSafe

impl<T, R, const D: usize> Send for Isometry<T, R, D> where
    R: Send,
    T: Send

impl<T, R, const D: usize> Sync for Isometry<T, R, D> where
    R: Sync,
    T: Sync

impl<T, R, const D: usize> Unpin for Isometry<T, R, D> where
    R: Unpin,
    T: Unpin

impl<T, R, const D: usize> UnwindSafe for Isometry<T, R, D> where
    R: UnwindSafe,
    T: UnwindSafe

Blanket Implementations

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

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

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

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

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

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

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

pub fn from(t: T) -> T[src]

Performs the conversion.

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

pub fn into(self) -> U[src]

Performs the conversion.

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

type Output = T

Should always be Self

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

pub fn to_subset(&self) -> Option<SS>[src]

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

pub fn is_in_subset(&self) -> bool[src]

Checks if self is actually part of its subset T (and can be converted to it).

pub fn to_subset_unchecked(&self) -> SS[src]

Use with care! Same as self.to_subset but without any property checks. Always succeeds.

pub fn from_subset(element: &SS) -> SP[src]

The inclusion map: converts self to the equivalent element of its superset.

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

type Owned = T

The resulting type after obtaining ownership.

pub fn to_owned(&self) -> T[src]

Creates owned data from borrowed data, usually by cloning. Read more

pub fn clone_into(&self, target: &mut T)[src]

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

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

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

pub default fn to_string(&self) -> String[src]

Converts the given value to a String. Read more

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

type Error = Infallible

The type returned in the event of a conversion error.

pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]

Performs the conversion.

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

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

The type returned in the event of a conversion error.

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]

Performs the conversion.

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

pub fn vzip(self) -> V

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

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