Type Definition nalgebra::geometry::UnitQuaternion [−][src]
type UnitQuaternion<N> = Unit<Quaternion<N>>;
A unit quaternions. May be used to represent a rotation.
Implementations
impl<N: SimdRealField> UnitQuaternion<N> where
N::Element: SimdRealField,
[src]
impl<N: SimdRealField> UnitQuaternion<N> where
N::Element: SimdRealField,
[src]pub fn angle(&self) -> N
[src]
The rotation angle in [0; pi] of this unit quaternion.
Example
let axis = Unit::new_normalize(Vector3::new(1.0, 2.0, 3.0)); let rot = UnitQuaternion::from_axis_angle(&axis, 1.78); assert_eq!(rot.angle(), 1.78);
pub fn quaternion(&self) -> &Quaternion<N>
[src]
The underlying quaternion.
Same as self.as_ref()
.
Example
let axis = UnitQuaternion::identity(); assert_eq!(*axis.quaternion(), Quaternion::new(1.0, 0.0, 0.0, 0.0));
#[must_use = "Did you mean to use conjugate_mut()?"]pub fn conjugate(&self) -> Self
[src]
Compute the conjugate of this unit quaternion.
Example
let axis = Unit::new_normalize(Vector3::new(1.0, 2.0, 3.0)); let rot = UnitQuaternion::from_axis_angle(&axis, 1.78); let conj = rot.conjugate(); assert_eq!(conj, UnitQuaternion::from_axis_angle(&-axis, 1.78));
#[must_use = "Did you mean to use inverse_mut()?"]pub fn inverse(&self) -> Self
[src]
Inverts this quaternion if it is not zero.
Example
let axis = Unit::new_normalize(Vector3::new(1.0, 2.0, 3.0)); let rot = UnitQuaternion::from_axis_angle(&axis, 1.78); let inv = rot.inverse(); assert_eq!(rot * inv, UnitQuaternion::identity()); assert_eq!(inv * rot, UnitQuaternion::identity());
pub fn angle_to(&self, other: &Self) -> N
[src]
The rotation angle needed to make self
and other
coincide.
Example
let rot1 = UnitQuaternion::from_axis_angle(&Vector3::y_axis(), 1.0); let rot2 = UnitQuaternion::from_axis_angle(&Vector3::x_axis(), 0.1); assert_relative_eq!(rot1.angle_to(&rot2), 1.0045657, epsilon = 1.0e-6);
pub fn rotation_to(&self, other: &Self) -> Self
[src]
The unit quaternion needed to make self
and other
coincide.
The result is such that: self.rotation_to(other) * self == other
.
Example
let rot1 = UnitQuaternion::from_axis_angle(&Vector3::y_axis(), 1.0); let rot2 = UnitQuaternion::from_axis_angle(&Vector3::x_axis(), 0.1); let rot_to = rot1.rotation_to(&rot2); assert_relative_eq!(rot_to * rot1, rot2, epsilon = 1.0e-6);
pub fn lerp(&self, other: &Self, t: N) -> Quaternion<N>
[src]
Linear interpolation between two unit quaternions.
The result is not normalized.
Example
let q1 = UnitQuaternion::new_normalize(Quaternion::new(1.0, 0.0, 0.0, 0.0)); let q2 = UnitQuaternion::new_normalize(Quaternion::new(0.0, 1.0, 0.0, 0.0)); assert_eq!(q1.lerp(&q2, 0.1), Quaternion::new(0.9, 0.1, 0.0, 0.0));
pub fn nlerp(&self, other: &Self, t: N) -> Self
[src]
Normalized linear interpolation between two unit quaternions.
This is the same as self.lerp
except that the result is normalized.
Example
let q1 = UnitQuaternion::new_normalize(Quaternion::new(1.0, 0.0, 0.0, 0.0)); let q2 = UnitQuaternion::new_normalize(Quaternion::new(0.0, 1.0, 0.0, 0.0)); assert_eq!(q1.nlerp(&q2, 0.1), UnitQuaternion::new_normalize(Quaternion::new(0.9, 0.1, 0.0, 0.0)));
pub fn slerp(&self, other: &Self, t: N) -> Self where
N: RealField,
[src]
N: RealField,
Spherical linear interpolation between two unit quaternions.
Panics if the angle between both quaternion is 180 degrees (in which case the interpolation
is not well-defined). Use .try_slerp
instead to avoid the panic.
Examples:
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 q = q1.slerp(&q2, 1.0 / 3.0); assert_eq!(q.euler_angles(), (std::f32::consts::FRAC_PI_2, 0.0, 0.0));
pub fn try_slerp(&self, other: &Self, t: N, epsilon: N) -> Option<Self> where
N: RealField,
[src]
N: RealField,
Computes the spherical linear interpolation between two unit quaternions or returns None
if both quaternions are approximately 180 degrees apart (in which case the interpolation is
not well-defined).
Arguments
self
: the first quaternion to interpolate from.other
: the second quaternion to interpolate toward.t
: the interpolation parameter. Should be between 0 and 1.epsilon
: the value below which the sinus of the angle separating both quaternion must be to returnNone
.
pub fn conjugate_mut(&mut self)
[src]
Compute the conjugate of this unit quaternion in-place.
pub fn inverse_mut(&mut self)
[src]
Inverts this quaternion if it is not zero.
Example
let axisangle = Vector3::new(0.1, 0.2, 0.3); let mut rot = UnitQuaternion::new(axisangle); rot.inverse_mut(); assert_relative_eq!(rot * UnitQuaternion::new(axisangle), UnitQuaternion::identity()); assert_relative_eq!(UnitQuaternion::new(axisangle) * rot, UnitQuaternion::identity());
pub fn axis(&self) -> Option<Unit<Vector3<N>>> where
N: RealField,
[src]
N: RealField,
The rotation axis of this unit quaternion or None
if the rotation is zero.
Example
let axis = Unit::new_normalize(Vector3::new(1.0, 2.0, 3.0)); let angle = 1.2; let rot = UnitQuaternion::from_axis_angle(&axis, angle); assert_eq!(rot.axis(), Some(axis)); // Case with a zero angle. let rot = UnitQuaternion::from_axis_angle(&axis, 0.0); assert!(rot.axis().is_none());
pub fn scaled_axis(&self) -> Vector3<N> where
N: RealField,
[src]
N: RealField,
The rotation axis of this unit quaternion multiplied by the rotation angle.
Example
let axisangle = Vector3::new(0.1, 0.2, 0.3); let rot = UnitQuaternion::new(axisangle); assert_relative_eq!(rot.scaled_axis(), axisangle, epsilon = 1.0e-6);
pub fn axis_angle(&self) -> Option<(Unit<Vector3<N>>, N)> where
N: RealField,
[src]
N: RealField,
The rotation axis and angle in ]0, pi] of this unit quaternion.
Returns None
if the angle is zero.
Example
let axis = Unit::new_normalize(Vector3::new(1.0, 2.0, 3.0)); let angle = 1.2; let rot = UnitQuaternion::from_axis_angle(&axis, angle); assert_eq!(rot.axis_angle(), Some((axis, angle))); // Case with a zero angle. let rot = UnitQuaternion::from_axis_angle(&axis, 0.0); assert!(rot.axis_angle().is_none());
pub fn exp(&self) -> Quaternion<N>
[src]
Compute the exponential of a quaternion.
Note that this function yields a Quaternion<N>
because it loses the unit property.
pub fn ln(&self) -> Quaternion<N> where
N: RealField,
[src]
N: RealField,
Compute the natural logarithm of a quaternion.
Note that this function yields a Quaternion<N>
because it loses the unit property.
The vector part of the return value corresponds to the axis-angle representation (divided
by 2.0) of this unit quaternion.
Example
let axisangle = Vector3::new(0.1, 0.2, 0.3); let q = UnitQuaternion::new(axisangle); assert_relative_eq!(q.ln().vector().into_owned(), axisangle, epsilon = 1.0e-6);
pub fn powf(&self, n: N) -> Self where
N: RealField,
[src]
N: RealField,
Raise the quaternion to a given floating power.
This returns the unit quaternion that identifies a rotation with axis self.axis()
and
angle self.angle() × n
.
Example
let axis = Unit::new_normalize(Vector3::new(1.0, 2.0, 3.0)); let angle = 1.2; let rot = UnitQuaternion::from_axis_angle(&axis, angle); let pow = rot.powf(2.0); assert_relative_eq!(pow.axis().unwrap(), axis, epsilon = 1.0e-6); assert_eq!(pow.angle(), 2.4);
pub fn to_rotation_matrix(&self) -> Rotation<N, U3>
[src]
Builds a rotation matrix from this unit quaternion.
Example
let q = UnitQuaternion::from_axis_angle(&Vector3::z_axis(), f32::consts::FRAC_PI_6); let rot = q.to_rotation_matrix(); let expected = Matrix3::new(0.8660254, -0.5, 0.0, 0.5, 0.8660254, 0.0, 0.0, 0.0, 1.0); assert_relative_eq!(*rot.matrix(), expected, epsilon = 1.0e-6);
pub fn to_euler_angles(&self) -> (N, N, N) where
N: RealField,
[src]
N: RealField,
This is renamed to use .euler_angles()
.
Converts this unit quaternion into its equivalent Euler angles.
The angles are produced in the form (roll, pitch, yaw).
pub fn euler_angles(&self) -> (N, N, N) where
N: RealField,
[src]
N: RealField,
Retrieves the euler angles corresponding to this unit quaternion.
The angles are produced in the form (roll, pitch, yaw).
Example
let rot = UnitQuaternion::from_euler_angles(0.1, 0.2, 0.3); let euler = rot.euler_angles(); assert_relative_eq!(euler.0, 0.1, epsilon = 1.0e-6); assert_relative_eq!(euler.1, 0.2, epsilon = 1.0e-6); assert_relative_eq!(euler.2, 0.3, epsilon = 1.0e-6);
pub fn to_homogeneous(&self) -> Matrix4<N>
[src]
Converts this unit quaternion into its equivalent homogeneous transformation matrix.
Example
let rot = UnitQuaternion::from_axis_angle(&Vector3::z_axis(), f32::consts::FRAC_PI_6); let expected = Matrix4::new(0.8660254, -0.5, 0.0, 0.0, 0.5, 0.8660254, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0); assert_relative_eq!(rot.to_homogeneous(), expected, epsilon = 1.0e-6);
pub fn transform_point(&self, pt: &Point3<N>) -> Point3<N>
[src]
Rotate a point by this unit quaternion.
This is the same as the multiplication self * pt
.
Example
let rot = UnitQuaternion::from_axis_angle(&Vector3::y_axis(), f32::consts::FRAC_PI_2); let transformed_point = rot.transform_point(&Point3::new(1.0, 2.0, 3.0)); assert_relative_eq!(transformed_point, Point3::new(3.0, 2.0, -1.0), epsilon = 1.0e-6);
pub fn transform_vector(&self, v: &Vector3<N>) -> Vector3<N>
[src]
Rotate a vector by this unit quaternion.
This is the same as the multiplication self * v
.
Example
let rot = UnitQuaternion::from_axis_angle(&Vector3::y_axis(), f32::consts::FRAC_PI_2); let transformed_vector = rot.transform_vector(&Vector3::new(1.0, 2.0, 3.0)); assert_relative_eq!(transformed_vector, Vector3::new(3.0, 2.0, -1.0), epsilon = 1.0e-6);
pub fn inverse_transform_point(&self, pt: &Point3<N>) -> Point3<N>
[src]
Rotate a point by the inverse of this unit quaternion. This may be cheaper than inverting the unit quaternion and transforming the point.
Example
let rot = UnitQuaternion::from_axis_angle(&Vector3::y_axis(), f32::consts::FRAC_PI_2); let transformed_point = rot.inverse_transform_point(&Point3::new(1.0, 2.0, 3.0)); assert_relative_eq!(transformed_point, Point3::new(-3.0, 2.0, 1.0), epsilon = 1.0e-6);
pub fn inverse_transform_vector(&self, v: &Vector3<N>) -> Vector3<N>
[src]
Rotate a vector by the inverse of this unit quaternion. This may be cheaper than inverting the unit quaternion and transforming the vector.
Example
let rot = UnitQuaternion::from_axis_angle(&Vector3::y_axis(), f32::consts::FRAC_PI_2); let transformed_vector = rot.inverse_transform_vector(&Vector3::new(1.0, 2.0, 3.0)); assert_relative_eq!(transformed_vector, Vector3::new(-3.0, 2.0, 1.0), epsilon = 1.0e-6);
pub fn inverse_transform_unit_vector(
&self,
v: &Unit<Vector3<N>>
) -> Unit<Vector3<N>>
[src]
&self,
v: &Unit<Vector3<N>>
) -> Unit<Vector3<N>>
Rotate a vector by the inverse of this unit quaternion. This may be cheaper than inverting the unit quaternion and transforming the vector.
Example
let rot = UnitQuaternion::from_axis_angle(&Vector3::z_axis(), f32::consts::FRAC_PI_2); let transformed_vector = rot.inverse_transform_unit_vector(&Vector3::x_axis()); assert_relative_eq!(transformed_vector, -Vector3::y_axis(), epsilon = 1.0e-6);
impl<N: SimdRealField> UnitQuaternion<N> where
N::Element: SimdRealField,
[src]
impl<N: SimdRealField> UnitQuaternion<N> where
N::Element: SimdRealField,
[src]pub fn identity() -> Self
[src]
The rotation identity.
Example
let q = UnitQuaternion::identity(); let q2 = UnitQuaternion::new(Vector3::new(1.0, 2.0, 3.0)); let v = Vector3::new_random(); let p = Point3::from(v); assert_eq!(q * q2, q2); assert_eq!(q2 * q, q2); assert_eq!(q * v, v); assert_eq!(q * p, p);
pub fn from_axis_angle<SB>(axis: &Unit<Vector<N, U3, SB>>, angle: N) -> Self where
SB: Storage<N, U3>,
[src]
SB: Storage<N, U3>,
Creates a new quaternion from a unit vector (the rotation axis) and an angle (the rotation angle).
Example
let axis = Vector3::y_axis(); let angle = f32::consts::FRAC_PI_2; // 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); let q = UnitQuaternion::from_axis_angle(&axis, angle); assert_eq!(q.axis().unwrap(), axis); assert_eq!(q.angle(), angle); assert_relative_eq!(q * pt, Point3::new(6.0, 5.0, -4.0), epsilon = 1.0e-6); assert_relative_eq!(q * vec, Vector3::new(6.0, 5.0, -4.0), epsilon = 1.0e-6); // A zero vector yields an identity. assert_eq!(UnitQuaternion::from_scaled_axis(Vector3::<f32>::zeros()), UnitQuaternion::identity());
pub fn from_quaternion(q: Quaternion<N>) -> Self
[src]
Creates a new unit quaternion from a quaternion.
The input quaternion will be normalized.
pub fn from_euler_angles(roll: N, pitch: N, yaw: N) -> Self
[src]
Creates a new unit quaternion from Euler angles.
The primitive rotations are applied in order: 1 roll − 2 pitch − 3 yaw.
Example
let rot = UnitQuaternion::from_euler_angles(0.1, 0.2, 0.3); let euler = rot.euler_angles(); assert_relative_eq!(euler.0, 0.1, epsilon = 1.0e-6); assert_relative_eq!(euler.1, 0.2, epsilon = 1.0e-6); assert_relative_eq!(euler.2, 0.3, epsilon = 1.0e-6);
pub fn from_rotation_matrix(rotmat: &Rotation3<N>) -> Self
[src]
Builds an unit quaternion from a rotation matrix.
Example
let axis = Vector3::y_axis(); let angle = 0.1; let rot = Rotation3::from_axis_angle(&axis, angle); let q = UnitQuaternion::from_rotation_matrix(&rot); assert_relative_eq!(q.to_rotation_matrix(), rot, epsilon = 1.0e-6); assert_relative_eq!(q.axis().unwrap(), rot.axis().unwrap(), epsilon = 1.0e-6); assert_relative_eq!(q.angle(), rot.angle(), epsilon = 1.0e-6);
pub fn from_matrix(m: &Matrix3<N>) -> Self where
N: RealField,
[src]
N: RealField,
Builds an unit quaternion by extracting the rotation part of the given transformation m
.
This is an iterative method. See .from_matrix_eps
to provide mover
convergence parameters and starting solution.
This implements “A Robust Method to Extract the Rotational Part of Deformations” by Müller et al.
pub fn from_matrix_eps(
m: &Matrix3<N>,
eps: N,
max_iter: usize,
guess: Self
) -> Self where
N: RealField,
[src]
m: &Matrix3<N>,
eps: N,
max_iter: usize,
guess: Self
) -> Self where
N: RealField,
Builds an unit quaternion by extracting the rotation part of the given transformation m
.
This implements “A Robust Method to Extract the Rotational Part of Deformations” by Müller et al.
Parameters
m
: the matrix from which the rotational part is to be extracted.eps
: the angular errors tolerated between the current rotation and the optimal one.max_iter
: the maximum number of iterations. Loops indefinitely until convergence if set to0
.guess
: an estimate of the solution. Convergence will be significantly faster if an initial solution close to the actual solution is provided. Can be set toUnitQuaternion::identity()
if no other guesses come to mind.
pub fn rotation_between<SB, SC>(
a: &Vector<N, U3, SB>,
b: &Vector<N, U3, SC>
) -> Option<Self> where
N: RealField,
SB: Storage<N, U3>,
SC: Storage<N, U3>,
[src]
a: &Vector<N, U3, SB>,
b: &Vector<N, U3, SC>
) -> Option<Self> where
N: RealField,
SB: Storage<N, U3>,
SC: Storage<N, U3>,
The unit quaternion needed to make a
and b
be collinear and point toward the same
direction. Returns None
if both a
and b
are collinear and point to opposite directions, as then the
rotation desired is not unique.
Example
let a = Vector3::new(1.0, 2.0, 3.0); let b = Vector3::new(3.0, 1.0, 2.0); let q = UnitQuaternion::rotation_between(&a, &b).unwrap(); assert_relative_eq!(q * a, b); assert_relative_eq!(q.inverse() * b, a);
pub fn scaled_rotation_between<SB, SC>(
a: &Vector<N, U3, SB>,
b: &Vector<N, U3, SC>,
s: N
) -> Option<Self> where
N: RealField,
SB: Storage<N, U3>,
SC: Storage<N, U3>,
[src]
a: &Vector<N, U3, SB>,
b: &Vector<N, U3, SC>,
s: N
) -> Option<Self> where
N: RealField,
SB: Storage<N, U3>,
SC: Storage<N, U3>,
The smallest rotation needed to make a
and b
collinear and point toward the same
direction, raised to the power s
.
Example
let a = Vector3::new(1.0, 2.0, 3.0); let b = Vector3::new(3.0, 1.0, 2.0); let q2 = UnitQuaternion::scaled_rotation_between(&a, &b, 0.2).unwrap(); let q5 = UnitQuaternion::scaled_rotation_between(&a, &b, 0.5).unwrap(); assert_relative_eq!(q2 * q2 * q2 * q2 * q2 * a, b, epsilon = 1.0e-6); assert_relative_eq!(q5 * q5 * a, b, epsilon = 1.0e-6);
pub fn rotation_between_axis<SB, SC>(
a: &Unit<Vector<N, U3, SB>>,
b: &Unit<Vector<N, U3, SC>>
) -> Option<Self> where
N: RealField,
SB: Storage<N, U3>,
SC: Storage<N, U3>,
[src]
a: &Unit<Vector<N, U3, SB>>,
b: &Unit<Vector<N, U3, SC>>
) -> Option<Self> where
N: RealField,
SB: Storage<N, U3>,
SC: Storage<N, U3>,
The unit quaternion needed to make a
and b
be collinear and point toward the same
direction.
Example
let a = Unit::new_normalize(Vector3::new(1.0, 2.0, 3.0)); let b = Unit::new_normalize(Vector3::new(3.0, 1.0, 2.0)); let q = UnitQuaternion::rotation_between(&a, &b).unwrap(); assert_relative_eq!(q * a, b); assert_relative_eq!(q.inverse() * b, a);
pub fn scaled_rotation_between_axis<SB, SC>(
na: &Unit<Vector<N, U3, SB>>,
nb: &Unit<Vector<N, U3, SC>>,
s: N
) -> Option<Self> where
N: RealField,
SB: Storage<N, U3>,
SC: Storage<N, U3>,
[src]
na: &Unit<Vector<N, U3, SB>>,
nb: &Unit<Vector<N, U3, SC>>,
s: N
) -> Option<Self> where
N: RealField,
SB: Storage<N, U3>,
SC: Storage<N, U3>,
The smallest rotation needed to make a
and b
collinear and point toward the same
direction, raised to the power s
.
Example
let a = Unit::new_normalize(Vector3::new(1.0, 2.0, 3.0)); let b = Unit::new_normalize(Vector3::new(3.0, 1.0, 2.0)); let q2 = UnitQuaternion::scaled_rotation_between(&a, &b, 0.2).unwrap(); let q5 = UnitQuaternion::scaled_rotation_between(&a, &b, 0.5).unwrap(); assert_relative_eq!(q2 * q2 * q2 * q2 * q2 * a, b, epsilon = 1.0e-6); assert_relative_eq!(q5 * q5 * a, b, epsilon = 1.0e-6);
pub fn face_towards<SB, SC>(
dir: &Vector<N, U3, SB>,
up: &Vector<N, U3, SC>
) -> Self where
SB: Storage<N, U3>,
SC: Storage<N, U3>,
[src]
dir: &Vector<N, U3, SB>,
up: &Vector<N, U3, SC>
) -> Self where
SB: Storage<N, U3>,
SC: Storage<N, U3>,
Creates an unit quaternion that corresponds to the local frame of an observer standing at the
origin and looking toward dir
.
It maps the z
axis to the direction dir
.
Arguments
- dir - The look direction. It does not need to be normalized.
- up - The vertical direction. It does not need to be normalized.
The only requirement of this parameter is to not be collinear to
dir
. Non-collinearity is not checked.
Example
let dir = Vector3::new(1.0, 2.0, 3.0); let up = Vector3::y(); let q = UnitQuaternion::face_towards(&dir, &up); assert_relative_eq!(q * Vector3::z(), dir.normalize());
pub fn new_observer_frames<SB, SC>(
dir: &Vector<N, U3, SB>,
up: &Vector<N, U3, SC>
) -> Self where
SB: Storage<N, U3>,
SC: Storage<N, U3>,
[src]
dir: &Vector<N, U3, SB>,
up: &Vector<N, U3, SC>
) -> Self where
SB: Storage<N, U3>,
SC: Storage<N, U3>,
renamed to face_towards
Deprecated: Use [UnitQuaternion::face_towards] instead.
pub fn look_at_rh<SB, SC>(
dir: &Vector<N, U3, SB>,
up: &Vector<N, U3, SC>
) -> Self where
SB: Storage<N, U3>,
SC: Storage<N, U3>,
[src]
dir: &Vector<N, U3, SB>,
up: &Vector<N, U3, SC>
) -> Self where
SB: Storage<N, U3>,
SC: Storage<N, U3>,
Builds a right-handed look-at view matrix without translation.
It maps the view direction dir
to the negative z
axis.
This conforms to the common notion of right handed look-at matrix from the computer
graphics community.
Arguments
- dir − The view direction. It does not need to be normalized.
- up - A vector approximately aligned with required the vertical axis. It does not need
to be normalized. The only requirement of this parameter is to not be collinear to
dir
.
Example
let dir = Vector3::new(1.0, 2.0, 3.0); let up = Vector3::y(); let q = UnitQuaternion::look_at_rh(&dir, &up); assert_relative_eq!(q * dir.normalize(), -Vector3::z());
pub fn look_at_lh<SB, SC>(
dir: &Vector<N, U3, SB>,
up: &Vector<N, U3, SC>
) -> Self where
SB: Storage<N, U3>,
SC: Storage<N, U3>,
[src]
dir: &Vector<N, U3, SB>,
up: &Vector<N, U3, SC>
) -> Self where
SB: Storage<N, U3>,
SC: Storage<N, U3>,
Builds a left-handed look-at view matrix without translation.
It maps the view direction dir
to the positive z
axis.
This conforms to the common notion of left handed look-at matrix from the computer
graphics community.
Arguments
- dir − The view direction. It does not need to be normalized.
- up - A vector approximately aligned with required the vertical axis. The only
requirement of this parameter is to not be collinear to
dir
.
Example
let dir = Vector3::new(1.0, 2.0, 3.0); let up = Vector3::y(); let q = UnitQuaternion::look_at_lh(&dir, &up); assert_relative_eq!(q * dir.normalize(), Vector3::z());
pub fn new<SB>(axisangle: Vector<N, U3, SB>) -> Self where
SB: Storage<N, U3>,
[src]
SB: Storage<N, U3>,
Creates a new unit quaternion rotation from a rotation axis scaled by the rotation angle.
If axisangle
has a magnitude smaller than N::default_epsilon()
, this returns the identity rotation.
Example
let axisangle = Vector3::y() * f32::consts::FRAC_PI_2; // 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); let q = UnitQuaternion::new(axisangle); assert_relative_eq!(q * pt, Point3::new(6.0, 5.0, -4.0), epsilon = 1.0e-6); assert_relative_eq!(q * vec, Vector3::new(6.0, 5.0, -4.0), epsilon = 1.0e-6); // A zero vector yields an identity. assert_eq!(UnitQuaternion::new(Vector3::<f32>::zeros()), UnitQuaternion::identity());
pub fn new_eps<SB>(axisangle: Vector<N, U3, SB>, eps: N) -> Self where
SB: Storage<N, U3>,
[src]
SB: Storage<N, U3>,
Creates a new unit quaternion rotation from a rotation axis scaled by the rotation angle.
If axisangle
has a magnitude smaller than eps
, this returns the identity rotation.
Example
let axisangle = Vector3::y() * f32::consts::FRAC_PI_2; // 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); let q = UnitQuaternion::new_eps(axisangle, 1.0e-6); assert_relative_eq!(q * pt, Point3::new(6.0, 5.0, -4.0), epsilon = 1.0e-6); assert_relative_eq!(q * vec, Vector3::new(6.0, 5.0, -4.0), epsilon = 1.0e-6); // An almost zero vector yields an identity. assert_eq!(UnitQuaternion::new_eps(Vector3::new(1.0e-8, 1.0e-9, 1.0e-7), 1.0e-6), UnitQuaternion::identity());
pub fn from_scaled_axis<SB>(axisangle: Vector<N, U3, SB>) -> Self where
SB: Storage<N, U3>,
[src]
SB: Storage<N, U3>,
Creates a new unit quaternion rotation from a rotation axis scaled by the rotation angle.
If axisangle
has a magnitude smaller than N::default_epsilon()
, this returns the identity rotation.
Same as Self::new(axisangle)
.
Example
let axisangle = Vector3::y() * f32::consts::FRAC_PI_2; // 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); let q = UnitQuaternion::from_scaled_axis(axisangle); assert_relative_eq!(q * pt, Point3::new(6.0, 5.0, -4.0), epsilon = 1.0e-6); assert_relative_eq!(q * vec, Vector3::new(6.0, 5.0, -4.0), epsilon = 1.0e-6); // A zero vector yields an identity. assert_eq!(UnitQuaternion::from_scaled_axis(Vector3::<f32>::zeros()), UnitQuaternion::identity());
pub fn from_scaled_axis_eps<SB>(axisangle: Vector<N, U3, SB>, eps: N) -> Self where
SB: Storage<N, U3>,
[src]
SB: Storage<N, U3>,
Creates a new unit quaternion rotation from a rotation axis scaled by the rotation angle.
If axisangle
has a magnitude smaller than eps
, this returns the identity rotation.
Same as Self::new_eps(axisangle, eps)
.
Example
let axisangle = Vector3::y() * f32::consts::FRAC_PI_2; // 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); let q = UnitQuaternion::from_scaled_axis_eps(axisangle, 1.0e-6); assert_relative_eq!(q * pt, Point3::new(6.0, 5.0, -4.0), epsilon = 1.0e-6); assert_relative_eq!(q * vec, Vector3::new(6.0, 5.0, -4.0), epsilon = 1.0e-6); // An almost zero vector yields an identity. assert_eq!(UnitQuaternion::from_scaled_axis_eps(Vector3::new(1.0e-8, 1.0e-9, 1.0e-7), 1.0e-6), UnitQuaternion::identity());
pub fn mean_of(unit_quaternions: impl IntoIterator<Item = Self>) -> Self where
N: RealField,
[src]
N: RealField,
Create the mean unit quaternion from a data structure implementing IntoIterator returning unit quaternions.
The method will panic if the iterator does not return any quaternions.
Algorithm from: Oshman, Yaakov, and Avishy Carmi. “Attitude estimation from vector observations using a genetic-algorithm-embedded quaternion particle filter.” Journal of Guidance, Control, and Dynamics 29.4 (2006): 879-891.
Example
let q1 = UnitQuaternion::from_euler_angles(0.0, 0.0, 0.0); let q2 = UnitQuaternion::from_euler_angles(-0.1, 0.0, 0.0); let q3 = UnitQuaternion::from_euler_angles(0.1, 0.0, 0.0); let quat_vec = vec![q1, q2, q3]; let q_mean = UnitQuaternion::mean_of(quat_vec); let euler_angles_mean = q_mean.euler_angles(); assert_relative_eq!(euler_angles_mean.0, 0.0, epsilon = 1.0e-7)
Trait Implementations
impl<N: RealField + AbsDiffEq<Epsilon = N>> AbsDiffEq<Unit<Quaternion<N>>> for UnitQuaternion<N>
[src]
impl<N: RealField + AbsDiffEq<Epsilon = N>> AbsDiffEq<Unit<Quaternion<N>>> for UnitQuaternion<N>
[src]type Epsilon = N
Used for specifying relative comparisons.
fn default_epsilon() -> Self::Epsilon
[src]
fn abs_diff_eq(&self, other: &Self, epsilon: Self::Epsilon) -> bool
[src]
pub fn abs_diff_ne(&self, other: &Rhs, epsilon: Self::Epsilon) -> bool
[src]
impl<N: SimdRealField> AbstractRotation<N, U3> for UnitQuaternion<N> where
N::Element: SimdRealField,
[src]
impl<N: SimdRealField> AbstractRotation<N, U3> for UnitQuaternion<N> where
N::Element: SimdRealField,
[src]fn identity() -> Self
[src]
fn inverse(&self) -> Self
[src]
fn inverse_mut(&mut self)
[src]
fn transform_vector(&self, v: &VectorN<N, U3>) -> VectorN<N, U3>
[src]
fn transform_point(&self, p: &Point<N, U3>) -> Point<N, U3>
[src]
fn inverse_transform_vector(&self, v: &VectorN<N, U3>) -> VectorN<N, U3>
[src]
fn inverse_transform_point(&self, p: &Point<N, U3>) -> Point<N, U3>
[src]
fn inverse_transform_unit_vector(
&self,
v: &Unit<VectorN<N, D>>
) -> Unit<VectorN<N, D>> where
DefaultAllocator: Allocator<N, D>,
[src]
&self,
v: &Unit<VectorN<N, D>>
) -> Unit<VectorN<N, D>> where
DefaultAllocator: Allocator<N, D>,
impl<N: RealField + Display> Display for UnitQuaternion<N>
[src]
impl<N: RealField + Display> Display for UnitQuaternion<N>
[src]impl<'b, N: SimdRealField> Div<&'b Isometry<N, U3, Unit<Quaternion<N>>>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]
impl<'b, N: SimdRealField> Div<&'b Isometry<N, U3, Unit<Quaternion<N>>>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]type Output = Isometry<N, U3, UnitQuaternion<N>>
The resulting type after applying the /
operator.
fn div(self, right: &'b Isometry<N, U3, UnitQuaternion<N>>) -> Self::Output
[src]
impl<'a, 'b, N: SimdRealField> Div<&'b Isometry<N, U3, Unit<Quaternion<N>>>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]
impl<'a, 'b, N: SimdRealField> Div<&'b Isometry<N, U3, Unit<Quaternion<N>>>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]type Output = Isometry<N, U3, UnitQuaternion<N>>
The resulting type after applying the /
operator.
fn div(self, right: &'b Isometry<N, U3, UnitQuaternion<N>>) -> Self::Output
[src]
impl<'a, 'b, N: SimdRealField> Div<&'b Rotation<N, U3>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U3>,
[src]
impl<'a, 'b, N: SimdRealField> Div<&'b Rotation<N, U3>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U3>,
[src]impl<'b, N: SimdRealField> Div<&'b Rotation<N, U3>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U3>,
[src]
impl<'b, N: SimdRealField> Div<&'b Rotation<N, U3>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U3>,
[src]impl<'b, N: SimdRealField> Div<&'b Similarity<N, U3, Unit<Quaternion<N>>>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]
impl<'b, N: SimdRealField> Div<&'b Similarity<N, U3, Unit<Quaternion<N>>>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]type Output = Similarity<N, U3, UnitQuaternion<N>>
The resulting type after applying the /
operator.
fn div(self, right: &'b Similarity<N, U3, UnitQuaternion<N>>) -> Self::Output
[src]
impl<'a, 'b, N: SimdRealField> Div<&'b Similarity<N, U3, Unit<Quaternion<N>>>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]
impl<'a, 'b, N: SimdRealField> Div<&'b Similarity<N, U3, Unit<Quaternion<N>>>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]type Output = Similarity<N, U3, UnitQuaternion<N>>
The resulting type after applying the /
operator.
fn div(self, right: &'b Similarity<N, U3, UnitQuaternion<N>>) -> Self::Output
[src]
impl<'b, N, C: TCategoryMul<TAffine>> Div<&'b Transform<N, U3, C>> for UnitQuaternion<N> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U4, U4>,
[src]
impl<'b, N, C: TCategoryMul<TAffine>> Div<&'b Transform<N, U3, C>> for UnitQuaternion<N> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U4, U4>,
[src]impl<'a, 'b, N, C: TCategoryMul<TAffine>> Div<&'b Transform<N, U3, C>> for &'a UnitQuaternion<N> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U4, U4>,
[src]
impl<'a, 'b, N, C: TCategoryMul<TAffine>> Div<&'b Transform<N, U3, C>> for &'a UnitQuaternion<N> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U4, U4>,
[src]impl<'a, 'b, N: SimdRealField> Div<&'b Unit<Quaternion<N>>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1>,
[src]
impl<'a, 'b, N: SimdRealField> Div<&'b Unit<Quaternion<N>>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1>,
[src]type Output = UnitQuaternion<N>
The resulting type after applying the /
operator.
fn div(self, rhs: &'b UnitQuaternion<N>) -> Self::Output
[src]
impl<'b, N: SimdRealField> Div<&'b Unit<Quaternion<N>>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1>,
[src]
impl<'b, N: SimdRealField> Div<&'b Unit<Quaternion<N>>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1>,
[src]type Output = UnitQuaternion<N>
The resulting type after applying the /
operator.
fn div(self, rhs: &'b UnitQuaternion<N>) -> Self::Output
[src]
impl<N: SimdRealField> Div<Isometry<N, U3, Unit<Quaternion<N>>>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]
impl<N: SimdRealField> Div<Isometry<N, U3, Unit<Quaternion<N>>>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]type Output = Isometry<N, U3, UnitQuaternion<N>>
The resulting type after applying the /
operator.
fn div(self, right: Isometry<N, U3, UnitQuaternion<N>>) -> Self::Output
[src]
impl<'a, N: SimdRealField> Div<Isometry<N, U3, Unit<Quaternion<N>>>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]
impl<'a, N: SimdRealField> Div<Isometry<N, U3, Unit<Quaternion<N>>>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]type Output = Isometry<N, U3, UnitQuaternion<N>>
The resulting type after applying the /
operator.
fn div(self, right: Isometry<N, U3, UnitQuaternion<N>>) -> Self::Output
[src]
impl<'a, N: SimdRealField> Div<Rotation<N, U3>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U3>,
[src]
impl<'a, N: SimdRealField> Div<Rotation<N, U3>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U3>,
[src]impl<N: SimdRealField> Div<Rotation<N, U3>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U3>,
[src]
impl<N: SimdRealField> Div<Rotation<N, U3>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U3>,
[src]impl<N: SimdRealField> Div<Similarity<N, U3, Unit<Quaternion<N>>>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]
impl<N: SimdRealField> Div<Similarity<N, U3, Unit<Quaternion<N>>>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]type Output = Similarity<N, U3, UnitQuaternion<N>>
The resulting type after applying the /
operator.
fn div(self, right: Similarity<N, U3, UnitQuaternion<N>>) -> Self::Output
[src]
impl<'a, N: SimdRealField> Div<Similarity<N, U3, Unit<Quaternion<N>>>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]
impl<'a, N: SimdRealField> Div<Similarity<N, U3, Unit<Quaternion<N>>>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]type Output = Similarity<N, U3, UnitQuaternion<N>>
The resulting type after applying the /
operator.
fn div(self, right: Similarity<N, U3, UnitQuaternion<N>>) -> Self::Output
[src]
impl<N, C: TCategoryMul<TAffine>> Div<Transform<N, U3, C>> for UnitQuaternion<N> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U4, U4>,
[src]
impl<N, C: TCategoryMul<TAffine>> Div<Transform<N, U3, C>> for UnitQuaternion<N> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U4, U4>,
[src]impl<'a, N, C: TCategoryMul<TAffine>> Div<Transform<N, U3, C>> for &'a UnitQuaternion<N> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U4, U4>,
[src]
impl<'a, N, C: TCategoryMul<TAffine>> Div<Transform<N, U3, C>> for &'a UnitQuaternion<N> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U4, U4>,
[src]impl<'a, N: SimdRealField> Div<Unit<Quaternion<N>>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1>,
[src]
impl<'a, N: SimdRealField> Div<Unit<Quaternion<N>>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1>,
[src]type Output = UnitQuaternion<N>
The resulting type after applying the /
operator.
fn div(self, rhs: UnitQuaternion<N>) -> Self::Output
[src]
impl<N: SimdRealField> Div<Unit<Quaternion<N>>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1>,
[src]
impl<N: SimdRealField> Div<Unit<Quaternion<N>>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1>,
[src]type Output = UnitQuaternion<N>
The resulting type after applying the /
operator.
fn div(self, rhs: UnitQuaternion<N>) -> Self::Output
[src]
impl<'b, N: SimdRealField> DivAssign<&'b Rotation<N, U3>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U3>,
[src]
impl<'b, N: SimdRealField> DivAssign<&'b Rotation<N, U3>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U3>,
[src]fn div_assign(&mut self, rhs: &'b Rotation<N, U3>)
[src]
impl<'b, N: SimdRealField> DivAssign<&'b Unit<Quaternion<N>>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1>,
[src]
impl<'b, N: SimdRealField> DivAssign<&'b Unit<Quaternion<N>>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1>,
[src]fn div_assign(&mut self, rhs: &'b UnitQuaternion<N>)
[src]
impl<N: SimdRealField> DivAssign<Rotation<N, U3>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U3>,
[src]
impl<N: SimdRealField> DivAssign<Rotation<N, U3>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U3>,
[src]fn div_assign(&mut self, rhs: Rotation<N, U3>)
[src]
impl<N: SimdRealField> DivAssign<Unit<Quaternion<N>>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1>,
[src]
impl<N: SimdRealField> DivAssign<Unit<Quaternion<N>>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1>,
[src]fn div_assign(&mut self, rhs: UnitQuaternion<N>)
[src]
impl<N: Scalar + Copy + PrimitiveSimdValue> From<[Unit<Quaternion<<N as SimdValue>::Element>>; 16]> for UnitQuaternion<N> where
N: From<[<N as SimdValue>::Element; 16]>,
N::Element: Scalar + Copy,
[src]
impl<N: Scalar + Copy + PrimitiveSimdValue> From<[Unit<Quaternion<<N as SimdValue>::Element>>; 16]> for UnitQuaternion<N> where
N: From<[<N as SimdValue>::Element; 16]>,
N::Element: Scalar + Copy,
[src]impl<N: Scalar + Copy + PrimitiveSimdValue> From<[Unit<Quaternion<<N as SimdValue>::Element>>; 2]> for UnitQuaternion<N> where
N: From<[<N as SimdValue>::Element; 2]>,
N::Element: Scalar + Copy,
[src]
impl<N: Scalar + Copy + PrimitiveSimdValue> From<[Unit<Quaternion<<N as SimdValue>::Element>>; 2]> for UnitQuaternion<N> where
N: From<[<N as SimdValue>::Element; 2]>,
N::Element: Scalar + Copy,
[src]impl<N: Scalar + Copy + PrimitiveSimdValue> From<[Unit<Quaternion<<N as SimdValue>::Element>>; 4]> for UnitQuaternion<N> where
N: From<[<N as SimdValue>::Element; 4]>,
N::Element: Scalar + Copy,
[src]
impl<N: Scalar + Copy + PrimitiveSimdValue> From<[Unit<Quaternion<<N as SimdValue>::Element>>; 4]> for UnitQuaternion<N> where
N: From<[<N as SimdValue>::Element; 4]>,
N::Element: Scalar + Copy,
[src]impl<N: Scalar + Copy + PrimitiveSimdValue> From<[Unit<Quaternion<<N as SimdValue>::Element>>; 8]> for UnitQuaternion<N> where
N: From<[<N as SimdValue>::Element; 8]>,
N::Element: Scalar + Copy,
[src]
impl<N: Scalar + Copy + PrimitiveSimdValue> From<[Unit<Quaternion<<N as SimdValue>::Element>>; 8]> for UnitQuaternion<N> where
N: From<[<N as SimdValue>::Element; 8]>,
N::Element: Scalar + Copy,
[src]impl<N: SimdRealField> From<Rotation<N, U3>> for UnitQuaternion<N> where
N::Element: SimdRealField,
[src]
impl<N: SimdRealField> From<Rotation<N, U3>> for UnitQuaternion<N> where
N::Element: SimdRealField,
[src]impl<'b, N: SimdRealField> Mul<&'b Isometry<N, U3, Unit<Quaternion<N>>>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]
impl<'b, N: SimdRealField> Mul<&'b Isometry<N, U3, Unit<Quaternion<N>>>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]type Output = Isometry<N, U3, UnitQuaternion<N>>
The resulting type after applying the *
operator.
fn mul(self, right: &'b Isometry<N, U3, UnitQuaternion<N>>) -> Self::Output
[src]
impl<'a, 'b, N: SimdRealField> Mul<&'b Isometry<N, U3, Unit<Quaternion<N>>>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]
impl<'a, 'b, N: SimdRealField> Mul<&'b Isometry<N, U3, Unit<Quaternion<N>>>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]type Output = Isometry<N, U3, UnitQuaternion<N>>
The resulting type after applying the *
operator.
fn mul(self, right: &'b Isometry<N, U3, UnitQuaternion<N>>) -> Self::Output
[src]
impl<'a, 'b, N: SimdRealField, SB: Storage<N, U3>> Mul<&'b Matrix<N, U3, U1, SB>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]
impl<'a, 'b, N: SimdRealField, SB: Storage<N, U3>> Mul<&'b Matrix<N, U3, U1, SB>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]impl<'b, N: SimdRealField, SB: Storage<N, U3>> Mul<&'b Matrix<N, U3, U1, SB>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]
impl<'b, N: SimdRealField, SB: Storage<N, U3>> Mul<&'b Matrix<N, U3, U1, SB>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]impl<'a, 'b, N: SimdRealField> Mul<&'b Point<N, U3>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]
impl<'a, 'b, N: SimdRealField> Mul<&'b Point<N, U3>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]impl<'b, N: SimdRealField> Mul<&'b Point<N, U3>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]
impl<'b, N: SimdRealField> Mul<&'b Point<N, U3>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]impl<'a, 'b, N: SimdRealField> Mul<&'b Rotation<N, U3>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U3>,
[src]
impl<'a, 'b, N: SimdRealField> Mul<&'b Rotation<N, U3>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U3>,
[src]impl<'b, N: SimdRealField> Mul<&'b Rotation<N, U3>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U3>,
[src]
impl<'b, N: SimdRealField> Mul<&'b Rotation<N, U3>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U3>,
[src]impl<'b, N: SimdRealField> Mul<&'b Similarity<N, U3, Unit<Quaternion<N>>>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]
impl<'b, N: SimdRealField> Mul<&'b Similarity<N, U3, Unit<Quaternion<N>>>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]type Output = Similarity<N, U3, UnitQuaternion<N>>
The resulting type after applying the *
operator.
fn mul(self, right: &'b Similarity<N, U3, UnitQuaternion<N>>) -> Self::Output
[src]
impl<'a, 'b, N: SimdRealField> Mul<&'b Similarity<N, U3, Unit<Quaternion<N>>>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]
impl<'a, 'b, N: SimdRealField> Mul<&'b Similarity<N, U3, Unit<Quaternion<N>>>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]type Output = Similarity<N, U3, UnitQuaternion<N>>
The resulting type after applying the *
operator.
fn mul(self, right: &'b Similarity<N, U3, UnitQuaternion<N>>) -> Self::Output
[src]
impl<'b, N, C: TCategoryMul<TAffine>> Mul<&'b Transform<N, U3, C>> for UnitQuaternion<N> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U4, U4>,
[src]
impl<'b, N, C: TCategoryMul<TAffine>> Mul<&'b Transform<N, U3, C>> for UnitQuaternion<N> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U4, U4>,
[src]impl<'a, 'b, N, C: TCategoryMul<TAffine>> Mul<&'b Transform<N, U3, C>> for &'a UnitQuaternion<N> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U4, U4>,
[src]
impl<'a, 'b, N, C: TCategoryMul<TAffine>> Mul<&'b Transform<N, U3, C>> for &'a UnitQuaternion<N> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U4, U4>,
[src]impl<'b, N: SimdRealField> Mul<&'b Translation<N, U3>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]
impl<'b, N: SimdRealField> Mul<&'b Translation<N, U3>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]type Output = Isometry<N, U3, UnitQuaternion<N>>
The resulting type after applying the *
operator.
fn mul(self, right: &'b Translation<N, U3>) -> Self::Output
[src]
impl<'a, 'b, N: SimdRealField> Mul<&'b Translation<N, U3>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]
impl<'a, 'b, N: SimdRealField> Mul<&'b Translation<N, U3>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]type Output = Isometry<N, U3, UnitQuaternion<N>>
The resulting type after applying the *
operator.
fn mul(self, right: &'b Translation<N, U3>) -> Self::Output
[src]
impl<'a, 'b, N: SimdRealField, SB: Storage<N, U3>> Mul<&'b Unit<Matrix<N, U3, U1, SB>>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]
impl<'a, 'b, N: SimdRealField, SB: Storage<N, U3>> Mul<&'b Unit<Matrix<N, U3, U1, SB>>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]impl<'b, N: SimdRealField, SB: Storage<N, U3>> Mul<&'b Unit<Matrix<N, U3, U1, SB>>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]
impl<'b, N: SimdRealField, SB: Storage<N, U3>> Mul<&'b Unit<Matrix<N, U3, U1, SB>>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]impl<'a, 'b, N: SimdRealField> Mul<&'b Unit<Quaternion<N>>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1>,
[src]
impl<'a, 'b, N: SimdRealField> Mul<&'b Unit<Quaternion<N>>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1>,
[src]type Output = UnitQuaternion<N>
The resulting type after applying the *
operator.
fn mul(self, rhs: &'b UnitQuaternion<N>) -> Self::Output
[src]
impl<'b, N: SimdRealField> Mul<&'b Unit<Quaternion<N>>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1>,
[src]
impl<'b, N: SimdRealField> Mul<&'b Unit<Quaternion<N>>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1>,
[src]type Output = UnitQuaternion<N>
The resulting type after applying the *
operator.
fn mul(self, rhs: &'b UnitQuaternion<N>) -> Self::Output
[src]
impl<N: SimdRealField> Mul<Isometry<N, U3, Unit<Quaternion<N>>>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]
impl<N: SimdRealField> Mul<Isometry<N, U3, Unit<Quaternion<N>>>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]type Output = Isometry<N, U3, UnitQuaternion<N>>
The resulting type after applying the *
operator.
fn mul(self, right: Isometry<N, U3, UnitQuaternion<N>>) -> Self::Output
[src]
impl<'a, N: SimdRealField> Mul<Isometry<N, U3, Unit<Quaternion<N>>>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]
impl<'a, N: SimdRealField> Mul<Isometry<N, U3, Unit<Quaternion<N>>>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]type Output = Isometry<N, U3, UnitQuaternion<N>>
The resulting type after applying the *
operator.
fn mul(self, right: Isometry<N, U3, UnitQuaternion<N>>) -> Self::Output
[src]
impl<'a, N: SimdRealField, SB: Storage<N, U3>> Mul<Matrix<N, U3, U1, SB>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]
impl<'a, N: SimdRealField, SB: Storage<N, U3>> Mul<Matrix<N, U3, U1, SB>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]impl<N: SimdRealField, SB: Storage<N, U3>> Mul<Matrix<N, U3, U1, SB>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]
impl<N: SimdRealField, SB: Storage<N, U3>> Mul<Matrix<N, U3, U1, SB>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]impl<'a, N: SimdRealField> Mul<Point<N, U3>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]
impl<'a, N: SimdRealField> Mul<Point<N, U3>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]impl<N: SimdRealField> Mul<Point<N, U3>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]
impl<N: SimdRealField> Mul<Point<N, U3>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]impl<'a, N: SimdRealField> Mul<Rotation<N, U3>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U3>,
[src]
impl<'a, N: SimdRealField> Mul<Rotation<N, U3>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U3>,
[src]impl<N: SimdRealField> Mul<Rotation<N, U3>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U3>,
[src]
impl<N: SimdRealField> Mul<Rotation<N, U3>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U3>,
[src]impl<N: SimdRealField> Mul<Similarity<N, U3, Unit<Quaternion<N>>>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]
impl<N: SimdRealField> Mul<Similarity<N, U3, Unit<Quaternion<N>>>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]type Output = Similarity<N, U3, UnitQuaternion<N>>
The resulting type after applying the *
operator.
fn mul(self, right: Similarity<N, U3, UnitQuaternion<N>>) -> Self::Output
[src]
impl<'a, N: SimdRealField> Mul<Similarity<N, U3, Unit<Quaternion<N>>>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]
impl<'a, N: SimdRealField> Mul<Similarity<N, U3, Unit<Quaternion<N>>>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]type Output = Similarity<N, U3, UnitQuaternion<N>>
The resulting type after applying the *
operator.
fn mul(self, right: Similarity<N, U3, UnitQuaternion<N>>) -> Self::Output
[src]
impl<N, C: TCategoryMul<TAffine>> Mul<Transform<N, U3, C>> for UnitQuaternion<N> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U4, U4>,
[src]
impl<N, C: TCategoryMul<TAffine>> Mul<Transform<N, U3, C>> for UnitQuaternion<N> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U4, U4>,
[src]impl<'a, N, C: TCategoryMul<TAffine>> Mul<Transform<N, U3, C>> for &'a UnitQuaternion<N> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U4, U4>,
[src]
impl<'a, N, C: TCategoryMul<TAffine>> Mul<Transform<N, U3, C>> for &'a UnitQuaternion<N> where
N: Scalar + Zero + One + ClosedAdd + ClosedMul + RealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U4, U4>,
[src]impl<N: SimdRealField> Mul<Translation<N, U3>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]
impl<N: SimdRealField> Mul<Translation<N, U3>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]type Output = Isometry<N, U3, UnitQuaternion<N>>
The resulting type after applying the *
operator.
fn mul(self, right: Translation<N, U3>) -> Self::Output
[src]
impl<'a, N: SimdRealField> Mul<Translation<N, U3>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]
impl<'a, N: SimdRealField> Mul<Translation<N, U3>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]type Output = Isometry<N, U3, UnitQuaternion<N>>
The resulting type after applying the *
operator.
fn mul(self, right: Translation<N, U3>) -> Self::Output
[src]
impl<'a, N: SimdRealField, SB: Storage<N, U3>> Mul<Unit<Matrix<N, U3, U1, SB>>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]
impl<'a, N: SimdRealField, SB: Storage<N, U3>> Mul<Unit<Matrix<N, U3, U1, SB>>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]impl<N: SimdRealField, SB: Storage<N, U3>> Mul<Unit<Matrix<N, U3, U1, SB>>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]
impl<N: SimdRealField, SB: Storage<N, U3>> Mul<Unit<Matrix<N, U3, U1, SB>>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U1>,
[src]impl<'a, N: SimdRealField> Mul<Unit<Quaternion<N>>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1>,
[src]
impl<'a, N: SimdRealField> Mul<Unit<Quaternion<N>>> for &'a UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1>,
[src]type Output = UnitQuaternion<N>
The resulting type after applying the *
operator.
fn mul(self, rhs: UnitQuaternion<N>) -> Self::Output
[src]
impl<N: SimdRealField> Mul<Unit<Quaternion<N>>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1>,
[src]
impl<N: SimdRealField> Mul<Unit<Quaternion<N>>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1>,
[src]type Output = UnitQuaternion<N>
The resulting type after applying the *
operator.
fn mul(self, rhs: UnitQuaternion<N>) -> Self::Output
[src]
impl<'b, N: SimdRealField> MulAssign<&'b Rotation<N, U3>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U3>,
[src]
impl<'b, N: SimdRealField> MulAssign<&'b Rotation<N, U3>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U3>,
[src]fn mul_assign(&mut self, rhs: &'b Rotation<N, U3>)
[src]
impl<'b, N: SimdRealField> MulAssign<&'b Unit<Quaternion<N>>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1>,
[src]
impl<'b, N: SimdRealField> MulAssign<&'b Unit<Quaternion<N>>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1>,
[src]fn mul_assign(&mut self, rhs: &'b UnitQuaternion<N>)
[src]
impl<N: SimdRealField> MulAssign<Rotation<N, U3>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U3>,
[src]
impl<N: SimdRealField> MulAssign<Rotation<N, U3>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1> + Allocator<N, U3, U3>,
[src]fn mul_assign(&mut self, rhs: Rotation<N, U3>)
[src]
impl<N: SimdRealField> MulAssign<Unit<Quaternion<N>>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1>,
[src]
impl<N: SimdRealField> MulAssign<Unit<Quaternion<N>>> for UnitQuaternion<N> where
N::Element: SimdRealField,
DefaultAllocator: Allocator<N, U4, U1>,
[src]fn mul_assign(&mut self, rhs: UnitQuaternion<N>)
[src]
impl<N: SimdRealField> One for UnitQuaternion<N> where
N::Element: SimdRealField,
[src]
impl<N: SimdRealField> One for UnitQuaternion<N> where
N::Element: SimdRealField,
[src]impl<N: Scalar + ClosedNeg + PartialEq> PartialEq<Unit<Quaternion<N>>> for UnitQuaternion<N>
[src]
impl<N: Scalar + ClosedNeg + PartialEq> PartialEq<Unit<Quaternion<N>>> for UnitQuaternion<N>
[src]impl<N: RealField + RelativeEq<Epsilon = N>> RelativeEq<Unit<Quaternion<N>>> for UnitQuaternion<N>
[src]
impl<N: RealField + RelativeEq<Epsilon = N>> RelativeEq<Unit<Quaternion<N>>> for UnitQuaternion<N>
[src]fn default_max_relative() -> Self::Epsilon
[src]
fn relative_eq(
&self,
other: &Self,
epsilon: Self::Epsilon,
max_relative: Self::Epsilon
) -> bool
[src]
&self,
other: &Self,
epsilon: Self::Epsilon,
max_relative: Self::Epsilon
) -> bool
pub fn relative_ne(
&self,
other: &Rhs,
epsilon: Self::Epsilon,
max_relative: Self::Epsilon
) -> bool
[src]
&self,
other: &Rhs,
epsilon: Self::Epsilon,
max_relative: Self::Epsilon
) -> bool
impl<N: Scalar + SimdValue> SimdValue for UnitQuaternion<N> where
N::Element: Scalar,
[src]
impl<N: Scalar + SimdValue> SimdValue for UnitQuaternion<N> where
N::Element: Scalar,
[src]type Element = UnitQuaternion<N::Element>
The type of the elements of each lane of this SIMD value.
type SimdBool = N::SimdBool
Type of the result of comparing two SIMD values like self
.
fn lanes() -> usize
[src]
fn splat(val: Self::Element) -> Self
[src]
fn extract(&self, i: usize) -> Self::Element
[src]
unsafe fn extract_unchecked(&self, i: usize) -> Self::Element
[src]
fn replace(&mut self, i: usize, val: Self::Element)
[src]
unsafe fn replace_unchecked(&mut self, i: usize, val: Self::Element)
[src]
fn select(self, cond: Self::SimdBool, other: Self) -> Self
[src]
pub fn map_lanes(self, f: impl Fn(Self::Element) -> Self::Element) -> Self where
Self: Clone,
[src]
Self: Clone,
pub fn zip_map_lanes(
self,
b: Self,
f: impl Fn(Self::Element, Self::Element) -> Self::Element
) -> Self where
Self: Clone,
[src]
self,
b: Self,
f: impl Fn(Self::Element, Self::Element) -> Self::Element
) -> Self where
Self: Clone,
impl<N1, N2, R> SubsetOf<Isometry<N2, U3, R>> for UnitQuaternion<N1> where
N1: RealField,
N2: RealField + SupersetOf<N1>,
R: AbstractRotation<N2, U3> + SupersetOf<Self>,
[src]
impl<N1, N2, R> SubsetOf<Isometry<N2, U3, R>> for UnitQuaternion<N1> where
N1: RealField,
N2: RealField + SupersetOf<N1>,
R: AbstractRotation<N2, U3> + SupersetOf<Self>,
[src]fn to_superset(&self) -> Isometry<N2, U3, R>
[src]
fn is_in_subset(iso: &Isometry<N2, U3, R>) -> bool
[src]
fn from_superset_unchecked(iso: &Isometry<N2, U3, R>) -> Self
[src]
pub fn from_superset(element: &T) -> Option<Self>
[src]
impl<N1: RealField, N2: RealField + SupersetOf<N1>> SubsetOf<Matrix<N2, U4, U4, <DefaultAllocator as Allocator<N2, U4, U4>>::Buffer>> for UnitQuaternion<N1>
[src]
impl<N1: RealField, N2: RealField + SupersetOf<N1>> SubsetOf<Matrix<N2, U4, U4, <DefaultAllocator as Allocator<N2, U4, U4>>::Buffer>> for UnitQuaternion<N1>
[src]fn to_superset(&self) -> Matrix4<N2>
[src]
fn is_in_subset(m: &Matrix4<N2>) -> bool
[src]
fn from_superset_unchecked(m: &Matrix4<N2>) -> Self
[src]
pub fn from_superset(element: &T) -> Option<Self>
[src]
impl<N1, N2> SubsetOf<Rotation<N2, U3>> for UnitQuaternion<N1> where
N1: RealField,
N2: RealField + SupersetOf<N1>,
[src]
impl<N1, N2> SubsetOf<Rotation<N2, U3>> for UnitQuaternion<N1> where
N1: RealField,
N2: RealField + SupersetOf<N1>,
[src]fn to_superset(&self) -> Rotation3<N2>
[src]
fn is_in_subset(rot: &Rotation3<N2>) -> bool
[src]
fn from_superset_unchecked(rot: &Rotation3<N2>) -> Self
[src]
pub fn from_superset(element: &T) -> Option<Self>
[src]
impl<N1, N2, R> SubsetOf<Similarity<N2, U3, R>> for UnitQuaternion<N1> where
N1: RealField,
N2: RealField + SupersetOf<N1>,
R: AbstractRotation<N2, U3> + SupersetOf<Self>,
[src]
impl<N1, N2, R> SubsetOf<Similarity<N2, U3, R>> for UnitQuaternion<N1> where
N1: RealField,
N2: RealField + SupersetOf<N1>,
R: AbstractRotation<N2, U3> + SupersetOf<Self>,
[src]fn to_superset(&self) -> Similarity<N2, U3, R>
[src]
fn is_in_subset(sim: &Similarity<N2, U3, R>) -> bool
[src]
fn from_superset_unchecked(sim: &Similarity<N2, U3, R>) -> Self
[src]
pub fn from_superset(element: &T) -> Option<Self>
[src]
impl<N1, N2, C> SubsetOf<Transform<N2, U3, C>> for UnitQuaternion<N1> where
N1: RealField,
N2: RealField + SupersetOf<N1>,
C: SuperTCategoryOf<TAffine>,
[src]
impl<N1, N2, C> SubsetOf<Transform<N2, U3, C>> for UnitQuaternion<N1> where
N1: RealField,
N2: RealField + SupersetOf<N1>,
C: SuperTCategoryOf<TAffine>,
[src]fn to_superset(&self) -> Transform<N2, U3, C>
[src]
fn is_in_subset(t: &Transform<N2, U3, C>) -> bool
[src]
fn from_superset_unchecked(t: &Transform<N2, U3, C>) -> Self
[src]
pub fn from_superset(element: &T) -> Option<Self>
[src]
impl<N1, N2> SubsetOf<Unit<Quaternion<N2>>> for UnitQuaternion<N1> where
N1: SimdRealField,
N2: SimdRealField + SupersetOf<N1>,
[src]
impl<N1, N2> SubsetOf<Unit<Quaternion<N2>>> for UnitQuaternion<N1> where
N1: SimdRealField,
N2: SimdRealField + SupersetOf<N1>,
[src]fn to_superset(&self) -> UnitQuaternion<N2>
[src]
fn is_in_subset(uq: &UnitQuaternion<N2>) -> bool
[src]
fn from_superset_unchecked(uq: &UnitQuaternion<N2>) -> Self
[src]
pub fn from_superset(element: &T) -> Option<Self>
[src]
impl<N: RealField + UlpsEq<Epsilon = N>> UlpsEq<Unit<Quaternion<N>>> for UnitQuaternion<N>
[src]
impl<N: RealField + UlpsEq<Epsilon = N>> UlpsEq<Unit<Quaternion<N>>> for UnitQuaternion<N>
[src]