pub type IsometryMatrix2<T> = Isometry<T, Rotation<T, 2>, 2>;
Expand description

A 2-dimensional direct isometry using a rotation matrix for its rotational part.

Because this is an alias, not all its methods are listed here. See the Isometry type too.

Also known as a rigid-body motion, or as an element of SE(2).

Aliased Type§

struct IsometryMatrix2<T> {
    pub rotation: Rotation<T, 2>,
    pub translation: Translation<T, 2>,
}

Fields§

§rotation: Rotation<T, 2>

The pure rotational part of this isometry.

§translation: Translation<T, 2>

The pure translational part of this isometry.

Implementations§

source§

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

source

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

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, R, const D: usize> Isometry<T, R, D>where T: SimdRealField, R: AbstractRotation<T, D>, <T as SimdValue>::Element: SimdRealField,

source

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

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>) -> Isometry<T, R, D>

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: &OPoint<T, Const<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, R, const D: usize> Isometry<T, R, D>where T: SimdRealField, R: AbstractRotation<T, D>, <T as SimdValue>::Element: SimdRealField,

source

pub fn transform_point(&self, pt: &OPoint<T, Const<D>>) -> OPoint<T, Const<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: &Matrix<T, Const<D>, Const<1>, ArrayStorage<T, D, 1>> ) -> Matrix<T, Const<D>, Const<1>, ArrayStorage<T, D, 1>>

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: &OPoint<T, Const<D>> ) -> OPoint<T, Const<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: &Matrix<T, Const<D>, Const<1>, ArrayStorage<T, D, 1>> ) -> Matrix<T, Const<D>, Const<1>, ArrayStorage<T, D, 1>>

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<Matrix<T, Const<D>, Const<1>, ArrayStorage<T, D, 1>>> ) -> Unit<Matrix<T, Const<D>, Const<1>, ArrayStorage<T, D, 1>>>

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, R, const D: usize> Isometry<T, R, D>where T: SimdRealField,

source

pub fn to_homogeneous( &self ) -> Matrix<T, <Const<D> as DimNameAdd<Const<1>>>::Output, <Const<D> as DimNameAdd<Const<1>>>::Output, <DefaultAllocator as Allocator<T, <Const<D> as DimNameAdd<Const<1>>>::Output, <Const<D> as DimNameAdd<Const<1>>>::Output>>::Buffer>where Const<D>: DimNameAdd<Const<1>>, R: SubsetOf<Matrix<T, <Const<D> as DimNameAdd<Const<1>>>::Output, <Const<D> as DimNameAdd<Const<1>>>::Output, <DefaultAllocator as Allocator<T, <Const<D> as DimNameAdd<Const<1>>>::Output, <Const<D> as DimNameAdd<Const<1>>>::Output>>::Buffer>>, DefaultAllocator: Allocator<T, <Const<D> as DimNameAdd<Const<1>>>::Output, <Const<D> as DimNameAdd<Const<1>>>::Output>,

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 ) -> Matrix<T, <Const<D> as DimNameAdd<Const<1>>>::Output, <Const<D> as DimNameAdd<Const<1>>>::Output, <DefaultAllocator as Allocator<T, <Const<D> as DimNameAdd<Const<1>>>::Output, <Const<D> as DimNameAdd<Const<1>>>::Output>>::Buffer>where Const<D>: DimNameAdd<Const<1>>, R: SubsetOf<Matrix<T, <Const<D> as DimNameAdd<Const<1>>>::Output, <Const<D> as DimNameAdd<Const<1>>>::Output, <DefaultAllocator as Allocator<T, <Const<D> as DimNameAdd<Const<1>>>::Output, <Const<D> as DimNameAdd<Const<1>>>::Output>>::Buffer>>, DefaultAllocator: Allocator<T, <Const<D> as DimNameAdd<Const<1>>>::Output, <Const<D> as DimNameAdd<Const<1>>>::Output>,

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, R, const D: usize> Isometry<T, R, D>where T: SimdRealField, R: AbstractRotation<T, D>, <T as SimdValue>::Element: SimdRealField,

