Struct nalgebra::geometry::Isometry

source ·
#[repr(C)]
pub struct Isometry<T, 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:

A 3D 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§

source§

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

source

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

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);
source§

impl<T: SimdRealField, R: AbstractRotation<T, D>, const D: usize> Isometry<T, R, D>

source

pub fn inverse(&self) -> Self

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);
source

pub fn inverse_mut(&mut self)

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);
source

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

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));
source

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

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));
source

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

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);
source

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

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);
source

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

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));
source§

impl<T: SimdRealField, R: AbstractRotation<T, D>, const D: usize> Isometry<T, R, D>

source

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

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);
source

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

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);
source

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

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);
source

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

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);
source

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

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);
source§

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

source

pub fn to_homogeneous( &self ) -> OMatrix<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>

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);
source

pub fn to_matrix( &self ) -> OMatrix<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>

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);
source§

impl<T: SimdRealField, R: AbstractRotation<T, D>, const D: usize> Isometry<T, R, D>

source

pub fn identity() -> Self

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);
source

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

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);
source§

impl<T: SimdRealField> Isometry<T, Rotation<T, 2>, 2>

source

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

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));
source

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

Creates a new isometry from the given translation coordinates.

source

pub fn rotation(angle: T) -> Self

Creates a new isometry from the given rotation angle.

source

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

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());
source§

impl<T: SimdRealField> Isometry<T, Unit<Complex<T>>, 2>

source

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

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));
source

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

Creates a new isometry from the given translation coordinates.

source

pub fn rotation(angle: T) -> Self

Creates a new isometry from the given rotation angle.

source

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

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());
source§

impl<T: SimdRealField> Isometry<T, Unit<Quaternion<T>>, 3>

source

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

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);
source

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

Creates a new isometry from the given translation coordinates.

source

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

Creates a new isometry from the given rotation angle.

source

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

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());
source§

impl<T: SimdRealField> Isometry<T, Rotation<T, 3>, 3>

source

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

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);
source

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

Creates a new isometry from the given translation coordinates.

source

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

Creates a new isometry from the given rotation angle.

source

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

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());
source§

impl<T: SimdRealField> Isometry<T, Unit<Quaternion<T>>, 3>

source

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

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());
source

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

👎Deprecated: renamed to face_towards

Deprecated: Use Isometry::face_towards instead.

source

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

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());
source

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

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());
source§

impl<T: SimdRealField> Isometry<T, Rotation<T, 3>, 3>

source

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

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());
source

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

👎Deprecated: renamed to face_towards

Deprecated: Use Isometry::face_towards instead.

source

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

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());
source

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

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());
source§

impl<T: SimdRealField> Isometry<T, Unit<Quaternion<T>>, 3>

source

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

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));
source

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

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

Returns 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));
source§

impl<T: SimdRealField> Isometry<T, Rotation<T, 3>, 3>

source

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

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));
source

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

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

Returns 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));
source§

impl<T: SimdRealField> Isometry<T, Unit<Complex<T>>, 2>

source

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

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);
source§

impl<T: SimdRealField> Isometry<T, Rotation<T, 2>, 2>

source

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

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§

source§

impl<T: RealField, R, const D: usize> AbsDiffEq for Isometry<T, R, D>
where R: AbstractRotation<T, D> + AbsDiffEq<Epsilon = T::Epsilon>, T::Epsilon: Clone,

§

type Epsilon = <T as AbsDiffEq>::Epsilon

Used for specifying relative comparisons.
source§

fn default_epsilon() -> Self::Epsilon

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

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

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

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

The inverse of AbsDiffEq::abs_diff_eq.
source§

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

source§

fn clone(&self) -> Isometry<T, R, D>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

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

source§

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

Formats the value using the given formatter. Read more
source§

impl<T: SimdRealField, R: AbstractRotation<T, D>, const D: usize> Default for Isometry<T, R, D>

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

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

source§

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

Formats the value using the given formatter. Read more
source§

impl<T: RealField, R, const D: usize> Distribution<Isometry<T, R, D>> for Standard

source§

fn sample<G: Rng + ?Sized>(&self, rng: &mut G) -> Isometry<T, R, D>

Generate a random value of T, using rng as the source of randomness.
source§

fn sample_iter<R>(self, rng: R) -> DistIter<Self, R, T>
where R: Rng, Self: Sized,

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

