Isometry in nalgebra::geometry - Rust
Description: A direct isometry, i.e., a rotation followed by a translation (aka. a rigid-body motion).
Keywords: rust, rustlang, rust-lang, Isometry

# 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 translation part of type `Translation2`
- A rotation part which can either be a `UnitComplex` or a `Rotation2`.

A 3D isometry is composed of:

- A translation part of type `Translation3`
- A rotation part which can either be a `UnitQuaternion` or a `Rotation3`.

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

- From a 2D vector and/or an angle `new`, `translation`, `rotation`…
- From a 3D vector and/or an axis-angle `new`, `translation`, `rotation`…
- From a 3D eye position and target point `look_at`, `look_at_lh`, `face_towards`…
- From the translation and rotation parts `from_parts`…

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

- Transformation of a vector or a point `transform_vector`, `inverse_transform_point`…
- Inversion and in-place composition `inverse`, `append_rotation_wrt_point_mut`…
- Interpolation `lerp_slerp`…

## Conversion to a matrix

- Conversion to a matrix `to_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>

#### From the translation and rotation parts

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>where
T::Element: SimdRealField,

#### Inversion and in-place composition

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>where
T::Element: SimdRealField,

#### Transformation of a vector or a point

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>

#### Conversion to a matrix

source

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

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>>where
Const<D>: DimNameAdd<U1>,
R: SubsetOf<OMatrix<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>>,
DefaultAllocator: Allocator<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>,

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>where
T::Element: SimdRealField,

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>where
T::Element: SimdRealField,

#### Construction from a 2D vector and/or a rotation angle

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>where
T::Element: SimdRealField,

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>where
T::Element: SimdRealField,

#### Construction from a 3D vector and/or an axis-angle

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>where
T::Element: SimdRealField,

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>where
T::Element: SimdRealField,

#### Construction from a 3D eye position and target point

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 - eye`and 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>where
T::Element: SimdRealField,

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 - eye`and 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>

#### Interpolation

source

#### pub fn lerp_slerp(&self, other: &Self, t: T) -> Selfwhere
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.

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

##### Examples:

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

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

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

source§

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

source

#### pub fn lerp_slerp(&self, other: &Self, t: T) -> Selfwhere
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.

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

##### Examples:

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

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

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

source§

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

source

#### pub fn lerp_slerp(&self, other: &Self, t: T) -> Selfwhere
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) -> Selfwhere
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<Isometry<T, R, D>> for Isometry<T, R, D>where
R: AbstractRotation<T, D> + AbsDiffEq<Epsilon = T::Epsilon>,
T::Epsilon: Clone,

§

#### type Epsilon = <T as AbsDiffEq<T>>::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. Read more
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>where
T::Element: SimdRealField,

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

§

#### 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>where
T::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 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>where
T::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>) -> 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>where
T::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 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>where
T::Element: SimdRealField,

§

#### 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>where
T::Element: SimdRealField,

§

#### 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>where
T::Element: SimdRealField,

§

#### 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>where
T::Element: SimdRealField,

§

#### 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>where
T::Element: SimdRealField,

§

#### 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>where
T::Element: SimdRealField,

§

#### 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>where
T::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>) -> 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>where
T::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>) -> 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>where
T::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>) -> 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>where
T::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>) -> 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>where
T::Element: SimdRealField,

§

#### 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>where
T::Element: SimdRealField,

§

#### 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>where
T::Element: SimdRealField,

§

#### 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>where
T::Element: SimdRealField,

§

#### 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>where
T::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>) -> 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>where
T::Element: SimdRealField,
R: AbstractRotation<T, 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 Isometry<T, R, D>where
T::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>) -> 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>where
T::Element: SimdRealField,
R: AbstractRotation<T, 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>where
T::Element: SimdRealField,

§

#### 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>where
T::Element: SimdRealField,

§

#### 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>where
T::Element: SimdRealField,

§

#### 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>where
T::Element: SimdRealField,

§

#### 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>where
T::Element: SimdRealField,

§

#### 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>where
T::Element: SimdRealField,

§

#### 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>where
T::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>) -> 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>where
T::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>) -> 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>where
T::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>) -> 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>where
T::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>) -> Self::Output

Performs the `/` operation. Read more
source§

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

§

#### 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>where
T::Element: SimdRealField,

§

#### 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>where
T::Element: SimdRealField,

§

#### 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>where
T::Element: SimdRealField,

§

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

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>where
T::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: SimdRealField> DivAssign<&'b Isometry<T, Unit<Quaternion<T>>, 3>> for UnitDualQuaternion<T>where
T::Element: SimdRealField,

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>where
T: Scalar + Zero + One + ClosedAdd + ClosedMul + SimdRealField,
T::Element: SimdRealField,

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>where
T: Scalar + Zero + One + ClosedAdd + ClosedMul + SimdRealField,
T::Element: SimdRealField,

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>where
T: Scalar + Zero + One + ClosedAdd + ClosedMul + SimdRealField,
T::Element: SimdRealField,

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 Isometry<T, R, D>where
T::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: SimdRealField, R, const D: usize> DivAssign<Isometry<T, R, D>> for Similarity<T, R, D>where
T::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: SimdRealField> DivAssign<Isometry<T, Unit<Quaternion<T>>, 3>> for UnitDualQuaternion<T>where
T::Element: SimdRealField,

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>where
T: Scalar + Zero + One + ClosedAdd + ClosedMul + SimdRealField,
T::Element: SimdRealField,

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>where
T: Scalar + Zero + One + ClosedAdd + ClosedMul + SimdRealField,
T::Element: SimdRealField,

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>where
T: Scalar + Zero + One + ClosedAdd + ClosedMul + SimdRealField,
T::Element: SimdRealField,

source§

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

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

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

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

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

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>>where
Const<D>: DimNameAdd<U1>,
R: SubsetOf<OMatrix<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>>,
DefaultAllocator: Allocator<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>,

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>where
T::Element: SimdRealField,

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>where
T::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>) -> 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>where
T::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 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>where
T: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
Const<D>: DimNameAdd<U1>,
C: TCategoryMul<TAffine>,
R: SubsetOf<OMatrix<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>>,
DefaultAllocator: Allocator<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>,

§

#### 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>where
T::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 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>where
T::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>) -> 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>where
T::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 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>where
T: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
Const<D>: DimNameAdd<U1>,
C: TCategoryMul<TAffine>,
R: SubsetOf<OMatrix<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>>,
DefaultAllocator: Allocator<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>,

§

#### 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>where
T::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 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>where
T::Element: SimdRealField,

§

#### 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>where
T::Element: SimdRealField,

§

#### 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>where
T::Element: SimdRealField,

§

#### 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>where
T::Element: SimdRealField,

§

#### 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>where
T::Element: SimdRealField,

§

#### 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>where
T::Element: SimdRealField,

§

#### 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>where
T::Element: SimdRealField,

§

#### 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>where
T::Element: SimdRealField,

§

#### 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>where
T::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 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>where
T::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 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>where
T::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 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>where
T::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 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>where
T::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>) -> 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>where
T::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>) -> 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>where
T::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>) -> 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>where
T::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>) -> 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>where
T: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
Const<D>: DimNameAdd<U1>,
C: TCategoryMul<TAffine>,
R: SubsetOf<OMatrix<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>>,
DefaultAllocator: Allocator<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>,

§

#### 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>where
T: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
Const<D>: DimNameAdd<U1>,
C: TCategoryMul<TAffine>,
R: SubsetOf<OMatrix<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>>,
DefaultAllocator: Allocator<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>,

§

#### 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>where
T::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>) -> 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>where
T::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>) -> 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>where
T::Element: SimdRealField,

§

#### 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>where
T::Element: SimdRealField,

§

#### 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>where
T::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<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>where
T::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<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>where
T::Element: SimdRealField,

§

#### 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>where
T::Element: SimdRealField,

§

#### 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>where
T::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>) -> 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>where
T::Element: SimdRealField,
R: AbstractRotation<T, 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>where
T: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
Const<D>: DimNameAdd<U1>,
C: TCategoryMul<TAffine>,
R: SubsetOf<OMatrix<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>>,
DefaultAllocator: Allocator<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>,

§

#### 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>where
T::Element: SimdRealField,
R: AbstractRotation<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 Isometry<T, R, D>where
T::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>) -> 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>where
T::Element: SimdRealField,
R: AbstractRotation<T, 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>where
T: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
Const<D>: DimNameAdd<U1>,
C: TCategoryMul<TAffine>,
R: SubsetOf<OMatrix<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>>,
DefaultAllocator: Allocator<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>,

§

#### 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>where
T::Element: SimdRealField,
R: AbstractRotation<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>where
T::Element: SimdRealField,

§

#### 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>where
T::Element: SimdRealField,

§

#### 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>where
T::Element: SimdRealField,

§

#### 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>where
T::Element: SimdRealField,

§

#### 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>where
T::Element: SimdRealField,

§

#### 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>where
T::Element: SimdRealField,

§

#### 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>where
T::Element: SimdRealField,

§

#### 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>where
T::Element: SimdRealField,

§

#### 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>where
T::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: 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>where
T::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: 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>where
T::Element: SimdRealField,
R: AbstractRotation<T, 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>where
T::Element: SimdRealField,
R: AbstractRotation<T, 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>where
T::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>) -> 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>where
T::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>) -> 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>where
T::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>) -> 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>where
T::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>) -> 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>where
T: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
Const<D>: DimNameAdd<U1>,
C: TCategoryMul<TAffine>,
R: SubsetOf<OMatrix<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>>,
DefaultAllocator: Allocator<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>,

§

#### 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>where
T: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
Const<D>: DimNameAdd<U1>,
C: TCategoryMul<TAffine>,
R: SubsetOf<OMatrix<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>>,
DefaultAllocator: Allocator<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>,

§

#### 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>where
T::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>) -> Self::Output

Performs the `*` operation. Read more
source§

### impl<T: SimdRealField, R, const D: usize> Mul<Translation<T, D>> for Isometry<T, R, D>where
T::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>) -> Self::Output

Performs the `*` operation. Read more
source§

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

§

#### 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>where
T::Element: SimdRealField,

§

#### 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>where
T::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<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>where
T::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<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>where
T::Element: SimdRealField,

§

#### 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>where
T::Element: SimdRealField,

§

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

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>where
T::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, C, R, const D: usize> MulAssign<&'b Isometry<T, R, D>> for Transform<T, C, D>where
T: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
Const<D>: DimNameAdd<U1>,
C: TCategory,
R: SubsetOf<OMatrix<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>>,
DefaultAllocator: Allocator<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>,

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>where
T::Element: SimdRealField,

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>where
T: Scalar + Zero + One + ClosedAdd + ClosedMul + SimdRealField,
T::Element: SimdRealField,

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>where
T::Element: SimdRealField,
R: AbstractRotation<T, 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>where
T: Scalar + Zero + One + ClosedAdd + ClosedMul + SimdRealField,
T::Element: SimdRealField,

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>where
T: Scalar + Zero + One + ClosedAdd + ClosedMul + SimdRealField,
T::Element: SimdRealField,

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 Isometry<T, R, D>where
T::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: SimdRealField, R, const D: usize> MulAssign<Isometry<T, R, D>> for Similarity<T, R, D>where
T::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, C, R, const D: usize> MulAssign<Isometry<T, R, D>> for Transform<T, C, D>where
T: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
Const<D>: DimNameAdd<U1>,
C: TCategory,
R: SubsetOf<OMatrix<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>>,
DefaultAllocator: Allocator<T, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>,

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>where
T::Element: SimdRealField,

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>where
T: Scalar + Zero + One + ClosedAdd + ClosedMul + SimdRealField,
T::Element: SimdRealField,

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>where
T::Element: SimdRealField,
R: AbstractRotation<T, 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>where
T: Scalar + Zero + One + ClosedAdd + ClosedMul + SimdRealField,
T::Element: SimdRealField,

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>where
T: Scalar + Zero + One + ClosedAdd + ClosedMul + SimdRealField,
T::Element: SimdRealField,

source§

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

Performs the `*=` operation. Read more
source§

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

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

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

### impl<T: SimdRealField, R, const D: usize> PartialEq<Isometry<T, R, D>> 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 `==`. Read more
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. Read more
source§

### impl<T: RealField, R, const D: usize> RelativeEq<Isometry<T, R, D>> for Isometry<T, R, D>where
R: AbstractRotation<T, D> + RelativeEq<Epsilon = T::Epsilon>,
T::Epsilon: 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) -> Selfwhere
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
) -> Selfwhere
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>where
T1: RealField,
T2: RealField + SupersetOf<T1>,
R: AbstractRotation<T1, D> + SubsetOf<OMatrix<T1, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>> + SubsetOf<OMatrix<T2, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>>,
Const<D>: DimNameAdd<U1> + DimMin<Const<D>, Output = Const<D>>,
DefaultAllocator: Allocator<T1, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>> + Allocator<T2, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>> + Allocator<T2, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>,

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

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<Isometry<T, R, D>> 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>where
R: RefUnwindSafe,
T: RefUnwindSafe,

§

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

§

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

§

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

§

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

## Blanket Implementations§

source§

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

source§

#### fn type_id(&self) -> TypeId

Gets the `TypeId` of `self`. Read more
source§

### impl<T> Borrow<T> for Twhere
T: ?Sized,

const: unstable · source§

#### fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

### impl<T> BorrowMut<T> for Twhere
T: ?Sized,

const: unstable · source§

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

Mutably borrows from an owned value. Read more
source§

### impl<T> From<T> for T

const: unstable · source§

#### fn from(t: T) -> T

Returns the argument unchanged.

source§

### impl<T, U> Into<U> for Twhere
U: From<T>,

const: unstable · 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<T> for T

§

#### type Output = T

Should always be `Self`
source§

### impl<SS, SP> SupersetOf<SS> for SPwhere
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 Twhere
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 Twhere
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 Twhere
U: Into<T>,

§

#### type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
source§

### impl<T, U> TryInto<U> for Twhere
U: TryFrom<T>,

§

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

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
source§

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

source§

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