source

pub fn identity() -> Isometry<T, R, D>

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: OPoint<T, Const<D>>) -> Isometry<T, R, D>

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> Isometry<T, Rotation<T, 2>, 2>where T: SimdRealField, <T as SimdValue>::Element: SimdRealField,

source

pub fn new( translation: Matrix<T, Const<nalgebra::::base::dimension::U2::{constant#0}>, Const<1>, ArrayStorage<T, 2, 1>>, angle: T ) -> Isometry<T, Rotation<T, 2>, 2>

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) -> Isometry<T, Rotation<T, 2>, 2>

Creates a new isometry from the given translation coordinates.

source

pub fn rotation(angle: T) -> Isometry<T, Rotation<T, 2>, 2>

Creates a new isometry from the given rotation angle.

source

pub fn cast<To>(self) -> Isometry<To, Rotation<To, 2>, 2>where To: Scalar, Isometry<To, Rotation<To, 2>, 2>: SupersetOf<Isometry<T, Rotation<T, 2>, 2>>,

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> Isometry<T, Rotation<T, 2>, 2>where T: SimdRealField,

source

pub fn lerp_slerp( &self, other: &Isometry<T, Rotation<T, 2>, 2>, t: T ) -> Isometry<T, Rotation<T, 2>, 2>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, R, const D: usize> AbsDiffEq<Isometry<T, R, D>> for Isometry<T, R, D>where T: RealField, R: AbstractRotation<T, D> + AbsDiffEq<R, Epsilon = <T as AbsDiffEq<T>>::Epsilon>, <T as AbsDiffEq<T>>::Epsilon: Clone,

§

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

Used for specifying relative comparisons.
source§

fn default_epsilon( ) -> <Isometry<T, R, D> as AbsDiffEq<Isometry<T, R, D>>>::Epsilon

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

fn abs_diff_eq( &self, other: &Isometry<T, R, D>, epsilon: <Isometry<T, R, D> as AbsDiffEq<Isometry<T, R, D>>>::Epsilon ) -> bool

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

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

The inverse of [AbsDiffEq::abs_diff_eq].
source§

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

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, R, const D: usize> Debug for Isometry<T, R, D>where T: Debug, R: Debug,

source§

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

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

impl<'de, T, R, const D: usize> Deserialize<'de> for Isometry<T, R, D>where R: Deserialize<'de>, DefaultAllocator: Allocator<T, Const<D>, Const<1>>, <DefaultAllocator as Allocator<T, Const<D>, Const<1>>>::Buffer: Deserialize<'de>, T: Scalar,

source§

fn deserialize<__D>( __deserializer: __D ) -> Result<Isometry<T, R, D>, <__D as Deserializer<'de>>::Error>where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

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

source§

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

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

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

§

type Output = Isometry<T, R, D>

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

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

§

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

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

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

§

type Output = Similarity<T, R, D>

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl<T, R, const D: usize> Div<Isometry<T, R, D>> for Isometry<T, R, D>where T: SimdRealField, <T as SimdValue>::Element: SimdRealField, R: AbstractRotation<T, D>,

§

type Output = Isometry<T, R, D>

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl<T, const D: usize> Div<Rotation<T, D>> for Isometry<T, Rotation<T, D>, D>where T: SimdRealField, <T as SimdValue>::Element: SimdRealField,

§

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

The resulting type after applying the / operator.
source§

fn div( self, rhs: Rotation<T, D> ) -> <Isometry<T, Rotation<T, D>, D> as Div<Rotation<T, D>>>::Output

Performs the / operation. Read more
source§

impl<T, R, const D: usize> Div<Similarity<T, R, D>> for Isometry<T, R, D>where T: SimdRealField, <T as SimdValue>::Element: SimdRealField, R: AbstractRotation<T, D>,

§

type Output = Similarity<T, R, D>

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

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

source§

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

Performs the /= operation. Read more
source§

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

source§

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

Performs the /= operation. Read more
source§

impl<T, R, const D: usize> DivAssign<Isometry<T, R, D>> for Isometry<T, R, D>where T: SimdRealField, <T as SimdValue>::Element: SimdRealField, R: AbstractRotation<T, D>,

source§

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

Performs the /= operation. Read more
source§

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

source§

fn div_assign(&mut self, rhs: Rotation<T, 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>where T: Scalar + PrimitiveSimdValue + From<[<T as SimdValue>::Element; 16]>, R: SimdValue + AbstractRotation<T, D> + From<[<R as SimdValue>::Element; 16]>, <R as SimdValue>::Element: AbstractRotation<<T as SimdValue>::Element, D> + Scalar + Copy, <T as SimdValue>::Element: Scalar + Copy,

source§

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

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>where T: Scalar + PrimitiveSimdValue + From<[<T as SimdValue>::Element; 2]>, R: SimdValue + AbstractRotation<T, D> + From<[<R as SimdValue>::Element; 2]>, <R as SimdValue>::Element: AbstractRotation<<T as SimdValue>::Element, D> + Scalar + Copy, <T as SimdValue>::Element: Scalar + Copy,

source§

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

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>where T: Scalar + PrimitiveSimdValue + From<[<T as SimdValue>::Element; 4]>, R: SimdValue + AbstractRotation<T, D> + From<[<R as SimdValue>::Element; 4]>, <R as SimdValue>::Element: AbstractRotation<<T as SimdValue>::Element, D> + Scalar + Copy, <T as SimdValue>::Element: Scalar + Copy,

source§

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

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>where T: Scalar + PrimitiveSimdValue + From<[<T as SimdValue>::Element; 8]>, R: SimdValue + AbstractRotation<T, D> + From<[<R as SimdValue>::Element; 8]>, <R as SimdValue>::Element: AbstractRotation<<T as SimdValue>::Element, D> + Scalar + Copy, <T as SimdValue>::Element: Scalar + Copy,

source§

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

Converts to this type from the input type.
source§

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

source§

fn from(coords: [T; D]) -> Isometry<T, R, D>

Converts to this type from the input type.
source§

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

source§

fn from( coords: Matrix<T, Const<D>, Const<1>, ArrayStorage<T, D, 1>> ) -> Isometry<T, R, D>

Converts to this type from the input type.
source§

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

source§

fn from(coords: OPoint<T, Const<D>>) -> Isometry<T, R, D>

Converts to this type from the input type.
source§

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

source§

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

Converts to this type from the input type.
source§

impl<T, R, const D: usize> Hash for Isometry<T, R, D>where T: Scalar + Hash, R: Hash, <DefaultAllocator as Allocator<T, Const<D>, Const<1>>>::Buffer: Hash,

source§

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

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

§

type Output = Isometry<T, R, D>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'b, T, R, const D: usize> Mul<&'b Matrix<T, Const<D>, Const<1>, ArrayStorage<T, D, 1>>> for Isometry<T, R, D>where T: SimdRealField, <T as SimdValue>::Element: SimdRealField, R: AbstractRotation<T, 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 Matrix<T, Const<D>, Const<1>, ArrayStorage<T, D, 1>> ) -> <Isometry<T, R, D> as Mul<&'b Matrix<T, Const<D>, Const<1>, ArrayStorage<T, D, 1>>>>::Output

Performs the * operation. Read more
source§

impl<'b, T, R, const D: usize> Mul<&'b OPoint<T, Const<D>>> for Isometry<T, R, D>where T: SimdRealField, <T as SimdValue>::Element: SimdRealField, R: AbstractRotation<T, D>,

§

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

The resulting type after applying the * operator.
source§

fn mul( self, right: &'b OPoint<T, Const<D>> ) -> <Isometry<T, R, D> as Mul<&'b OPoint<T, Const<D>>>>::Output

Performs the * operation. Read more
source§

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

§

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

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

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

§

type Output = Similarity<T, R, D>

The resulting type after applying the * operator.
source§

fn mul( self, rhs: &'b Similarity<T, R, D> ) -> <Isometry<T, R, D> as Mul<&'b Similarity<T, R, D>>>::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>where T: Scalar + Zero + One + ClosedAdd<T> + ClosedMul<T> + RealField, Const<D>: DimNameAdd<Const<1>>, C: TCategoryMul<TAffine>, R: SubsetOf<Matrix<T, <Const<D> as DimNameAdd<Const<1>>>::Output, <Const<D> as DimNameAdd<Const<1>>>::Output, <DefaultAllocator as Allocator<T, <Const<D> as DimNameAdd<Const<1>>>::Output, <Const<D> as DimNameAdd<Const<1>>>::Output>>::Buffer>>, DefaultAllocator: Allocator<T, <Const<D> as DimNameAdd<Const<1>>>::Output, <Const<D> as DimNameAdd<Const<1>>>::Output>,

§

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> ) -> <Isometry<T, R, D> as Mul<&'b Transform<T, C, D>>>::Output

Performs the * operation. Read more
source§

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

§

type Output = Isometry<T, R, D>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<'b, T, R, const D: usize> Mul<&'b Unit<Matrix<T, Const<D>, Const<1>, ArrayStorage<T, D, 1>>>> for Isometry<T, R, D>where T: SimdRealField, <T as SimdValue>::Element: SimdRealField, R: AbstractRotation<T, 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<Matrix<T, Const<D>, Const<1>, ArrayStorage<T, D, 1>>> ) -> <Isometry<T, R, D> as Mul<&'b Unit<Matrix<T, Const<D>, Const<1>, ArrayStorage<T, D, 1>>>>>::Output

Performs the * operation. Read more
source§

impl<T, R, const D: usize> Mul<Isometry<T, R, D>> for Isometry<T, R, D>where T: SimdRealField, <T as SimdValue>::Element: SimdRealField, R: AbstractRotation<T, D>,

§

type Output = Isometry<T, R, D>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<T, R, const D: usize> Mul<Matrix<T, Const<D>, Const<1>, ArrayStorage<T, D, 1>>> for Isometry<T, R, D>where T: SimdRealField, <T as SimdValue>::Element: SimdRealField, R: AbstractRotation<T, 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: Matrix<T, Const<D>, Const<1>, ArrayStorage<T, D, 1>> ) -> <Isometry<T, R, D> as Mul<Matrix<T, Const<D>, Const<1>, ArrayStorage<T, D, 1>>>>::Output