fn map<F, S>(self, func: F) -> DistMap<Self, F, T, S>
where F: Fn(T) -> S, Self: Sized,

Create a distribution of values of ‘S’ by mapping the output of Self through the closure F Read more
source§

impl<'a, 'b, T: SimdRealField, R, const D: usize> Div<&'b Isometry<T, R, D>> for &'a Isometry<T, R, D>

§

type Output = Isometry<T, R, D>

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl<'a, 'b, T: SimdRealField, R, const D: usize> Div<&'b Isometry<T, R, D>> for &'a Similarity<T, R, D>

§

type Output = Similarity<T, R, D>

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl<'b, T: SimdRealField, R, const D: usize> Div<&'b Isometry<T, R, D>> for Isometry<T, R, D>

§

type Output = Isometry<T, R, D>

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl<'b, T: SimdRealField, R, const D: usize> Div<&'b Isometry<T, R, D>> for Similarity<T, R, D>

§

type Output = Similarity<T, R, D>

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl<'a, 'b, T: SimdRealField, const D: usize> Div<&'b Isometry<T, Rotation<T, D>, D>> for &'a Rotation<T, D>

§

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

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl<'b, T: SimdRealField, const D: usize> Div<&'b Isometry<T, Rotation<T, D>, D>> for Rotation<T, D>

§

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

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl<'a, 'b, T: SimdRealField> Div<&'b Isometry<T, Unit<Quaternion<T>>, 3>> for &'a UnitDualQuaternion<T>

§

type Output = Unit<DualQuaternion<T>>

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl<'a, 'b, T: SimdRealField> Div<&'b Isometry<T, Unit<Quaternion<T>>, 3>> for &'a UnitQuaternion<T>

§

type Output = Isometry<T, Unit<Quaternion<T>>, 3>

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl<'b, T: SimdRealField> Div<&'b Isometry<T, Unit<Quaternion<T>>, 3>> for UnitDualQuaternion<T>

§

type Output = Unit<DualQuaternion<T>>

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl<'b, T: SimdRealField> Div<&'b Isometry<T, Unit<Quaternion<T>>, 3>> for UnitQuaternion<T>

§

type Output = Isometry<T, Unit<Quaternion<T>>, 3>

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl<'a, 'b, T: SimdRealField, const D: usize> Div<&'b Rotation<T, D>> for &'a Isometry<T, Rotation<T, D>, D>

§

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

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl<'b, T: SimdRealField, const D: usize> Div<&'b Rotation<T, D>> for Isometry<T, Rotation<T, D>, D>

§

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

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl<'a, 'b, T: SimdRealField, R, const D: usize> Div<&'b Similarity<T, R, D>> for &'a Isometry<T, R, D>

§

type Output = Similarity<T, R, D>

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl<'b, T: SimdRealField, R, const D: usize> Div<&'b Similarity<T, R, D>> for Isometry<T, R, D>

§

type Output = Similarity<T, R, D>

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl<'a, 'b, T: SimdRealField> Div<&'b Unit<Complex<T>>> for &'a Isometry<T, UnitComplex<T>, 2>

§

type Output = Isometry<T, Unit<Complex<T>>, 2>

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl<'b, T: SimdRealField> Div<&'b Unit<Complex<T>>> for Isometry<T, UnitComplex<T>, 2>

§

type Output = Isometry<T, Unit<Complex<T>>, 2>

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl<'a, 'b, T: SimdRealField> Div<&'b Unit<Quaternion<T>>> for &'a Isometry<T, UnitQuaternion<T>, 3>

§

type Output = Isometry<T, Unit<Quaternion<T>>, 3>

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl<'b, T: SimdRealField> Div<&'b Unit<Quaternion<T>>> for Isometry<T, UnitQuaternion<T>, 3>

§

type Output = Isometry<T, Unit<Quaternion<T>>, 3>

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl<'a, T: SimdRealField, R, const D: usize> Div<Isometry<T, R, D>> for &'a Isometry<T, R, D>

§

type Output = Isometry<T, R, D>

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl<'a, T: SimdRealField, R, const D: usize> Div<Isometry<T, R, D>> for &'a Similarity<T, R, D>

§

type Output = Similarity<T, R, D>

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl<T: SimdRealField, R, const D: usize> Div<Isometry<T, R, D>> for Similarity<T, R, D>

§

type Output = Similarity<T, R, D>

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl<'a, T: SimdRealField, const D: usize> Div<Isometry<T, Rotation<T, D>, D>> for &'a Rotation<T, D>

