pub type Isometry2<T> = Isometry<T, UnitComplex<T>, 2>;
Expand description
A 2-dimensional direct isometry using a unit complex number for its rotational part.
Because this is an alias, not all its methods are listed here. See the Isometry
type too.
Also known as a 2D rigid-body motion, or as an element of SE(2).
Aliased Type§
struct Isometry2<T> {
pub rotation: Unit<Complex<T>>,
pub translation: Translation<T, 2>,
}
Fields§
§rotation: Unit<Complex<T>>
The pure rotational part of this isometry.
translation: Translation<T, 2>
The pure translational part of this isometry.
Implementations§
Source§impl<T: SimdRealField> Isometry2<T>where
T::Element: SimdRealField,
impl<T: SimdRealField> Isometry2<T>where
T::Element: SimdRealField,
Sourcepub fn new(translation: Vector2<T>, angle: T) -> Self
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));
Sourcepub fn translation(x: T, y: T) -> Self
pub fn translation(x: T, y: T) -> Self
Creates a new isometry from the given translation coordinates.
Source§impl<T: SimdRealField> Isometry2<T>
impl<T: SimdRealField> Isometry2<T>
Sourcepub fn lerp_slerp(&self, other: &Self, t: T) -> Selfwhere
T: RealField,
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: Scalar, R: AbstractRotation<T, D>, const D: usize> Isometry<T, R, D>
impl<T: Scalar, R: AbstractRotation<T, D>, const D: usize> Isometry<T, R, D>
§From the translation and rotation parts
Sourcepub fn from_parts(translation: Translation<T, D>, rotation: R) -> Self
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,
impl<T: SimdRealField, R: AbstractRotation<T, D>, const D: usize> Isometry<T, R, D>where
T::Element: SimdRealField,
§Inversion and in-place composition
Sourcepub fn inverse(&self) -> Self
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);
Sourcepub fn inverse_mut(&mut self)
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);
Sourcepub fn inv_mul(&self, rhs: &Isometry<T, R, D>) -> Self
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));
Sourcepub fn append_translation_mut(&mut self, t: &Translation<T, D>)
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));
Sourcepub fn append_rotation_mut(&mut self, r: &R)
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);
Sourcepub fn append_rotation_wrt_point_mut(&mut self, r: &R, p: &Point<T, D>)
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);
Sourcepub fn append_rotation_wrt_center_mut(&mut self, r: &R)
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,
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
Sourcepub fn transform_point(&self, pt: &Point<T, D>) -> Point<T, D>
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);
Sourcepub fn transform_vector(&self, v: &SVector<T, D>) -> SVector<T, D>
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);
Sourcepub fn inverse_transform_point(&self, pt: &Point<T, D>) -> Point<T, D>
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);
Sourcepub fn inverse_transform_vector(&self, v: &SVector<T, D>) -> SVector<T, D>
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);
Sourcepub fn inverse_transform_unit_vector(
&self,
v: &Unit<SVector<T, D>>,
) -> Unit<SVector<T, D>>
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>
impl<T: SimdRealField, R, const D: usize> Isometry<T, R, D>
§Conversion to a matrix
Sourcepub 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>>,
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);
Sourcepub 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>>,
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,
impl<T: SimdRealField, R: AbstractRotation<T, D>, const D: usize> Isometry<T, R, D>where
T::Element: SimdRealField,
Sourcepub fn identity() -> Self
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);
Sourcepub fn rotation_wrt_point(r: R, p: Point<T, D>) -> Self
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);
Trait Implementations
Source§impl<T: RealField, R, const D: usize> AbsDiffEq for Isometry<T, R, D>
impl<T: RealField, R, const D: usize> AbsDiffEq for Isometry<T, R, D>
Source§fn default_epsilon() -> Self::Epsilon
fn default_epsilon() -> Self::Epsilon
Source§fn abs_diff_eq(&self, other: &Self, epsilon: Self::Epsilon) -> bool
fn abs_diff_eq(&self, other: &Self, epsilon: Self::Epsilon) -> bool
Source§fn abs_diff_ne(&self, other: &Rhs, epsilon: Self::Epsilon) -> bool
fn abs_diff_ne(&self, other: &Rhs, epsilon: Self::Epsilon) -> bool
AbsDiffEq::abs_diff_eq
.Source§impl<T: SimdRealField, R: AbstractRotation<T, D>, const D: usize> Default for Isometry<T, R, D>where
T::Element: SimdRealField,
impl<T: SimdRealField, R: AbstractRotation<T, D>, const D: usize> Default for Isometry<T, R, D>where
T::Element: SimdRealField,
Source§impl<'de, T, R, const D: usize> Deserialize<'de> for Isometry<T, R, D>where
R: Deserialize<'de>,
DefaultAllocator: Allocator<T, Const<D>>,
Owned<T, Const<D>>: Deserialize<'de>,
T: Scalar,
impl<'de, T, R, const D: usize> Deserialize<'de> for Isometry<T, R, D>where
R: Deserialize<'de>,
DefaultAllocator: Allocator<T, Const<D>>,
Owned<T, Const<D>>: Deserialize<'de>,
T: Scalar,
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl<T: RealField + Display, R, const D: usize> Display for Isometry<T, R, D>where
R: Display,
impl<T: RealField + Display, R, const D: usize> Display for Isometry<T, R, D>where
R: Display,
Source§impl<'b, T: SimdRealField, R, const D: usize> Div<&'b Isometry<T, R, D>> for Isometry<T, R, D>
impl<'b, T: SimdRealField, R, const D: usize> Div<&'b Isometry<T, R, D>> for Isometry<T, R, D>
Source§impl<'b, T: SimdRealField, R, const D: usize> Div<&'b Similarity<T, R, D>> for Isometry<T, R, D>
impl<'b, T: SimdRealField, R, const D: usize> Div<&'b Similarity<T, R, D>> for Isometry<T, R, D>
Source§type Output = Similarity<T, R, D>
type Output = Similarity<T, R, D>
/
operator.Source§impl<'b, T: SimdRealField> Div<&'b Unit<Complex<T>>> for Isometry<T, UnitComplex<T>, 2>where
T::Element: SimdRealField,
impl<'b, T: SimdRealField> Div<&'b Unit<Complex<T>>> for Isometry<T, UnitComplex<T>, 2>where
T::Element: SimdRealField,
Source§impl<T: SimdRealField, R, const D: usize> Div<Similarity<T, R, D>> for Isometry<T, R, D>
impl<T: SimdRealField, R, const D: usize> Div<Similarity<T, R, D>> for Isometry<T, R, D>
Source§type Output = Similarity<T, R, D>
type Output = Similarity<T, R, D>
/
operator.Source§impl<T: SimdRealField> Div<Unit<Complex<T>>> for Isometry<T, UnitComplex<T>, 2>where
T::Element: SimdRealField,
impl<T: SimdRealField> Div<Unit<Complex<T>>> for Isometry<T, UnitComplex<T>, 2>where
T::Element: SimdRealField,
Source§impl<'b, T: SimdRealField, R, const D: usize> DivAssign<&'b Isometry<T, R, D>> for Isometry<T, R, D>
impl<'b, T: SimdRealField, R, const D: usize> DivAssign<&'b Isometry<T, R, D>> for Isometry<T, R, D>
Source§fn div_assign(&mut self, rhs: &'b Isometry<T, R, D>)
fn div_assign(&mut self, rhs: &'b Isometry<T, R, D>)
/=
operation. Read moreSource§impl<'b, T> DivAssign<&'b Unit<Complex<T>>> for Isometry<T, UnitComplex<T>, 2>
impl<'b, T> DivAssign<&'b Unit<Complex<T>>> for Isometry<T, UnitComplex<T>, 2>
Source§fn div_assign(&mut self, rhs: &'b UnitComplex<T>)
fn div_assign(&mut self, rhs: &'b UnitComplex<T>)
/=
operation. Read moreSource§impl<T> DivAssign<Unit<Complex<T>>> for Isometry<T, UnitComplex<T>, 2>
impl<T> DivAssign<Unit<Complex<T>>> for Isometry<T, UnitComplex<T>, 2>
Source§fn div_assign(&mut self, rhs: UnitComplex<T>)
fn div_assign(&mut self, rhs: UnitComplex<T>)
/=
operation. Read moreSource§impl<T: SimdRealField, R, const D: usize> DivAssign for Isometry<T, R, D>
impl<T: SimdRealField, R, const D: usize> DivAssign for Isometry<T, R, D>
Source§fn div_assign(&mut self, rhs: Isometry<T, R, D>)
fn div_assign(&mut self, rhs: Isometry<T, R, D>)
/=
operation. Read moreSource§impl<T, R, const D: usize> From<[Isometry<<T as SimdValue>::Element, <R as SimdValue>::Element, D>; 16]> for Isometry<T, R, D>
impl<T, R, const D: usize> From<[Isometry<<T as SimdValue>::Element, <R as SimdValue>::Element, D>; 16]> for Isometry<T, R, D>
Source§impl<T, R, const D: usize> From<[Isometry<<T as SimdValue>::Element, <R as SimdValue>::Element, D>; 2]> for Isometry<T, R, D>
impl<T, R, const D: usize> From<[Isometry<<T as SimdValue>::Element, <R as SimdValue>::Element, D>; 2]> for Isometry<T, R, D>
Source§impl<T, R, const D: usize> From<[Isometry<<T as SimdValue>::Element, <R as SimdValue>::Element, D>; 4]> for Isometry<T, R, D>
impl<T, R, const D: usize> From<[Isometry<<T as SimdValue>::Element, <R as SimdValue>::Element, D>; 4]> for Isometry<T, R, D>
Source§impl<T, R, const D: usize> From<[Isometry<<T as SimdValue>::Element, <R as SimdValue>::Element, D>; 8]> for Isometry<T, R, D>
impl<T, R, const D: usize> From<[Isometry<<T as SimdValue>::Element, <R as SimdValue>::Element, D>; 8]> for Isometry<T, R, D>
Source§impl<T: SimdRealField, R, const D: usize> From<[T; D]> for Isometry<T, R, D>where
R: AbstractRotation<T, D>,
impl<T: SimdRealField, R, const D: usize> From<[T; D]> for Isometry<T, R, D>where
R: AbstractRotation<T, D>,
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>,
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§impl<T: SimdRealField, R, const D: usize> From<OPoint<T, Const<D>>> for Isometry<T, R, D>where
R: AbstractRotation<T, D>,
impl<T: SimdRealField, R, const D: usize> From<OPoint<T, Const<D>>> for Isometry<T, R, D>where
R: AbstractRotation<T, D>,
Source§impl<T: SimdRealField, R: AbstractRotation<T, D>, const D: usize> From<Translation<T, D>> for Isometry<T, R, D>
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
fn from(tra: Translation<T, D>) -> Self
Source§impl<'b, T: SimdRealField, R, const D: usize> Mul<&'b Isometry<T, R, D>> for Isometry<T, R, D>
impl<'b, T: SimdRealField, R, const D: usize> Mul<&'b Isometry<T, R, D>> for Isometry<T, R, D>
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>
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>
Source§impl<'b, T: SimdRealField, R, const D: usize> Mul<&'b OPoint<T, Const<D>>> for Isometry<T, R, D>
impl<'b, T: SimdRealField, R, const D: usize> Mul<&'b OPoint<T, Const<D>>> for Isometry<T, R, D>
Source§impl<'b, T: SimdRealField, R, const D: usize> Mul<&'b Similarity<T, R, D>> for Isometry<T, R, D>
impl<'b, T: SimdRealField, R, const D: usize> Mul<&'b Similarity<T, R, D>> for Isometry<T, R, D>
Source§type Output = Similarity<T, R, D>
type Output = Similarity<T, R, D>
*
operator.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>>,
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>>,
Source§impl<'b, T: SimdRealField, R, const D: usize> Mul<&'b Translation<T, D>> for Isometry<T, R, D>
impl<'b, T: SimdRealField, R, const D: usize> Mul<&'b Translation<T, D>> for Isometry<T, R, D>
Source§impl<'b, T: SimdRealField> Mul<&'b Unit<Complex<T>>> for Isometry<T, UnitComplex<T>, 2>where
T::Element: SimdRealField,
impl<'b, T: SimdRealField> Mul<&'b Unit<Complex<T>>> for Isometry<T, UnitComplex<T>, 2>where
T::Element: SimdRealField,
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>
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>
Source§impl<T: SimdRealField, R, const D: usize> Mul<Matrix<T, Const<D>, Const<1>, ArrayStorage<T, D, 1>>> for Isometry<T, R, D>
impl<T: SimdRealField, R, const D: usize> Mul<Matrix<T, Const<D>, Const<1>, ArrayStorage<T, D, 1>>> for Isometry<T, R, D>
Source§impl<T: SimdRealField, R, const D: usize> Mul<Similarity<T, R, D>> for Isometry<T, R, D>
impl<T: SimdRealField, R, const D: usize> Mul<Similarity<T, R, D>> for Isometry<T, R, D>
Source§type Output = Similarity<T, R, D>
type Output = Similarity<T, R, D>
*
operator.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>>,
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>>,
Source§impl<T: SimdRealField, R, const D: usize> Mul<Translation<T, D>> for Isometry<T, R, D>
impl<T: SimdRealField, R, const D: usize> Mul<Translation<T, D>> for Isometry<T, R, D>
Source§impl<T: SimdRealField> Mul<Unit<Complex<T>>> for Isometry<T, UnitComplex<T>, 2>where
T::Element: SimdRealField,
impl<T: SimdRealField> Mul<Unit<Complex<T>>> for Isometry<T, UnitComplex<T>, 2>where
T::Element: SimdRealField,
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>
impl<T: SimdRealField, R, const D: usize> Mul<Unit<Matrix<T, Const<D>, Const<1>, ArrayStorage<T, D, 1>>>> for Isometry<T, R, D>
Source§impl<'b, T: SimdRealField, R, const D: usize> MulAssign<&'b Isometry<T, R, D>> for Isometry<T, R, D>
impl<'b, T: SimdRealField, R, const D: usize> MulAssign<&'b Isometry<T, R, D>> for Isometry<T, R, D>
Source§fn mul_assign(&mut self, rhs: &'b Isometry<T, R, D>)
fn mul_assign(&mut self, rhs: &'b Isometry<T, R, D>)
*=
operation. Read moreSource§impl<'b, T: SimdRealField, R, const D: usize> MulAssign<&'b Translation<T, D>> for Isometry<T, R, D>
impl<'b, T: SimdRealField, R, const D: usize> MulAssign<&'b Translation<T, D>> for Isometry<T, R, D>
Source§fn mul_assign(&mut self, rhs: &'b Translation<T, D>)
fn mul_assign(&mut self, rhs: &'b Translation<T, D>)
*=
operation. Read moreSource§impl<'b, T> MulAssign<&'b Unit<Complex<T>>> for Isometry<T, UnitComplex<T>, 2>
impl<'b, T> MulAssign<&'b Unit<Complex<T>>> for Isometry<T, UnitComplex<T>, 2>
Source§fn mul_assign(&mut self, rhs: &'b UnitComplex<T>)
fn mul_assign(&mut self, rhs: &'b UnitComplex<T>)
*=
operation. Read moreSource§impl<T: SimdRealField, R, const D: usize> MulAssign<Translation<T, D>> for Isometry<T, R, D>
impl<T: SimdRealField, R, const D: usize> MulAssign<Translation<T, D>> for Isometry<T, R, D>
Source§fn mul_assign(&mut self, rhs: Translation<T, D>)
fn mul_assign(&mut self, rhs: Translation<T, D>)
*=
operation. Read moreSource§impl<T> MulAssign<Unit<Complex<T>>> for Isometry<T, UnitComplex<T>, 2>
impl<T> MulAssign<Unit<Complex<T>>> for Isometry<T, UnitComplex<T>, 2>
Source§fn mul_assign(&mut self, rhs: UnitComplex<T>)
fn mul_assign(&mut self, rhs: UnitComplex<T>)
*=
operation. Read moreSource§impl<T: SimdRealField, R, const D: usize> MulAssign for Isometry<T, R, D>
impl<T: SimdRealField, R, const D: usize> MulAssign for Isometry<T, R, D>
Source§fn mul_assign(&mut self, rhs: Isometry<T, R, D>)
fn mul_assign(&mut self, rhs: Isometry<T, R, D>)
*=
operation. Read moreSource§impl<T: SimdRealField, R: AbstractRotation<T, D>, const D: usize> One for Isometry<T, R, D>where
T::Element: SimdRealField,
impl<T: SimdRealField, R: AbstractRotation<T, D>, const D: usize> One for Isometry<T, R, D>where
T::Element: SimdRealField,
Source§impl<T: SimdRealField, R, const D: usize> PartialEq for Isometry<T, R, D>where
R: AbstractRotation<T, D> + PartialEq,
impl<T: SimdRealField, R, const D: usize> PartialEq for Isometry<T, R, D>where
R: AbstractRotation<T, D> + PartialEq,
Source§impl<T: RealField, R, const D: usize> RelativeEq for Isometry<T, R, D>
impl<T: RealField, R, const D: usize> RelativeEq for Isometry<T, R, D>
Source§fn default_max_relative() -> Self::Epsilon
fn default_max_relative() -> Self::Epsilon
Source§fn relative_eq(
&self,
other: &Self,
epsilon: Self::Epsilon,
max_relative: Self::Epsilon,
) -> bool
fn relative_eq( &self, other: &Self, epsilon: Self::Epsilon, max_relative: Self::Epsilon, ) -> bool
Source§fn relative_ne(
&self,
other: &Rhs,
epsilon: Self::Epsilon,
max_relative: Self::Epsilon,
) -> bool
fn relative_ne( &self, other: &Rhs, epsilon: Self::Epsilon, max_relative: Self::Epsilon, ) -> bool
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>,
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>,
Source§type Element = Isometry<<T as SimdValue>::Element, <R as SimdValue>::Element, D>
type Element = Isometry<<T as SimdValue>::Element, <R as SimdValue>::Element, D>
Source§type SimdBool = <T as SimdValue>::SimdBool
type SimdBool = <T as SimdValue>::SimdBool
self
.Source§unsafe fn extract_unchecked(&self, i: usize) -> Self::Element
unsafe fn extract_unchecked(&self, i: usize) -> Self::Element
self
without bound-checking.Source§unsafe fn replace_unchecked(&mut self, i: usize, val: Self::Element)
unsafe fn replace_unchecked(&mut self, i: usize, val: Self::Element)
self
by val
without bound-checking.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>,
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>
fn to_superset(&self) -> Isometry<T2, R2, D>
self
to the equivalent element of its superset.Source§fn is_in_subset(iso: &Isometry<T2, R2, D>) -> bool
fn is_in_subset(iso: &Isometry<T2, R2, D>) -> bool
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
fn from_superset_unchecked(iso: &Isometry<T2, R2, D>) -> Self
self.to_superset
but without any property checks. Always succeeds.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>>,
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>>,
Source§fn to_superset(
&self,
) -> OMatrix<T2, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>
fn to_superset( &self, ) -> OMatrix<T2, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>
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
fn is_in_subset( m: &OMatrix<T2, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>, ) -> bool
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
fn from_superset_unchecked( m: &OMatrix<T2, DimNameSum<Const<D>, U1>, DimNameSum<Const<D>, U1>>, ) -> Self
self.to_superset
but without any property checks. Always succeeds.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>,
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>
fn to_superset(&self) -> Similarity<T2, R2, D>
self
to the equivalent element of its superset.Source§fn is_in_subset(sim: &Similarity<T2, R2, D>) -> bool
fn is_in_subset(sim: &Similarity<T2, R2, D>) -> bool
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
fn from_superset_unchecked(sim: &Similarity<T2, R2, D>) -> Self
self.to_superset
but without any property checks. Always succeeds.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>>,
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>>,
Source§fn to_superset(&self) -> Transform<T2, C, D>
fn to_superset(&self) -> Transform<T2, C, D>
self
to the equivalent element of its superset.Source§fn is_in_subset(t: &Transform<T2, C, D>) -> bool
fn is_in_subset(t: &Transform<T2, C, D>) -> bool
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
fn from_superset_unchecked(t: &Transform<T2, C, D>) -> Self
self.to_superset
but without any property checks. Always succeeds.