Performs the * operation. Read more
source§

impl<T, R, const D: usize> Mul<OPoint<T, Const<D>>> for Isometry<T, R, D>where T: SimdRealField, <T as SimdValue>::Element: SimdRealField, R: AbstractRotation<T, D>,

§

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

The resulting type after applying the * operator.
source§

fn mul( self, right: OPoint<T, Const<D>> ) -> <Isometry<T, R, D> as Mul<OPoint<T, Const<D>>>>::Output

Performs the * operation. Read more
source§

impl<T, const D: usize> Mul<Rotation<T, D>> for Isometry<T, Rotation<T, D>, D>where T: SimdRealField, <T as SimdValue>::Element: SimdRealField,

§

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

The resulting type after applying the * operator.
source§

fn mul( self, rhs: Rotation<T, D> ) -> <Isometry<T, Rotation<T, D>, D> as Mul<Rotation<T, D>>>::Output

Performs the * operation. Read more
source§

impl<T, R, const D: usize> Mul<Similarity<T, R, D>> for Isometry<T, R, D>where T: SimdRealField, <T as SimdValue>::Element: SimdRealField, R: AbstractRotation<T, D>,

§

type Output = Similarity<T, R, D>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<T, C, R, const D: usize> Mul<Transform<T, C, D>> for Isometry<T, R, D>where T: Scalar + Zero + One + ClosedAdd<T> + ClosedMul<T> + RealField, Const<D>: DimNameAdd<Const<1>>, C: TCategoryMul<TAffine>, R: SubsetOf<Matrix<T, <Const<D> as DimNameAdd<Const<1>>>::Output, <Const<D> as DimNameAdd<Const<1>>>::Output, <DefaultAllocator as Allocator<T, <Const<D> as DimNameAdd<Const<1>>>::Output, <Const<D> as DimNameAdd<Const<1>>>::Output>>::Buffer>>, DefaultAllocator: Allocator<T, <Const<D> as DimNameAdd<Const<1>>>::Output, <Const<D> as DimNameAdd<Const<1>>>::Output>,