§

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

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl<T: SimdRealField, const D: usize> Div<Isometry<T, Rotation<T, D>, D>> for Rotation<T, D>

§

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

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl<'a, T: SimdRealField> Div<Isometry<T, Unit<Quaternion<T>>, 3>> for &'a UnitDualQuaternion<T>

§

type Output = Unit<DualQuaternion<T>>

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl<'a, T: SimdRealField> Div<Isometry<T, Unit<Quaternion<T>>, 3>> for &'a UnitQuaternion<T>

§

type Output = Isometry<T, Unit<Quaternion<T>>, 3>

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl<T: SimdRealField> Div<Isometry<T, Unit<Quaternion<T>>, 3>> for UnitDualQuaternion<T>

§

type Output = Unit<DualQuaternion<T>>

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl<T: SimdRealField> Div<Isometry<T, Unit<Quaternion<T>>, 3>> for UnitQuaternion<T>

§

type Output = Isometry<T, Unit<Quaternion<T>>, 3>

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl<'a, T: SimdRealField, const D: usize> Div<Rotation<T, D>> for &'a Isometry<T, Rotation<T, D>, D>

§

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

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl<T: SimdRealField, const D: usize> Div<Rotation<T, D>> for Isometry<T, Rotation<T, D>, D>

§

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

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl<'a, T: SimdRealField, R, const D: usize> Div<Similarity<T, R, D>> for &'a Isometry<T, R, D>

§

type Output = Similarity<T, R, D>

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl<T: SimdRealField, R, const D: usize> Div<Similarity<T, R, D>> for Isometry<T, R, D>

§

type Output = Similarity<T, R, D>

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl<'a, T: SimdRealField> Div<Unit<Complex<T>>> for &'a Isometry<T, UnitComplex<T>, 2>

§

type Output = Isometry<T, Unit<Complex<T>>, 2>

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl<T: SimdRealField> Div<Unit<Complex<T>>> for Isometry<T, UnitComplex<T>, 2>

§

type Output = Isometry<T, Unit<Complex<T>>, 2>

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl<'a, T: SimdRealField> Div<Unit<Quaternion<T>>> for &'a Isometry<T, UnitQuaternion<T>, 3>

§

type Output = Isometry<T, Unit<Quaternion<T>>, 3>

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl<T: SimdRealField> Div<Unit<Quaternion<T>>> for Isometry<T, UnitQuaternion<T>, 3>

§

type Output = Isometry<T, Unit<Quaternion<T>>, 3>

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl<T: SimdRealField, R, const D: usize> Div for Isometry<T, R, D>

§

type Output = Isometry<T, R, D>

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl<'b, T: SimdRealField, R, const D: usize> DivAssign<&'b Isometry<T, R, D>> for Isometry<T, R, D>

source§

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

Performs the /= operation. Read more
source§

impl<'b, T: SimdRealField, R, const D: usize> DivAssign<&'b Isometry<T, R, D>> for Similarity<T, R, D>

source§

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

Performs the /= operation. Read more
source§

impl<'b, T: SimdRealField> DivAssign<&'b Isometry<T, Unit<Quaternion<T>>, 3>> for UnitDualQuaternion<T>

source§

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

Performs the /= operation. Read more
source§

impl<'b, T, const D: usize> DivAssign<&'b Rotation<T, D>> for Isometry<T, Rotation<T, D>, D>

source§

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

Performs the /= operation. Read more
source§

impl<'b, T> DivAssign<&'b Unit<Complex<T>>> for Isometry<T, UnitComplex<T>, 2>

source§

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

Performs the /= operation. Read more
source§

impl<'b, T> DivAssign<&'b Unit<Quaternion<T>>> for Isometry<T, UnitQuaternion<T>, 3>

source§

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

Performs the /= operation. Read more
source§

impl<T: SimdRealField, R, const D: usize> DivAssign<Isometry<T, R, D>> for Similarity<T, R, D>

source§

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

Performs the /= operation. Read more
source§

impl<T: SimdRealField> DivAssign<Isometry<T, Unit<Quaternion<T>>, 3>> for UnitDualQuaternion<T>

source§

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

Performs the /= operation. Read more
source§

impl<T, const D: usize> DivAssign<Rotation<T, D>> for Isometry<T, Rotation<T, D>, D>

source§

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

Performs the /= operation. Read more
source§

