Struct heron::rapier_plugin::rapier2d::prelude::nalgebra::DualQuaternion [−][src]
#[repr(C)]pub struct DualQuaternion<T> {
pub real: Quaternion<T>,
pub dual: Quaternion<T>,
}
Expand description
A dual quaternion.
Indexing
DualQuaternions
are stored as [..real, ..dual].
Both of the quaternion components are laid out in i, j, k, w
order.
let real = Quaternion::new(1.0, 2.0, 3.0, 4.0);
let dual = Quaternion::new(5.0, 6.0, 7.0, 8.0);
let dq = DualQuaternion::from_real_and_dual(real, dual);
assert_eq!(dq[0], 2.0);
assert_eq!(dq[1], 3.0);
assert_eq!(dq[4], 6.0);
assert_eq!(dq[7], 5.0);
NOTE: As of December 2020, dual quaternion support is a work in progress. If a feature that you need is missing, feel free to open an issue or a PR. See https://github.com/dimforge/nalgebra/issues/487
Fields
real: Quaternion<T>
The real component of the quaternion
dual: Quaternion<T>
The dual component of the quaternion
Implementations
Normalizes this quaternion.
Example
let real = Quaternion::new(1.0, 2.0, 3.0, 4.0);
let dual = Quaternion::new(5.0, 6.0, 7.0, 8.0);
let dq = DualQuaternion::from_real_and_dual(real, dual);
let dq_normalized = dq.normalize();
relative_eq!(dq_normalized.real.norm(), 1.0);
Normalizes this quaternion.
Example
let real = Quaternion::new(1.0, 2.0, 3.0, 4.0);
let dual = Quaternion::new(5.0, 6.0, 7.0, 8.0);
let mut dq = DualQuaternion::from_real_and_dual(real, dual);
dq.normalize_mut();
relative_eq!(dq.real.norm(), 1.0);
The conjugate of this dual quaternion, containing the conjugate of the real and imaginary parts..
Example
let real = Quaternion::new(1.0, 2.0, 3.0, 4.0);
let dual = Quaternion::new(5.0, 6.0, 7.0, 8.0);
let dq = DualQuaternion::from_real_and_dual(real, dual);
let conj = dq.conjugate();
assert!(conj.real.i == -2.0 && conj.real.j == -3.0 && conj.real.k == -4.0);
assert!(conj.real.w == 1.0);
assert!(conj.dual.i == -6.0 && conj.dual.j == -7.0 && conj.dual.k == -8.0);
assert!(conj.dual.w == 5.0);
Replaces this quaternion by its conjugate.
Example
let real = Quaternion::new(1.0, 2.0, 3.0, 4.0);
let dual = Quaternion::new(5.0, 6.0, 7.0, 8.0);
let mut dq = DualQuaternion::from_real_and_dual(real, dual);
dq.conjugate_mut();
assert!(dq.real.i == -2.0 && dq.real.j == -3.0 && dq.real.k == -4.0);
assert!(dq.real.w == 1.0);
assert!(dq.dual.i == -6.0 && dq.dual.j == -7.0 && dq.dual.k == -8.0);
assert!(dq.dual.w == 5.0);
Inverts this dual quaternion if it is not zero.
Example
let real = Quaternion::new(1.0, 2.0, 3.0, 4.0);
let dual = Quaternion::new(5.0, 6.0, 7.0, 8.0);
let dq = DualQuaternion::from_real_and_dual(real, dual);
let inverse = dq.try_inverse();
assert!(inverse.is_some());
assert_relative_eq!(inverse.unwrap() * dq, DualQuaternion::identity());
//Non-invertible case
let zero = Quaternion::new(0.0, 0.0, 0.0, 0.0);
let dq = DualQuaternion::from_real_and_dual(zero, zero);
let inverse = dq.try_inverse();
assert!(inverse.is_none());
Inverts this dual quaternion in-place if it is not zero.
Example
let real = Quaternion::new(1.0, 2.0, 3.0, 4.0);
let dual = Quaternion::new(5.0, 6.0, 7.0, 8.0);
let dq = DualQuaternion::from_real_and_dual(real, dual);
let mut dq_inverse = dq;
dq_inverse.try_inverse_mut();
assert_relative_eq!(dq_inverse * dq, DualQuaternion::identity());
//Non-invertible case
let zero = Quaternion::new(0.0, 0.0, 0.0, 0.0);
let mut dq = DualQuaternion::from_real_and_dual(zero, zero);
assert!(!dq.try_inverse_mut());
Linear interpolation between two dual quaternions.
Computes self * (1 - t) + other * t
.
Example
let dq1 = DualQuaternion::from_real_and_dual(
Quaternion::new(1.0, 0.0, 0.0, 4.0),
Quaternion::new(0.0, 2.0, 0.0, 0.0)
);
let dq2 = DualQuaternion::from_real_and_dual(
Quaternion::new(2.0, 0.0, 1.0, 0.0),
Quaternion::new(0.0, 2.0, 0.0, 0.0)
);
assert_eq!(dq1.lerp(&dq2, 0.25), DualQuaternion::from_real_and_dual(
Quaternion::new(1.25, 0.0, 0.25, 3.0),
Quaternion::new(0.0, 2.0, 0.0, 0.0)
));
Creates a dual quaternion from its rotation and translation components.
Example
let rot = Quaternion::new(1.0, 2.0, 3.0, 4.0);
let trans = Quaternion::new(5.0, 6.0, 7.0, 8.0);
let dq = DualQuaternion::from_real_and_dual(rot, trans);
assert_eq!(dq.real.w, 1.0);
The dual quaternion multiplicative identity.
Example
let dq1 = DualQuaternion::identity();
let dq2 = DualQuaternion::from_real_and_dual(
Quaternion::new(1.,2.,3.,4.),
Quaternion::new(5.,6.,7.,8.)
);
assert_eq!(dq1 * dq2, dq2);
assert_eq!(dq2 * dq1, dq2);
pub fn cast<To>(self) -> DualQuaternion<To> where
To: Scalar,
DualQuaternion<To>: SupersetOf<DualQuaternion<T>>,
pub fn cast<To>(self) -> DualQuaternion<To> where
To: Scalar,
DualQuaternion<To>: SupersetOf<DualQuaternion<T>>,
Cast the components of self
to another type.
Example
let q = DualQuaternion::from_real(Quaternion::new(1.0f64, 2.0, 3.0, 4.0));
let q2 = q.cast::<f32>();
assert_eq!(q2, DualQuaternion::from_real(Quaternion::new(1.0f32, 2.0, 3.0, 4.0)));
Creates a dual quaternion from only its real part, with no translation component.
Example
let rot = Quaternion::new(1.0, 2.0, 3.0, 4.0);
let dq = DualQuaternion::from_real(rot);
assert_eq!(dq.real.w, 1.0);
assert_eq!(dq.dual.w, 0.0);
Trait Implementations
impl<T> AbsDiffEq<DualQuaternion<T>> for DualQuaternion<T> where
T: RealField<Epsilon = T> + AbsDiffEq<T>,
impl<T> AbsDiffEq<DualQuaternion<T>> for DualQuaternion<T> where
T: RealField<Epsilon = T> + AbsDiffEq<T>,
type Epsilon = T
type Epsilon = T
Used for specifying relative comparisons.
The default tolerance to use when testing values that are close together. Read more
pub fn abs_diff_eq(
&self,
other: &DualQuaternion<T>,
epsilon: <DualQuaternion<T> as AbsDiffEq<DualQuaternion<T>>>::Epsilon
) -> bool
pub fn abs_diff_eq(
&self,
other: &DualQuaternion<T>,
epsilon: <DualQuaternion<T> as AbsDiffEq<DualQuaternion<T>>>::Epsilon
) -> bool
A test for equality that uses the absolute difference to compute the approximate equality of two numbers. Read more
fn abs_diff_ne(&self, other: &Rhs, epsilon: Self::Epsilon) -> bool
fn abs_diff_ne(&self, other: &Rhs, epsilon: Self::Epsilon) -> bool
The inverse of [AbsDiffEq::abs_diff_eq
].
impl<'b, T> Add<&'b DualQuaternion<T>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<'b, T> Add<&'b DualQuaternion<T>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
type Output = DualQuaternion<T>
type Output = DualQuaternion<T>
The resulting type after applying the +
operator.
pub fn add(
self,
rhs: &'b DualQuaternion<T>
) -> <DualQuaternion<T> as Add<&'b DualQuaternion<T>>>::Output
pub fn add(
self,
rhs: &'b DualQuaternion<T>
) -> <DualQuaternion<T> as Add<&'b DualQuaternion<T>>>::Output
Performs the +
operation. Read more
impl<'a, 'b, T> Add<&'b DualQuaternion<T>> for &'a DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<'a, 'b, T> Add<&'b DualQuaternion<T>> for &'a DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
type Output = DualQuaternion<T>
type Output = DualQuaternion<T>
The resulting type after applying the +
operator.
pub fn add(
self,
rhs: &'b DualQuaternion<T>
) -> <&'a DualQuaternion<T> as Add<&'b DualQuaternion<T>>>::Output
pub fn add(
self,
rhs: &'b DualQuaternion<T>
) -> <&'a DualQuaternion<T> as Add<&'b DualQuaternion<T>>>::Output
Performs the +
operation. Read more
impl<'a, T> Add<DualQuaternion<T>> for &'a DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<'a, T> Add<DualQuaternion<T>> for &'a DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
type Output = DualQuaternion<T>
type Output = DualQuaternion<T>
The resulting type after applying the +
operator.
pub fn add(
self,
rhs: DualQuaternion<T>
) -> <&'a DualQuaternion<T> as Add<DualQuaternion<T>>>::Output
pub fn add(
self,
rhs: DualQuaternion<T>
) -> <&'a DualQuaternion<T> as Add<DualQuaternion<T>>>::Output
Performs the +
operation. Read more
impl<T> Add<DualQuaternion<T>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<T> Add<DualQuaternion<T>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
type Output = DualQuaternion<T>
type Output = DualQuaternion<T>
The resulting type after applying the +
operator.
pub fn add(
self,
rhs: DualQuaternion<T>
) -> <DualQuaternion<T> as Add<DualQuaternion<T>>>::Output
pub fn add(
self,
rhs: DualQuaternion<T>
) -> <DualQuaternion<T> as Add<DualQuaternion<T>>>::Output
Performs the +
operation. Read more
impl<'b, T> AddAssign<&'b DualQuaternion<T>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<'b, T> AddAssign<&'b DualQuaternion<T>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
Performs the +=
operation. Read more
impl<T> AddAssign<DualQuaternion<T>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<T> AddAssign<DualQuaternion<T>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
Performs the +=
operation. Read more
Returns the “default value” for a type. Read more
impl<'b, T> Div<&'b Unit<DualQuaternion<T>>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<'b, T> Div<&'b Unit<DualQuaternion<T>>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
type Output = DualQuaternion<T>
type Output = DualQuaternion<T>
The resulting type after applying the /
operator.
pub fn div(
self,
rhs: &'b Unit<DualQuaternion<T>>
) -> <DualQuaternion<T> as Div<&'b Unit<DualQuaternion<T>>>>::Output
pub fn div(
self,
rhs: &'b Unit<DualQuaternion<T>>
) -> <DualQuaternion<T> as Div<&'b Unit<DualQuaternion<T>>>>::Output
Performs the /
operation. Read more
impl<'a, 'b, T> Div<&'b Unit<DualQuaternion<T>>> for &'a DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<'a, 'b, T> Div<&'b Unit<DualQuaternion<T>>> for &'a DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
type Output = DualQuaternion<T>
type Output = DualQuaternion<T>
The resulting type after applying the /
operator.
pub fn div(
self,
rhs: &'b Unit<DualQuaternion<T>>
) -> <&'a DualQuaternion<T> as Div<&'b Unit<DualQuaternion<T>>>>::Output
pub fn div(
self,
rhs: &'b Unit<DualQuaternion<T>>
) -> <&'a DualQuaternion<T> as Div<&'b Unit<DualQuaternion<T>>>>::Output
Performs the /
operation. Read more
impl<'a, T> Div<T> for &'a DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<'a, T> Div<T> for &'a DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
type Output = DualQuaternion<T>
type Output = DualQuaternion<T>
The resulting type after applying the /
operator.
impl<T> Div<T> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<T> Div<T> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
type Output = DualQuaternion<T>
type Output = DualQuaternion<T>
The resulting type after applying the /
operator.
impl<T> Div<Unit<DualQuaternion<T>>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<T> Div<Unit<DualQuaternion<T>>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
type Output = DualQuaternion<T>
type Output = DualQuaternion<T>
The resulting type after applying the /
operator.
pub fn div(
self,
rhs: Unit<DualQuaternion<T>>
) -> <DualQuaternion<T> as Div<Unit<DualQuaternion<T>>>>::Output
pub fn div(
self,
rhs: Unit<DualQuaternion<T>>
) -> <DualQuaternion<T> as Div<Unit<DualQuaternion<T>>>>::Output
Performs the /
operation. Read more
impl<'a, T> Div<Unit<DualQuaternion<T>>> for &'a DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<'a, T> Div<Unit<DualQuaternion<T>>> for &'a DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
type Output = DualQuaternion<T>
type Output = DualQuaternion<T>
The resulting type after applying the /
operator.
pub fn div(
self,
rhs: Unit<DualQuaternion<T>>
) -> <&'a DualQuaternion<T> as Div<Unit<DualQuaternion<T>>>>::Output
pub fn div(
self,
rhs: Unit<DualQuaternion<T>>
) -> <&'a DualQuaternion<T> as Div<Unit<DualQuaternion<T>>>>::Output
Performs the /
operation. Read more
impl<'b, T> DivAssign<&'b Unit<DualQuaternion<T>>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<'b, T> DivAssign<&'b Unit<DualQuaternion<T>>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
Performs the /=
operation. Read more
impl<T> DivAssign<T> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<T> DivAssign<T> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
Performs the /=
operation. Read more
impl<T> DivAssign<Unit<DualQuaternion<T>>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<T> DivAssign<Unit<DualQuaternion<T>>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
Performs the /=
operation. Read more
impl<'b, T> Mul<&'b DualQuaternion<T>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<'b, T> Mul<&'b DualQuaternion<T>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
type Output = DualQuaternion<T>
type Output = DualQuaternion<T>
The resulting type after applying the *
operator.
pub fn mul(
self,
rhs: &'b DualQuaternion<T>
) -> <DualQuaternion<T> as Mul<&'b DualQuaternion<T>>>::Output
pub fn mul(
self,
rhs: &'b DualQuaternion<T>
) -> <DualQuaternion<T> as Mul<&'b DualQuaternion<T>>>::Output
Performs the *
operation. Read more
impl<'a, 'b, T> Mul<&'b DualQuaternion<T>> for &'a Unit<DualQuaternion<T>> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<'a, 'b, T> Mul<&'b DualQuaternion<T>> for &'a Unit<DualQuaternion<T>> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
type Output = DualQuaternion<T>
type Output = DualQuaternion<T>
The resulting type after applying the *
operator.
pub fn mul(
self,
rhs: &'b DualQuaternion<T>
) -> <&'a Unit<DualQuaternion<T>> as Mul<&'b DualQuaternion<T>>>::Output
pub fn mul(
self,
rhs: &'b DualQuaternion<T>
) -> <&'a Unit<DualQuaternion<T>> as Mul<&'b DualQuaternion<T>>>::Output
Performs the *
operation. Read more
impl<'a, 'b, T> Mul<&'b DualQuaternion<T>> for &'a DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<'a, 'b, T> Mul<&'b DualQuaternion<T>> for &'a DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
type Output = DualQuaternion<T>
type Output = DualQuaternion<T>
The resulting type after applying the *
operator.
pub fn mul(
self,
rhs: &'b DualQuaternion<T>
) -> <&'a DualQuaternion<T> as Mul<&'b DualQuaternion<T>>>::Output
pub fn mul(
self,
rhs: &'b DualQuaternion<T>
) -> <&'a DualQuaternion<T> as Mul<&'b DualQuaternion<T>>>::Output
Performs the *
operation. Read more
impl<'b, T> Mul<&'b DualQuaternion<T>> for Unit<DualQuaternion<T>> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<'b, T> Mul<&'b DualQuaternion<T>> for Unit<DualQuaternion<T>> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
type Output = DualQuaternion<T>
type Output = DualQuaternion<T>
The resulting type after applying the *
operator.
pub fn mul(
self,
rhs: &'b DualQuaternion<T>
) -> <Unit<DualQuaternion<T>> as Mul<&'b DualQuaternion<T>>>::Output
pub fn mul(
self,
rhs: &'b DualQuaternion<T>
) -> <Unit<DualQuaternion<T>> as Mul<&'b DualQuaternion<T>>>::Output
Performs the *
operation. Read more
impl<'a, 'b, T> Mul<&'b Unit<DualQuaternion<T>>> for &'a DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<'a, 'b, T> Mul<&'b Unit<DualQuaternion<T>>> for &'a DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
type Output = DualQuaternion<T>
type Output = DualQuaternion<T>
The resulting type after applying the *
operator.
pub fn mul(
self,
rhs: &'b Unit<DualQuaternion<T>>
) -> <&'a DualQuaternion<T> as Mul<&'b Unit<DualQuaternion<T>>>>::Output
pub fn mul(
self,
rhs: &'b Unit<DualQuaternion<T>>
) -> <&'a DualQuaternion<T> as Mul<&'b Unit<DualQuaternion<T>>>>::Output
Performs the *
operation. Read more
impl<'b, T> Mul<&'b Unit<DualQuaternion<T>>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<'b, T> Mul<&'b Unit<DualQuaternion<T>>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
type Output = DualQuaternion<T>
type Output = DualQuaternion<T>
The resulting type after applying the *
operator.
pub fn mul(
self,
rhs: &'b Unit<DualQuaternion<T>>
) -> <DualQuaternion<T> as Mul<&'b Unit<DualQuaternion<T>>>>::Output
pub fn mul(
self,
rhs: &'b Unit<DualQuaternion<T>>
) -> <DualQuaternion<T> as Mul<&'b Unit<DualQuaternion<T>>>>::Output
Performs the *
operation. Read more
impl<T> Mul<DualQuaternion<T>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<T> Mul<DualQuaternion<T>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
type Output = DualQuaternion<T>
type Output = DualQuaternion<T>
The resulting type after applying the *
operator.
pub fn mul(
self,
rhs: DualQuaternion<T>
) -> <DualQuaternion<T> as Mul<DualQuaternion<T>>>::Output
pub fn mul(
self,
rhs: DualQuaternion<T>
) -> <DualQuaternion<T> as Mul<DualQuaternion<T>>>::Output
Performs the *
operation. Read more
impl<'a, T> Mul<DualQuaternion<T>> for &'a DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<'a, T> Mul<DualQuaternion<T>> for &'a DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
type Output = DualQuaternion<T>
type Output = DualQuaternion<T>
The resulting type after applying the *
operator.
pub fn mul(
self,
rhs: DualQuaternion<T>
) -> <&'a DualQuaternion<T> as Mul<DualQuaternion<T>>>::Output
pub fn mul(
self,
rhs: DualQuaternion<T>
) -> <&'a DualQuaternion<T> as Mul<DualQuaternion<T>>>::Output
Performs the *
operation. Read more
impl<'a, T> Mul<DualQuaternion<T>> for &'a Unit<DualQuaternion<T>> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<'a, T> Mul<DualQuaternion<T>> for &'a Unit<DualQuaternion<T>> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
type Output = DualQuaternion<T>
type Output = DualQuaternion<T>
The resulting type after applying the *
operator.
pub fn mul(
self,
rhs: DualQuaternion<T>
) -> <&'a Unit<DualQuaternion<T>> as Mul<DualQuaternion<T>>>::Output
pub fn mul(
self,
rhs: DualQuaternion<T>
) -> <&'a Unit<DualQuaternion<T>> as Mul<DualQuaternion<T>>>::Output
Performs the *
operation. Read more
impl<T> Mul<DualQuaternion<T>> for Unit<DualQuaternion<T>> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<T> Mul<DualQuaternion<T>> for Unit<DualQuaternion<T>> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
type Output = DualQuaternion<T>
type Output = DualQuaternion<T>
The resulting type after applying the *
operator.
pub fn mul(
self,
rhs: DualQuaternion<T>
) -> <Unit<DualQuaternion<T>> as Mul<DualQuaternion<T>>>::Output
pub fn mul(
self,
rhs: DualQuaternion<T>
) -> <Unit<DualQuaternion<T>> as Mul<DualQuaternion<T>>>::Output
Performs the *
operation. Read more
impl<T> Mul<T> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<T> Mul<T> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
type Output = DualQuaternion<T>
type Output = DualQuaternion<T>
The resulting type after applying the *
operator.
impl<'a, T> Mul<T> for &'a DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<'a, T> Mul<T> for &'a DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
type Output = DualQuaternion<T>
type Output = DualQuaternion<T>
The resulting type after applying the *
operator.
impl<T> Mul<Unit<DualQuaternion<T>>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<T> Mul<Unit<DualQuaternion<T>>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
type Output = DualQuaternion<T>
type Output = DualQuaternion<T>
The resulting type after applying the *
operator.
pub fn mul(
self,
rhs: Unit<DualQuaternion<T>>
) -> <DualQuaternion<T> as Mul<Unit<DualQuaternion<T>>>>::Output
pub fn mul(
self,
rhs: Unit<DualQuaternion<T>>
) -> <DualQuaternion<T> as Mul<Unit<DualQuaternion<T>>>>::Output
Performs the *
operation. Read more
impl<'a, T> Mul<Unit<DualQuaternion<T>>> for &'a DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<'a, T> Mul<Unit<DualQuaternion<T>>> for &'a DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
type Output = DualQuaternion<T>
type Output = DualQuaternion<T>
The resulting type after applying the *
operator.
pub fn mul(
self,
rhs: Unit<DualQuaternion<T>>
) -> <&'a DualQuaternion<T> as Mul<Unit<DualQuaternion<T>>>>::Output
pub fn mul(
self,
rhs: Unit<DualQuaternion<T>>
) -> <&'a DualQuaternion<T> as Mul<Unit<DualQuaternion<T>>>>::Output
Performs the *
operation. Read more
impl<'b, T> MulAssign<&'b DualQuaternion<T>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<'b, T> MulAssign<&'b DualQuaternion<T>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
Performs the *=
operation. Read more
impl<'b, T> MulAssign<&'b Unit<DualQuaternion<T>>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<'b, T> MulAssign<&'b Unit<DualQuaternion<T>>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
Performs the *=
operation. Read more
impl<T> MulAssign<DualQuaternion<T>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<T> MulAssign<DualQuaternion<T>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
Performs the *=
operation. Read more
impl<T> MulAssign<T> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<T> MulAssign<T> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
Performs the *=
operation. Read more
impl<T> MulAssign<Unit<DualQuaternion<T>>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<T> MulAssign<Unit<DualQuaternion<T>>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
Performs the *=
operation. Read more
impl<'a, T> Neg for &'a DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<'a, T> Neg for &'a DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
type Output = DualQuaternion<T>
type Output = DualQuaternion<T>
The resulting type after applying the -
operator.
impl<T> Neg for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<T> Neg for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
type Output = DualQuaternion<T>
type Output = DualQuaternion<T>
The resulting type after applying the -
operator.
type Norm = <T as SimdComplexField>::SimdRealField
type Norm = <T as SimdComplexField>::SimdRealField
The type of the norm.
Computes the norm.
Computes the squared norm.
Multiply self
by n.
Divides self
by n.
impl<T> One for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<T> One for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
Returns the multiplicative identity element of Self
, 1
. Read more
impl<T> RelativeEq<DualQuaternion<T>> for DualQuaternion<T> where
T: RealField<Epsilon = T> + RelativeEq<T>,
impl<T> RelativeEq<DualQuaternion<T>> for DualQuaternion<T> where
T: RealField<Epsilon = T> + RelativeEq<T>,
The default relative tolerance for testing values that are far-apart. Read more
pub fn relative_eq(
&self,
other: &DualQuaternion<T>,
epsilon: <DualQuaternion<T> as AbsDiffEq<DualQuaternion<T>>>::Epsilon,
max_relative: <DualQuaternion<T> as AbsDiffEq<DualQuaternion<T>>>::Epsilon
) -> bool
pub fn relative_eq(
&self,
other: &DualQuaternion<T>,
epsilon: <DualQuaternion<T> as AbsDiffEq<DualQuaternion<T>>>::Epsilon,
max_relative: <DualQuaternion<T> as AbsDiffEq<DualQuaternion<T>>>::Epsilon
) -> bool
A test for equality that uses a relative comparison if the values are far apart.
fn relative_ne(
&self,
other: &Rhs,
epsilon: Self::Epsilon,
max_relative: Self::Epsilon
) -> bool
fn relative_ne(
&self,
other: &Rhs,
epsilon: Self::Epsilon,
max_relative: Self::Epsilon
) -> bool
The inverse of [RelativeEq::relative_eq
].
impl<'a, 'b, T> Sub<&'b DualQuaternion<T>> for &'a DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<'a, 'b, T> Sub<&'b DualQuaternion<T>> for &'a DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
type Output = DualQuaternion<T>
type Output = DualQuaternion<T>
The resulting type after applying the -
operator.
pub fn sub(
self,
rhs: &'b DualQuaternion<T>
) -> <&'a DualQuaternion<T> as Sub<&'b DualQuaternion<T>>>::Output
pub fn sub(
self,
rhs: &'b DualQuaternion<T>
) -> <&'a DualQuaternion<T> as Sub<&'b DualQuaternion<T>>>::Output
Performs the -
operation. Read more
impl<'b, T> Sub<&'b DualQuaternion<T>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<'b, T> Sub<&'b DualQuaternion<T>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
type Output = DualQuaternion<T>
type Output = DualQuaternion<T>
The resulting type after applying the -
operator.
pub fn sub(
self,
rhs: &'b DualQuaternion<T>
) -> <DualQuaternion<T> as Sub<&'b DualQuaternion<T>>>::Output
pub fn sub(
self,
rhs: &'b DualQuaternion<T>
) -> <DualQuaternion<T> as Sub<&'b DualQuaternion<T>>>::Output
Performs the -
operation. Read more
impl<T> Sub<DualQuaternion<T>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<T> Sub<DualQuaternion<T>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
type Output = DualQuaternion<T>
type Output = DualQuaternion<T>
The resulting type after applying the -
operator.
pub fn sub(
self,
rhs: DualQuaternion<T>
) -> <DualQuaternion<T> as Sub<DualQuaternion<T>>>::Output
pub fn sub(
self,
rhs: DualQuaternion<T>
) -> <DualQuaternion<T> as Sub<DualQuaternion<T>>>::Output
Performs the -
operation. Read more
impl<'a, T> Sub<DualQuaternion<T>> for &'a DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<'a, T> Sub<DualQuaternion<T>> for &'a DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
type Output = DualQuaternion<T>
type Output = DualQuaternion<T>
The resulting type after applying the -
operator.
pub fn sub(
self,
rhs: DualQuaternion<T>
) -> <&'a DualQuaternion<T> as Sub<DualQuaternion<T>>>::Output
pub fn sub(
self,
rhs: DualQuaternion<T>
) -> <&'a DualQuaternion<T> as Sub<DualQuaternion<T>>>::Output
Performs the -
operation. Read more
impl<'b, T> SubAssign<&'b DualQuaternion<T>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<'b, T> SubAssign<&'b DualQuaternion<T>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
Performs the -=
operation. Read more
impl<T> SubAssign<DualQuaternion<T>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<T> SubAssign<DualQuaternion<T>> for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
Performs the -=
operation. Read more
impl<T1, T2> SubsetOf<DualQuaternion<T2>> for DualQuaternion<T1> where
T1: SimdRealField,
T2: SimdRealField + SupersetOf<T1>,
impl<T1, T2> SubsetOf<DualQuaternion<T2>> for DualQuaternion<T1> where
T1: SimdRealField,
T2: SimdRealField + SupersetOf<T1>,
The inclusion map: converts self
to the equivalent element of its superset.
Checks if element
is actually part of the subset Self
(and can be converted to it).
Use with care! Same as self.to_superset
but without any property checks. Always succeeds.
fn from_superset(element: &T) -> Option<Self>
fn from_superset(element: &T) -> Option<Self>
The inverse inclusion map: attempts to construct self
from the equivalent element of its
superset. Read more
impl<T> UlpsEq<DualQuaternion<T>> for DualQuaternion<T> where
T: RealField<Epsilon = T> + UlpsEq<T>,
impl<T> UlpsEq<DualQuaternion<T>> for DualQuaternion<T> where
T: RealField<Epsilon = T> + UlpsEq<T>,
The default ULPs to tolerate when testing values that are far-apart. Read more
pub fn ulps_eq(
&self,
other: &DualQuaternion<T>,
epsilon: <DualQuaternion<T> as AbsDiffEq<DualQuaternion<T>>>::Epsilon,
max_ulps: u32
) -> bool
pub fn ulps_eq(
&self,
other: &DualQuaternion<T>,
epsilon: <DualQuaternion<T> as AbsDiffEq<DualQuaternion<T>>>::Epsilon,
max_ulps: u32
) -> bool
A test for equality that uses units in the last place (ULP) if the values are far apart.
impl<T> Zero for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
impl<T> Zero for DualQuaternion<T> where
T: SimdRealField,
<T as SimdValue>::Element: SimdRealField,
Auto Trait Implementations
impl<T> RefUnwindSafe for DualQuaternion<T> where
T: RefUnwindSafe,
impl<T> Send for DualQuaternion<T> where
T: Send,
impl<T> Sync for DualQuaternion<T> where
T: Sync,
impl<T> Unpin for DualQuaternion<T> where
T: Unpin,
impl<T> UnwindSafe for DualQuaternion<T> where
T: UnwindSafe,
Blanket Implementations
Mutably borrows from an owned value. Read more
impl<T> Downcast for T where
T: Any,
impl<T> Downcast for T where
T: Any,
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
. Read more
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
. Read more
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s. Read more
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s. Read more
impl<T> FromWorld for T where
T: Default,
impl<T> FromWorld for T where
T: Default,
pub fn from_world(_world: &mut World) -> T
pub fn from_world(_world: &mut World) -> T
Creates Self
using data from the given [World]
impl<T> Pointable for T
impl<T> Pointable for T
impl<SS, SP> SupersetOf<SS> for SP where
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SP where
SS: SubsetOf<SP>,
The inverse inclusion map: attempts to construct self
from the equivalent element of its
superset. Read more
pub fn is_in_subset(&self) -> bool
pub fn is_in_subset(&self) -> bool
Checks if self
is actually part of its subset T
(and can be converted to it).
pub fn to_subset_unchecked(&self) -> SS
pub fn to_subset_unchecked(&self) -> SS
Use with care! Same as self.to_subset
but without any property checks. Always succeeds.
pub fn from_subset(element: &SS) -> SP
pub fn from_subset(element: &SS) -> SP
The inclusion map: converts self
to the equivalent element of its superset.
pub fn clone_type_data(&self) -> Box<dyn TypeData + 'static, Global>
pub fn vzip(self) -> V
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more