§

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> ) -> <Isometry<T, R, D> as Mul<Transform<T, C, D>>>::Output

Performs the * operation. Read more
source§

impl<T, R, const D: usize> Mul<Translation<T, D>> for Isometry<T, R, D>where T: SimdRealField, <T as SimdValue>::Element: SimdRealField, R: AbstractRotation<T, D>,

§

type Output = Isometry<T, R, D>

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl<T, R, const D: usize> Mul<Unit<Matrix<T, Const<D>, Const<1>, ArrayStorage<T, D, 1>>>> for Isometry<T, R, D>where T: SimdRealField, <T as SimdValue>::Element: SimdRealField, R: AbstractRotation<T, 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<Matrix<T, Const<D>, Const<1>, ArrayStorage<T, D, 1>>> ) -> <Isometry<T, R, D> as Mul<Unit<Matrix<T, Const<D>, Const<1>, ArrayStorage<T, D, 1>>>>>::Output

Performs the * operation. Read more
source§

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

source§

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

Performs the *= operation. Read more
source§

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

source§

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

Performs the *= operation. Read more
source§

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

source§

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

Performs the *= operation. Read more
source§

impl<T, R, const D: usize> MulAssign<Isometry<T, R, D>> for Isometry<T, R, D>where T: SimdRealField, <T as SimdValue>::Element: SimdRealField, R: AbstractRotation<T, D>,