impl<T> DivAssign<Unit<Complex<T>>> for Isometry<T, UnitComplex<T>, 2>

source§

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

Performs the /= operation. Read more
source§

impl<T> DivAssign<Unit<Quaternion<T>>> for Isometry<T, UnitQuaternion<T>, 3>

source§

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

Performs the /= operation. Read more
source§

impl<T: SimdRealField, R, const D: usize> DivAssign for Isometry<T, R, D>

source§

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

Performs the /= operation. Read more
source§

impl<T, R, const D: usize> From<[Isometry<<T as SimdValue>::Element, <R as SimdValue>::Element, D>; 16]> for Isometry<T, R, D>

source§

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

Converts to this type from the input type.
source§

impl<T, R, const D: usize> From<[Isometry<<T as SimdValue>::Element, <R as SimdValue>::Element, D>; 2]> for Isometry<T, R, D>

source§

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

Converts to this type from the input type.
source§

impl<T, R, const D: usize> From<[Isometry<<T as SimdValue>::Element, <R as SimdValue>::Element, D>; 4]> for Isometry<T, R, D>

source§

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

Converts to this type from the input type.
source§

impl<T, R, const D: usize> From<[Isometry<<T as SimdValue>::Element, <R as SimdValue>::Element, D>; 8]> for Isometry<T, R, D>

source§

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

Converts to this type from the input type.
source§

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

source§

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

Converts to this type from the input type.
source§

impl<T: SimdRealField, R, const D: usize> From<Isometry<T, R, D>> for OMatrix<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>

source§

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

Converts to this type from the input type.
source§

impl<T: SimdRealField> From<Isometry<T, Unit<Quaternion<T>>, 3>> for UnitDualQuaternion<T>

source§

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

Converts to this type from the input type.
source§

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

source§

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

Converts to this type from the input type.
source§

impl<T: SimdRealField, R, const D: usize> From<OPoint<T, Const<D>>> for Isometry<T, R, D>
where R: AbstractRotation<T, D>,

source§

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

Converts to this type from the input type.
source§

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

source§

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

Converts to this type from the input type.
source§

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

source§

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

Feeds this value into the given Hasher. Read more
1.3.0 · source§

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

Feeds a slice of this type into the given Hasher. Read more
source§

impl<'a, 'b, T: SimdRealField, R, const D: usize> Mul<&'b Isometry<T, R, D>> for &'a Isometry<T, R, D>

§

type Output = Isometry<T, R, D>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'a, 'b, T: SimdRealField, R, const D: usize> Mul<&'b Isometry<T, R, D>> for &'a Similarity<T, R, D>

§

type Output = Similarity<T, R, D>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'a, 'b, T, C, R, const D: usize> Mul<&'b Isometry<T, R, D>> for &'a Transform<T, C, D>

§

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

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'a, 'b, T: SimdRealField, R, const D: usize> Mul<&'b Isometry<T, R, D>> for &'a Translation<T, D>

§

type Output = Isometry<T, R, D>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'b, T: SimdRealField, R, const D: usize> Mul<&'b Isometry<T, R, D>> for Isometry<T, R, D>

§

type Output = Isometry<T, R, D>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'b, T: SimdRealField, R, const D: usize> Mul<&'b Isometry<T, R, D>> for Similarity<T, R, D>

§

type Output = Similarity<T, R, D>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'b, T, C, R, const D: usize> Mul<&'b Isometry<T, R, D>> for Transform<T, C, D>

§

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

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'b, T: SimdRealField, R, const D: usize> Mul<&'b Isometry<T, R, D>> for Translation<T, D>

§

type Output = Isometry<T, R, D>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'a, 'b, T: SimdRealField, const D: usize> Mul<&'b Isometry<T, Rotation<T, D>, D>> for &'a Rotation<T, D>

§

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

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'b, T: SimdRealField, const D: usize> Mul<&'b Isometry<T, Rotation<T, D>, D>> for Rotation<T, D>

§

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

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'a, 'b, T: SimdRealField> Mul<&'b Isometry<T, Unit<Complex<T>>, 2>> for &'a UnitComplex<T>

§

type Output = Isometry<T, Unit<Complex<T>>, 2>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'b, T: SimdRealField> Mul<&'b Isometry<T, Unit<Complex<T>>, 2>> for UnitComplex<T>

§

type Output = Isometry<T, Unit<Complex<T>>, 2>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'a, 'b, T: SimdRealField> Mul<&'b Isometry<T, Unit<Quaternion<T>>, 3>> for &'a UnitDualQuaternion<T>

§

type Output = Unit<DualQuaternion<T>>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'a, 'b, T: SimdRealField> Mul<&'b Isometry<T, Unit<Quaternion<T>>, 3>> for &'a UnitQuaternion<T>

§

type Output = Isometry<T, Unit<Quaternion<T>>, 3>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'b, T: SimdRealField> Mul<&'b Isometry<T, Unit<Quaternion<T>>, 3>> for UnitDualQuaternion<T>

§

type Output = Unit<DualQuaternion<T>>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'b, T: SimdRealField> Mul<&'b Isometry<T, Unit<Quaternion<T>>, 3>> for UnitQuaternion<T>

§

type Output = Isometry<T, Unit<Quaternion<T>>, 3>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'a, 'b, T: SimdRealField, R, const D: usize> Mul<&'b Matrix<T, Const<D>, Const<1>, ArrayStorage<T, D, 1>>> for &'a Isometry<T, R, D>

§

type Output = Matrix<T, Const<D>, Const<1>, ArrayStorage<T, D, 1>>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'b, T: SimdRealField, R, const D: usize> Mul<&'b Matrix<T, Const<D>, Const<1>, ArrayStorage<T, D, 1>>> for Isometry<T, R, D>

§

type Output = Matrix<T, Const<D>, Const<1>, ArrayStorage<T, D, 1>>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'a, 'b, T: SimdRealField, R, const D: usize> Mul<&'b OPoint<T, Const<D>>> for &'a Isometry<T, R, D>

§

type Output = OPoint<T, Const<D>>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'b, T: SimdRealField, R, const D: usize> Mul<&'b OPoint<T, Const<D>>> for Isometry<T, R, D>

§

type Output = OPoint<T, Const<D>>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'a, 'b, T: SimdRealField, const D: usize> Mul<&'b Rotation<T, D>> for &'a Isometry<T, Rotation<T, D>, D>

§

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

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'b, T: SimdRealField, const D: usize> Mul<&'b Rotation<T, D>> for Isometry<T, Rotation<T, D>, D>

§

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

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'a, 'b, T: SimdRealField, R, const D: usize> Mul<&'b Similarity<T, R, D>> for &'a Isometry<T, R, D>

§

type Output = Similarity<T, R, D>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'b, T: SimdRealField, R, const D: usize> Mul<&'b Similarity<T, R, D>> for Isometry<T, R, D>

§

type Output = Similarity<T, R, D>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'a, 'b, T, C, R, const D: usize> Mul<&'b Transform<T, C, D>> for &'a Isometry<T, R, D>

§

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

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'b, T, C, R, const D: usize> Mul<&'b Transform<T, C, D>> for Isometry<T, R, D>

§

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

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'a, 'b, T: SimdRealField, R, const D: usize> Mul<&'b Translation<T, D>> for &'a Isometry<T, R, D>

§

type Output = Isometry<T, R, D>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'b, T: SimdRealField, R, const D: usize> Mul<&'b Translation<T, D>> for Isometry<T, R, D>

§

type Output = Isometry<T, R, D>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'a, 'b, T: SimdRealField> Mul<&'b Unit<Complex<T>>> for &'a Isometry<T, UnitComplex<T>, 2>

§

type Output = Isometry<T, Unit<Complex<T>>, 2>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'b, T: SimdRealField> Mul<&'b Unit<Complex<T>>> for Isometry<T, UnitComplex<T>, 2>

§

type Output = Isometry<T, Unit<Complex<T>>, 2>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'a, 'b, T: SimdRealField, R, const D: usize> Mul<&'b Unit<Matrix<T, Const<D>, Const<1>, ArrayStorage<T, D, 1>>>> for &'a Isometry<T, R, D>

§

type Output = Unit<Matrix<T, Const<D>, Const<1>, ArrayStorage<T, D, 1>>>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'b, T: SimdRealField, R, const D: usize> Mul<&'b Unit<Matrix<T, Const<D>, Const<1>, ArrayStorage<T, D, 1>>>> for Isometry<T, R, D>

§

type Output = Unit<Matrix<T, Const<D>, Const<1>, ArrayStorage<T, D, 1>>>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'a, 'b, T: SimdRealField> Mul<&'b Unit<Quaternion<T>>> for &'a Isometry<T, UnitQuaternion<T>, 3>