source§

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

Performs the *= operation. Read more
source§

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

source§

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

Performs the *= operation. Read more
source§

impl<T, R, const D: usize> MulAssign<Translation<T, D>> for Isometry<T, R, D>where T: SimdRealField, <T as SimdValue>::Element: SimdRealField, R: AbstractRotation<T, D>,

source§

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

Performs the *= operation. Read more
source§

impl<T, R, const D: usize> One for Isometry<T, R, D>where T: SimdRealField, R: AbstractRotation<T, D>, <T as SimdValue>::Element: SimdRealField,

source§

fn one() -> Isometry<T, R, D>

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) -> boolwhere Self: PartialEq<Self>,

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

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

source§

fn eq(&self, right: &Isometry<T, R, D>) -> 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, R, const D: usize> RelativeEq<Isometry<T, R, D>> for Isometry<T, R, D>where T: RealField, R: AbstractRotation<T, D> + RelativeEq<R, Epsilon = <T as AbsDiffEq<T>>::Epsilon>, <T as AbsDiffEq<T>>::Epsilon: Clone,

source§

fn default_max_relative( ) -> <Isometry<T, R, D> as AbsDiffEq<Isometry<T, R, D>>>::Epsilon

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

fn relative_eq( &self, other: &Isometry<T, R, D>, epsilon: <Isometry<T, R, D> as AbsDiffEq<Isometry<T, R, D>>>::Epsilon, max_relative: <Isometry<T, R, D> as AbsDiffEq<Isometry<T, R, D>>>::Epsilon ) -> bool

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

The inverse of [RelativeEq::relative_eq].
source§

impl<T, R, const D: usize> Serialize for Isometry<T, R, D>where R: Serialize, DefaultAllocator: Allocator<T, Const<D>, Const<1>>, <DefaultAllocator as Allocator<T, Const<D>, Const<1>>>::Buffer: Serialize, T: Scalar,

source§

fn serialize<__S>( &self, __serializer: __S ) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl<T, R, const D: usize> SimdValue for Isometry<T, R, D>where T: SimdRealField, <T as SimdValue>::Element: SimdRealField, R: SimdValue<SimdBool = <T as SimdValue>::SimdBool> + AbstractRotation<T, D>, <R as SimdValue>::Element: AbstractRotation<<T as SimdValue>::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: <Isometry<T, R, D> as SimdValue>::Element) -> Isometry<T, R, D>

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