§

type Output = Isometry<T, Unit<Quaternion<T>>, 3>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'b, T: SimdRealField> Mul<&'b Unit<Quaternion<T>>> for Isometry<T, UnitQuaternion<T>, 3>

§

type Output = Isometry<T, Unit<Quaternion<T>>, 3>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'a, T: SimdRealField, R, const D: usize> Mul<Isometry<T, R, D>> for &'a Isometry<T, R, D>

§

type Output = Isometry<T, R, D>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'a, T: SimdRealField, R, const D: usize> Mul<Isometry<T, R, D>> for &'a Similarity<T, R, D>

§

type Output = Similarity<T, R, D>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'a, T, C, R, const D: usize> Mul<Isometry<T, R, D>> for &'a Transform<T, C, D>

§

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

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'a, T: SimdRealField, R, const D: usize> Mul<Isometry<T, R, D>> for &'a Translation<T, D>

§

type Output = Isometry<T, R, D>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<T: SimdRealField, R, const D: usize> Mul<Isometry<T, R, D>> for Similarity<T, R, D>

§

type Output = Similarity<T, R, D>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<T, C, R, const D: usize> Mul<Isometry<T, R, D>> for Transform<T, C, D>

§

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

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<T: SimdRealField, R, const D: usize> Mul<Isometry<T, R, D>> for Translation<T, D>

§

type Output = Isometry<T, R, D>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'a, T: SimdRealField, const D: usize> Mul<Isometry<T, Rotation<T, D>, D>> for &'a Rotation<T, D>

§

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

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<T: SimdRealField, const D: usize> Mul<Isometry<T, Rotation<T, D>, D>> for Rotation<T, D>

§

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

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'a, T: SimdRealField> Mul<Isometry<T, Unit<Complex<T>>, 2>> for &'a UnitComplex<T>

§

type Output = Isometry<T, Unit<Complex<T>>, 2>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<T: SimdRealField> Mul<Isometry<T, Unit<Complex<T>>, 2>> for UnitComplex<T>

§

type Output = Isometry<T, Unit<Complex<T>>, 2>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'a, T: SimdRealField> Mul<Isometry<T, Unit<Quaternion<T>>, 3>> for &'a UnitDualQuaternion<T>

§

type Output = Unit<DualQuaternion<T>>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'a, T: SimdRealField> Mul<Isometry<T, Unit<Quaternion<T>>, 3>> for &'a UnitQuaternion<T>

§

type Output = Isometry<T, Unit<Quaternion<T>>, 3>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<T: SimdRealField> Mul<Isometry<T, Unit<Quaternion<T>>, 3>> for UnitDualQuaternion<T>

§

type Output = Unit<DualQuaternion<T>>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<T: SimdRealField> Mul<Isometry<T, Unit<Quaternion<T>>, 3>> for UnitQuaternion<T>

§

type Output = Isometry<T, Unit<Quaternion<T>>, 3>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'a, T: SimdRealField, R, const D: usize> Mul<Matrix<T, Const<D>, Const<1>, ArrayStorage<T, D, 1>>> for &'a Isometry<T, R, D>

§

type Output = Matrix<T, Const<D>, Const<1>, ArrayStorage<T, D, 1>>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<T: SimdRealField, R, const D: usize> Mul<Matrix<T, Const<D>, Const<1>, ArrayStorage<T, D, 1>>> for Isometry<T, R, D>

§

type Output = Matrix<T, Const<D>, Const<1>, ArrayStorage<T, D, 1>>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'a, T: SimdRealField, R, const D: usize> Mul<OPoint<T, Const<D>>> for &'a Isometry<T, R, D>

§

type Output = OPoint<T, Const<D>>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<T: SimdRealField, R, const D: usize> Mul<OPoint<T, Const<D>>> for Isometry<T, R, D>

§

type Output = OPoint<T, Const<D>>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'a, T: SimdRealField, const D: usize> Mul<Rotation<T, D>> for &'a Isometry<T, Rotation<T, D>, D>

§

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

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<T: SimdRealField, const D: usize> Mul<Rotation<T, D>> for Isometry<T, Rotation<T, D>, D>

§

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

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'a, T: SimdRealField, R, const D: usize> Mul<Similarity<T, R, D>> for &'a Isometry<T, R, D>

§

type Output = Similarity<T, R, D>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<T: SimdRealField, R, const D: usize> Mul<Similarity<T, R, D>> for Isometry<T, R, D>

§

type Output = Similarity<T, R, D>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'a, T, C, R, const D: usize> Mul<Transform<T, C, D>> for &'a Isometry<T, R, D>

§

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

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<T, C, R, const D: usize> Mul<Transform<T, C, D>> for Isometry<T, R, D>

§

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

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'a, T: SimdRealField, R, const D: usize> Mul<Translation<T, D>> for &'a Isometry<T, R, D>

§

type Output = Isometry<T, R, D>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<T: SimdRealField, R, const D: usize> Mul<Translation<T, D>> for Isometry<T, R, D>

§

type Output = Isometry<T, R, D>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'a, T: SimdRealField> Mul<Unit<Complex<T>>> for &'a Isometry<T, UnitComplex<T>, 2>

§

type Output = Isometry<T, Unit<Complex<T>>, 2>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<T: SimdRealField> Mul<Unit<Complex<T>>> for Isometry<T, UnitComplex<T>, 2>

§

type Output = Isometry<T, Unit<Complex<T>>, 2>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'a, T: SimdRealField, R, const D: usize> Mul<Unit<Matrix<T, Const<D>, Const<1>, ArrayStorage<T, D, 1>>>> for &'a Isometry<T, R, D>

§

type Output = Unit<Matrix<T, Const<D>, Const<1>, ArrayStorage<T, D, 1>>>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<T: SimdRealField, R, const D: usize> Mul<Unit<Matrix<T, Const<D>, Const<1>, ArrayStorage<T, D, 1>>>> for Isometry<T, R, D>

§

type Output = Unit<Matrix<T, Const<D>, Const<1>, ArrayStorage<T, D, 1>>>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'a, T: SimdRealField> Mul<Unit<Quaternion<T>>> for &'a Isometry<T, UnitQuaternion<T>, 3>

§

type Output = Isometry<T, Unit<Quaternion<T>>, 3>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<T: SimdRealField> Mul<Unit<Quaternion<T>>> for Isometry<T, UnitQuaternion<T>, 3>

§

type Output = Isometry<T, Unit<Quaternion<T>>, 3>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<T: SimdRealField, R, const D: usize> Mul for Isometry<T, R, D>

§

type Output = Isometry<T, R, D>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'b, T: SimdRealField, R, const D: usize> MulAssign<&'b Isometry<T, R, D>> for Isometry<T, R, D>

source§

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

Performs the *= operation. Read more
source§

impl<'b, T: SimdRealField, R, const D: usize> MulAssign<&'b Isometry<T, R, D>> for Similarity<T, R, D>

source§

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

Performs the *= operation. Read more
source§

impl<'b, T, C, R, const D: usize> MulAssign<&'b Isometry<T, R, D>> for Transform<T, C, D>

source§

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

Performs the *= operation. Read more
source§

impl<'b, T: SimdRealField> MulAssign<&'b Isometry<T, Unit<Quaternion<T>>, 3>> for UnitDualQuaternion<T>

source§

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

Performs the *= operation. Read more
source§

impl<'b, T, const D: usize> MulAssign<&'b Rotation<T, D>> for Isometry<T, Rotation<T, D>, D>

source§

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

Performs the *= operation. Read more
source§

impl<'b, T: SimdRealField, R, const D: usize> MulAssign<&'b Translation<T, D>> for Isometry<T, R, D>

source§

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

Performs the *= operation. Read more
source§

impl<'b, T> MulAssign<&'b Unit<Complex<T>>> for Isometry<T, UnitComplex<T>, 2>

source§

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

Performs the *= operation. Read more
source§

impl<'b, T> MulAssign<&'b Unit<Quaternion<T>>> for Isometry<T, UnitQuaternion<T>, 3>

source§

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

Performs the *= operation. Read more
source§

impl<T: SimdRealField, R, const D: usize> MulAssign<Isometry<T, R, D>> for Similarity<T, R, D>

source§

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

Performs the *= operation. Read more
source§

impl<T, C, R, const D: usize> MulAssign<Isometry<T, R, D>> for Transform<T, C, D>

source§

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

Performs the *= operation. Read more
source§

impl<T: SimdRealField> MulAssign<Isometry<T, Unit<Quaternion<T>>, 3>> for UnitDualQuaternion<T>

source§

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

Performs the *= operation. Read more
source§