fn extract(&self, i: usize) -> <Isometry<T, R, D> as SimdValue>::Element

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

unsafe fn extract_unchecked( &self, i: usize ) -> <Isometry<T, R, D> as SimdValue>::Element

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

fn replace(&mut self, i: usize, val: <Isometry<T, R, D> as SimdValue>::Element)

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

unsafe fn replace_unchecked( &mut self, i: usize, val: <Isometry<T, R, D> as SimdValue>::Element )

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

fn select( self, cond: <Isometry<T, R, D> as SimdValue>::SimdBool, other: Isometry<T, R, D> ) -> Isometry<T, R, D>

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

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

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 ) -> Selfwhere Self: Clone,

Applies a function to each lane of self paired with the corresponding lane of b. 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>) -> Isometry<T1, R1, D>

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

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>where T1: RealField, T2: RealField + SupersetOf<T1>, R: AbstractRotation<T1, D> + SubsetOf<Matrix<T1, <Const<D> as DimNameAdd<Const<1>>>::Output, <Const<D> as DimNameAdd<Const<1>>>::Output, <DefaultAllocator as Allocator<T1, <Const<D> as DimNameAdd<Const<1>>>::Output, <Const<D> as DimNameAdd<Const<1>>>::Output>>::Buffer>> + 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>>, Const<D>: DimNameAdd<Const<1>> + DimMin<Const<D>, Output = Const<D>>, DefaultAllocator: Allocator<T1, <Const<D> as DimNameAdd<Const<1>>>::Output, <Const<D> as DimNameAdd<Const<1>>>::Output> + Allocator<T2, <Const<D> as DimNameAdd<Const<1>>>::Output, <Const<D> as DimNameAdd<Const<1>>>::Output>,

source§

fn to_superset( &self ) -> 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>

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

fn is_in_subset( m: &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> ) -> bool

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

fn from_superset_unchecked( m: &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> ) -> Isometry<T1, R, D>

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

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>) -> Isometry<T1, R1, D>

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

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>where T1: RealField, T2: RealField + SupersetOf<T1>, C: SuperTCategoryOf<TAffine>, R: AbstractRotation<T1, D> + SubsetOf<Matrix<T1, <Const<D> as DimNameAdd<Const<1>>>::Output, <Const<D> as DimNameAdd<Const<1>>>::Output, <DefaultAllocator as Allocator<T1, <Const<D> as DimNameAdd<Const<1>>>::Output, <Const<D> as DimNameAdd<Const<1>>>::Output>>::Buffer>> + 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>>, Const<D>: DimNameAdd<Const<1>> + DimMin<Const<D>, Output = Const<D>>, DefaultAllocator: Allocator<T1, <Const<D> as DimNameAdd<Const<1>>>::Output, <Const<D> as DimNameAdd<Const<1>>>::Output> + Allocator<T2, <Const<D> as DimNameAdd<Const<1>>>::Output, <Const<D> as DimNameAdd<Const<1>>>::Output>,

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>) -> Isometry<T1, R, D>

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

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, R, const D: usize> UlpsEq<Isometry<T, R, D>> for Isometry<T, R, D>where T: RealField, R: AbstractRotation<T, D> + UlpsEq<R, Epsilon = <T as AbsDiffEq<T>>::Epsilon>, <T as AbsDiffEq<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: &Isometry<T, R, D>, epsilon: <Isometry<T, R, D> as AbsDiffEq<Isometry<T, R, D>>>::Epsilon, max_ulps: u32 ) -> bool

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

The inverse of [UlpsEq::ulps_eq].
source§

impl<T, R, const D: usize> Copy for Isometry<T, R, D>where T: Scalar + Copy, R: Copy, <DefaultAllocator as Allocator<T, Const<D>, Const<1>>>::Buffer: Copy,

source§

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