impl<T, const D: usize> MulAssign<Rotation<T, D>> for Isometry<T, Rotation<T, D>, D>

source§

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

Performs the *= operation. Read more
source§

impl<T: SimdRealField, R, const D: usize> MulAssign<Translation<T, D>> for Isometry<T, R, D>

source§

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

Performs the *= operation. Read more
source§

impl<T> MulAssign<Unit<Complex<T>>> for Isometry<T, UnitComplex<T>, 2>

source§

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

Performs the *= operation. Read more
source§

impl<T> MulAssign<Unit<Quaternion<T>>> for Isometry<T, UnitQuaternion<T>, 3>

source§

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

Performs the *= operation. Read more
source§

impl<T: SimdRealField, R, const D: usize> MulAssign for Isometry<T, R, D>

source§

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

Performs the *= operation. Read more
source§

impl<T: SimdRealField, R: AbstractRotation<T, D>, const D: usize> One for Isometry<T, R, D>

source§

fn one() -> Self

Creates a new identity isometry.

source§

fn set_one(&mut self)

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

fn is_one(&self) -> bool
where Self: PartialEq,

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

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

source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<T: RealField, R, const D: usize> RelativeEq for Isometry<T, R, D>
where R: AbstractRotation<T, D> + RelativeEq<Epsilon = T::Epsilon>, T::Epsilon: Clone,

source§

fn default_max_relative() -> Self::Epsilon

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

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

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

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

The inverse of RelativeEq::relative_eq.
source§

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>,

§

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

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

type SimdBool = <T as SimdValue>::SimdBool

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

fn lanes() -> usize

The number of lanes of this SIMD value.
source§

fn splat(val: Self::Element) -> Self

Initializes an SIMD value with each lanes set to val.
source§

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

Extracts the i-th lane of self. Read more
source§

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

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

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

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

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

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

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

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

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

Applies a function to each lane of self. Read more
source§

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

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

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

source§

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

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

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

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

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

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

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

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

impl<T1, T2, R> SubsetOf<Isometry<T2, R, 3>> for UnitQuaternion<T1>
where T1: RealField, T2: RealField + SupersetOf<T1>, R: AbstractRotation<T2, 3> + SupersetOf<Self>,

source§

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

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

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

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

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

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

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

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

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>,

source§

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

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

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

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

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

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

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

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

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>,

source§

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

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

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

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

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

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

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

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

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>,

source§

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

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

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

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

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

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

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

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

impl<T1, T2> SubsetOf<Isometry<T2, Unit<Quaternion<T2>>, 3>> for UnitDualQuaternion<T1>
where T1: RealField, T2: RealField + SupersetOf<T1>,

source§

fn to_superset(&self) -> Isometry3<T2>

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

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

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

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

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

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

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

impl<T1, T2, R, const D: usize> SubsetOf<Matrix<T2, <Const<D> as DimNameAdd<Const<1>>>::Output, <Const<D> as DimNameAdd<Const<1>>>::Output, <DefaultAllocator as Allocator<T2, <Const<D> as DimNameAdd<Const<1>>>::Output, <Const<D> as DimNameAdd<Const<1>>>::Output>>::Buffer>> for Isometry<T1, R, D>

source§

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

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

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

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

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

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

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

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

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>,

source§

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

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

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

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

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

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

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

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

impl<T1, T2, R, C, const D: usize> SubsetOf<Transform<T2, C, D>> for Isometry<T1, R, D>

source§

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

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

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

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

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

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

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

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

impl<T: RealField, R, const D: usize> UlpsEq for Isometry<T, R, D>
where R: AbstractRotation<T, D> + UlpsEq<Epsilon = T::Epsilon>, T::Epsilon: Clone,

source§

fn default_max_ulps() -> u32

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

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

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

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

The inverse of UlpsEq::ulps_eq.
source§

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

source§

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

Auto Trait Implementations§

§

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

§

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§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

source§

fn to_subset(&self) -> Option<SS>

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

fn is_in_subset(&self) -> bool

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

fn to_subset_unchecked(&self) -> SS

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

fn from_subset(element: &SS) -> SP

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

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

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

fn clone_into(&self, target: &mut T)

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

impl<T> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

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

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

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

The type returned in the event of a conversion error.
source§

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

Performs the conversion.
source§

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

source§

fn vzip(self) -> V

source§

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

source§

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

source§

impl<T> Scalar for T
where T: 'static + Clone + PartialEq + Debug,