Type Definition nalgebra::geometry::UnitComplex[][src]

type UnitComplex<N> = Unit<Complex<N>>;

Implementations

impl<N: SimdRealField> UnitComplex<N> where
    N::Element: SimdRealField
[src]

pub fn angle(&self) -> N[src]

The rotation angle in ]-pi; pi] of this unit complex number.

Example

let rot = UnitComplex::new(1.78);
assert_eq!(rot.angle(), 1.78);

pub fn sin_angle(&self) -> N[src]

The sine of the rotation angle.

Example

let angle = 1.78f32;
let rot = UnitComplex::new(angle);
assert_eq!(rot.sin_angle(), angle.sin());

pub fn cos_angle(&self) -> N[src]

The cosine of the rotation angle.

Example

let angle = 1.78f32;
let rot = UnitComplex::new(angle);
assert_eq!(rot.cos_angle(),angle.cos());

pub fn scaled_axis(&self) -> Vector1<N>[src]

The rotation angle returned as a 1-dimensional vector.

This is generally used in the context of generic programming. Using the .angle() method instead is more common.

pub fn axis_angle(&self) -> Option<(Unit<Vector1<N>>, N)> where
    N: RealField
[src]

The rotation axis and angle in ]0, pi] of this complex number.

This is generally used in the context of generic programming. Using the .angle() method instead is more common. Returns None if the angle is zero.

pub fn angle_to(&self, other: &Self) -> N[src]

The rotation angle needed to make self and other coincide.

Example

let rot1 = UnitComplex::new(0.1);
let rot2 = UnitComplex::new(1.7);
assert_relative_eq!(rot1.angle_to(&rot2), 1.6);

impl<N: SimdRealField> UnitComplex<N> where
    N::Element: SimdRealField
[src]

#[must_use = "Did you mean to use conjugate_mut()?"]pub fn conjugate(&self) -> Self[src]

Compute the conjugate of this unit complex number.

Example

let rot = UnitComplex::new(1.78);
let conj = rot.conjugate();
assert_eq!(rot.complex().im, -conj.complex().im);
assert_eq!(rot.complex().re, conj.complex().re);

#[must_use = "Did you mean to use inverse_mut()?"]pub fn inverse(&self) -> Self[src]

Inverts this complex number if it is not zero.

Example

let rot = UnitComplex::new(1.2);
let inv = rot.inverse();
assert_relative_eq!(rot * inv, UnitComplex::identity(), epsilon = 1.0e-6);
assert_relative_eq!(inv * rot, UnitComplex::identity(), epsilon = 1.0e-6);

pub fn conjugate_mut(&mut self)[src]

Compute in-place the conjugate of this unit complex number.

Example

let angle = 1.7;
let rot = UnitComplex::new(angle);
let mut conj = UnitComplex::new(angle);
conj.conjugate_mut();
assert_eq!(rot.complex().im, -conj.complex().im);
assert_eq!(rot.complex().re, conj.complex().re);

pub fn inverse_mut(&mut self)[src]

Inverts in-place this unit complex number.

Example

let angle = 1.7;
let mut rot = UnitComplex::new(angle);
rot.inverse_mut();
assert_relative_eq!(rot * UnitComplex::new(angle), UnitComplex::identity());
assert_relative_eq!(UnitComplex::new(angle) * rot, UnitComplex::identity());

impl<N: SimdRealField> UnitComplex<N> where
    N::Element: SimdRealField
[src]

pub fn to_rotation_matrix(&self) -> Rotation2<N>[src]

Builds the rotation matrix corresponding to this unit complex number.

Example

let rot = UnitComplex::new(f32::consts::FRAC_PI_6);
let expected = Rotation2::new(f32::consts::FRAC_PI_6);
assert_eq!(rot.to_rotation_matrix(), expected);

pub fn to_homogeneous(&self) -> Matrix3<N>[src]

Converts this unit complex number into its equivalent homogeneous transformation matrix.

Example

let rot = UnitComplex::new(f32::consts::FRAC_PI_6);
let expected = Matrix3::new(0.8660254, -0.5,      0.0,
                            0.5,       0.8660254, 0.0,
                            0.0,       0.0,       1.0);
assert_eq!(rot.to_homogeneous(), expected);

impl<N: SimdRealField> UnitComplex<N> where
    N::Element: SimdRealField
[src]

pub fn transform_point(&self, pt: &Point2<N>) -> Point2<N>[src]

Rotate the given point by this unit complex number.

This is the same as the multiplication self * pt.

Example

let rot = UnitComplex::new(f32::consts::FRAC_PI_2);
let transformed_point = rot.transform_point(&Point2::new(1.0, 2.0));
assert_relative_eq!(transformed_point, Point2::new(-2.0, 1.0), epsilon = 1.0e-6);

pub fn transform_vector(&self, v: &Vector2<N>) -> Vector2<N>[src]

Rotate the given vector by this unit complex number.

This is the same as the multiplication self * v.

Example

let rot = UnitComplex::new(f32::consts::FRAC_PI_2);
let transformed_vector = rot.transform_vector(&Vector2::new(1.0, 2.0));
assert_relative_eq!(transformed_vector, Vector2::new(-2.0, 1.0), epsilon = 1.0e-6);

pub fn inverse_transform_point(&self, pt: &Point2<N>) -> Point2<N>[src]

Rotate the given point by the inverse of this unit complex number.

Example

let rot = UnitComplex::new(f32::consts::FRAC_PI_2);
let transformed_point = rot.inverse_transform_point(&Point2::new(1.0, 2.0));
assert_relative_eq!(transformed_point, Point2::new(2.0, -1.0), epsilon = 1.0e-6);

pub fn inverse_transform_vector(&self, v: &Vector2<N>) -> Vector2<N>[src]

Rotate the given vector by the inverse of this unit complex number.

Example

let rot = UnitComplex::new(f32::consts::FRAC_PI_2);
let transformed_vector = rot.inverse_transform_vector(&Vector2::new(1.0, 2.0));
assert_relative_eq!(transformed_vector, Vector2::new(2.0, -1.0), epsilon = 1.0e-6);

pub fn inverse_transform_unit_vector(
    &self,
    v: &Unit<Vector2<N>>
) -> Unit<Vector2<N>>
[src]

Rotate the given vector by the inverse of this unit complex number.

Example

let rot = UnitComplex::new(f32::consts::FRAC_PI_2);
let transformed_vector = rot.inverse_transform_unit_vector(&Vector2::x_axis());
assert_relative_eq!(transformed_vector, -Vector2::y_axis(), epsilon = 1.0e-6);

impl<N: SimdRealField> UnitComplex<N> where
    N::Element: SimdRealField
[src]

pub fn slerp(&self, other: &Self, t: N) -> Self[src]

Spherical linear interpolation between two rotations represented as unit complex numbers.

Examples:


let rot1 = UnitComplex::new(std::f32::consts::FRAC_PI_4);
let rot2 = UnitComplex::new(-std::f32::consts::PI);

let rot = rot1.slerp(&rot2, 1.0 / 3.0);

assert_relative_eq!(rot.angle(), std::f32::consts::FRAC_PI_2);

impl<N: SimdRealField> UnitComplex<N> where
    N::Element: SimdRealField
[src]

pub fn identity() -> Self[src]

The unit complex number multiplicative identity.

Example

let rot1 = UnitComplex::identity();
let rot2 = UnitComplex::new(1.7);

assert_eq!(rot1 * rot2, rot2);
assert_eq!(rot2 * rot1, rot2);

impl<N: SimdRealField> UnitComplex<N> where
    N::Element: SimdRealField
[src]

pub fn new(angle: N) -> Self[src]

Builds the unit complex number corresponding to the rotation with the given angle.

Example

let rot = UnitComplex::new(f32::consts::FRAC_PI_2);

assert_relative_eq!(rot * Point2::new(3.0, 4.0), Point2::new(-4.0, 3.0));

pub fn from_angle(angle: N) -> Self[src]

Builds the unit complex number corresponding to the rotation with the angle.

Same as Self::new(angle).

Example

let rot = UnitComplex::from_angle(f32::consts::FRAC_PI_2);

assert_relative_eq!(rot * Point2::new(3.0, 4.0), Point2::new(-4.0, 3.0));

pub fn from_cos_sin_unchecked(cos: N, sin: N) -> Self[src]

Builds the unit complex number from the sinus and cosinus of the rotation angle.

The input values are not checked to actually be cosines and sine of the same value. Is is generally preferable to use the ::new(angle) constructor instead.

Example

let angle = f32::consts::FRAC_PI_2;
let rot = UnitComplex::from_cos_sin_unchecked(angle.cos(), angle.sin());

assert_relative_eq!(rot * Point2::new(3.0, 4.0), Point2::new(-4.0, 3.0));

pub fn from_scaled_axis<SB: Storage<N, U1>>(
    axisangle: Vector<N, U1, SB>
) -> Self
[src]

Builds a unit complex rotation from an angle in radian wrapped in a 1-dimensional vector.

This is generally used in the context of generic programming. Using the ::new(angle) method instead is more common.

impl<N: SimdRealField> UnitComplex<N> where
    N::Element: SimdRealField
[src]

pub fn cast<To: Scalar>(self) -> UnitComplex<To> where
    UnitComplex<To>: SupersetOf<Self>, 
[src]

Cast the components of self to another type.

Example

let c = UnitComplex::new(1.0f64);
let c2 = c.cast::<f32>();
assert_eq!(c2, UnitComplex::new(1.0f32));

pub fn complex(&self) -> &Complex<N>[src]

The underlying complex number.

Same as self.as_ref().

Example

let angle = 1.78f32;
let rot = UnitComplex::new(angle);
assert_eq!(*rot.complex(), Complex::new(angle.cos(), angle.sin()));

pub fn from_complex(q: Complex<N>) -> Self[src]

Creates a new unit complex number from a complex number.

The input complex number will be normalized.

pub fn from_complex_and_get(q: Complex<N>) -> (Self, N)[src]

Creates a new unit complex number from a complex number.

The input complex number will be normalized. Returns the norm of the complex number as well.

pub fn from_rotation_matrix(rotmat: &Rotation2<N>) -> Self[src]

Builds the unit complex number from the corresponding 2D rotation matrix.

Example

let rot = Rotation2::new(1.7);
let complex = UnitComplex::from_rotation_matrix(&rot);
assert_eq!(complex, UnitComplex::new(1.7));

pub fn from_basis_unchecked(basis: &[Vector2<N>; 2]) -> Self[src]

Builds a rotation from a basis assumed to be orthonormal.

In order to get a valid unit-quaternion, the input must be an orthonormal basis, i.e., all vectors are normalized, and the are all orthogonal to each other. These invariants are not checked by this method.

pub fn from_matrix(m: &Matrix2<N>) -> Self where
    N: RealField
[src]

Builds an unit complex 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: &Matrix2<N>,
    eps: N,
    max_iter: usize,
    guess: Self
) -> Self where
    N: RealField
[src]

Builds an unit complex 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 to 0.
  • 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 to UnitQuaternion::identity() if no other guesses come to mind.

pub fn rotation_to(&self, other: &Self) -> Self[src]

The unit complex number needed to make self and other coincide.

The result is such that: self.rotation_to(other) * self == other.

Example

let rot1 = UnitComplex::new(0.1);
let rot2 = UnitComplex::new(1.7);
let rot_to = rot1.rotation_to(&rot2);

assert_relative_eq!(rot_to * rot1, rot2);
assert_relative_eq!(rot_to.inverse() * rot2, rot1);

pub fn powf(&self, n: N) -> Self[src]

Raise this unit complex number to a given floating power.

This returns the unit complex number that identifies a rotation angle equal to self.angle() × n.

Example

let rot = UnitComplex::new(0.78);
let pow = rot.powf(2.0);
assert_relative_eq!(pow.angle(), 2.0 * 0.78);

impl<N: SimdRealField> UnitComplex<N> where
    N::Element: SimdRealField
[src]

pub fn rotation_between<SB, SC>(
    a: &Vector<N, U2, SB>,
    b: &Vector<N, U2, SC>
) -> Self where
    N: RealField,
    SB: Storage<N, U2>,
    SC: Storage<N, U2>, 
[src]

The unit complex needed to make a and b be collinear and point toward the same direction.

Example

let a = Vector2::new(1.0, 2.0);
let b = Vector2::new(2.0, 1.0);
let rot = UnitComplex::rotation_between(&a, &b);
assert_relative_eq!(rot * a, b);
assert_relative_eq!(rot.inverse() * b, a);

pub fn scaled_rotation_between<SB, SC>(
    a: &Vector<N, U2, SB>,
    b: &Vector<N, U2, SC>,
    s: N
) -> Self where
    N: RealField,
    SB: Storage<N, U2>,
    SC: Storage<N, U2>, 
[src]

The smallest rotation needed to make a and b collinear and point toward the same direction, raised to the power s.

Example

let a = Vector2::new(1.0, 2.0);
let b = Vector2::new(2.0, 1.0);
let rot2 = UnitComplex::scaled_rotation_between(&a, &b, 0.2);
let rot5 = UnitComplex::scaled_rotation_between(&a, &b, 0.5);
assert_relative_eq!(rot2 * rot2 * rot2 * rot2 * rot2 * a, b, epsilon = 1.0e-6);
assert_relative_eq!(rot5 * rot5 * a, b, epsilon = 1.0e-6);

pub fn rotation_between_axis<SB, SC>(
    a: &Unit<Vector<N, U2, SB>>,
    b: &Unit<Vector<N, U2, SC>>
) -> Self where
    SB: Storage<N, U2>,
    SC: Storage<N, U2>, 
[src]

The unit complex needed to make a and b be collinear and point toward the same direction.

Example

let a = Unit::new_normalize(Vector2::new(1.0, 2.0));
let b = Unit::new_normalize(Vector2::new(2.0, 1.0));
let rot = UnitComplex::rotation_between_axis(&a, &b);
assert_relative_eq!(rot * a, b);
assert_relative_eq!(rot.inverse() * b, a);

pub fn scaled_rotation_between_axis<SB, SC>(
    na: &Unit<Vector<N, U2, SB>>,
    nb: &Unit<Vector<N, U2, SC>>,
    s: N
) -> Self where
    SB: Storage<N, U2>,
    SC: Storage<N, U2>, 
[src]

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(Vector2::new(1.0, 2.0));
let b = Unit::new_normalize(Vector2::new(2.0, 1.0));
let rot2 = UnitComplex::scaled_rotation_between_axis(&a, &b, 0.2);
let rot5 = UnitComplex::scaled_rotation_between_axis(&a, &b, 0.5);
assert_relative_eq!(rot2 * rot2 * rot2 * rot2 * rot2 * a, b, epsilon = 1.0e-6);
assert_relative_eq!(rot5 * rot5 * a, b, epsilon = 1.0e-6);

Trait Implementations

impl<N: RealField> AbsDiffEq<Unit<Complex<N>>> for UnitComplex<N>[src]

type Epsilon = N

Used for specifying relative comparisons.

impl<N: SimdRealField> AbstractRotation<N, U2> for UnitComplex<N> where
    N::Element: SimdRealField
[src]

impl<N: RealField + Display> Display for UnitComplex<N>[src]

impl<'b, N: SimdRealField> Div<&'b Rotation<N, U2>> for UnitComplex<N> where
    N::Element: SimdRealField,
    DefaultAllocator: Allocator<N, U2, U2>, 
[src]

type Output = UnitComplex<N>

The resulting type after applying the / operator.

impl<'a, 'b, N: SimdRealField> Div<&'b Rotation<N, U2>> for &'a UnitComplex<N> where
    N::Element: SimdRealField,
    DefaultAllocator: Allocator<N, U2, U2>, 
[src]

type Output = UnitComplex<N>

The resulting type after applying the / operator.

impl<'b, N: SimdRealField> Div<&'b Unit<Complex<N>>> for UnitComplex<N> where
    N::Element: SimdRealField
[src]

type Output = Self

The resulting type after applying the / operator.

impl<'a, 'b, N: SimdRealField> Div<&'b Unit<Complex<N>>> for &'a UnitComplex<N> where
    N::Element: SimdRealField
[src]

type Output = UnitComplex<N>

The resulting type after applying the / operator.

impl<N: SimdRealField> Div<Rotation<N, U2>> for UnitComplex<N> where
    N::Element: SimdRealField,
    DefaultAllocator: Allocator<N, U2, U2>, 
[src]

type Output = UnitComplex<N>

The resulting type after applying the / operator.

impl<'a, N: SimdRealField> Div<Rotation<N, U2>> for &'a UnitComplex<N> where
    N::Element: SimdRealField,
    DefaultAllocator: Allocator<N, U2, U2>, 
[src]

type Output = UnitComplex<N>

The resulting type after applying the / operator.

impl<N: SimdRealField> Div<Unit<Complex<N>>> for UnitComplex<N> where
    N::Element: SimdRealField
[src]

type Output = Self

The resulting type after applying the / operator.

impl<'a, N: SimdRealField> Div<Unit<Complex<N>>> for &'a UnitComplex<N> where
    N::Element: SimdRealField
[src]

type Output = UnitComplex<N>

The resulting type after applying the / operator.

impl<'b, N: SimdRealField> DivAssign<&'b Rotation<N, U2>> for UnitComplex<N> where
    N::Element: SimdRealField,
    DefaultAllocator: Allocator<N, U2, U2>, 
[src]

impl<'b, N: SimdRealField> DivAssign<&'b Unit<Complex<N>>> for UnitComplex<N> where
    N::Element: SimdRealField
[src]

impl<N: SimdRealField> DivAssign<Rotation<N, U2>> for UnitComplex<N> where
    N::Element: SimdRealField,
    DefaultAllocator: Allocator<N, U2, U2>, 
[src]

impl<N: SimdRealField> DivAssign<Unit<Complex<N>>> for UnitComplex<N> where
    N::Element: SimdRealField
[src]

impl<N: Scalar + Eq> Eq for UnitComplex<N>[src]

impl<N: Scalar + Copy + PrimitiveSimdValue> From<[Unit<Complex<<N as SimdValue>::Element>>; 16]> for UnitComplex<N> where
    N: From<[<N as SimdValue>::Element; 16]>,
    N::Element: Scalar + Copy
[src]

impl<N: Scalar + Copy + PrimitiveSimdValue> From<[Unit<Complex<<N as SimdValue>::Element>>; 2]> for UnitComplex<N> where
    N: From<[<N as SimdValue>::Element; 2]>,
    N::Element: Scalar + Copy
[src]

impl<N: Scalar + Copy + PrimitiveSimdValue> From<[Unit<Complex<<N as SimdValue>::Element>>; 4]> for UnitComplex<N> where
    N: From<[<N as SimdValue>::Element; 4]>,
    N::Element: Scalar + Copy
[src]

impl<N: Scalar + Copy + PrimitiveSimdValue> From<[Unit<Complex<<N as SimdValue>::Element>>; 8]> for UnitComplex<N> where
    N: From<[<N as SimdValue>::Element; 8]>,
    N::Element: Scalar + Copy
[src]

impl<N: SimdRealField> From<Rotation<N, U2>> for UnitComplex<N> where
    N::Element: SimdRealField
[src]

impl<'b, N: SimdRealField> Mul<&'b Isometry<N, U2, Unit<Complex<N>>>> for UnitComplex<N> where
    N::Element: SimdRealField,
    DefaultAllocator: Allocator<N, U2, U1>, 
[src]

type Output = Isometry<N, U2, UnitComplex<N>>

The resulting type after applying the * operator.

impl<'a, 'b, N: SimdRealField> Mul<&'b Isometry<N, U2, Unit<Complex<N>>>> for &'a UnitComplex<N> where
    N::Element: SimdRealField,
    DefaultAllocator: Allocator<N, U2, U1>, 
[src]

type Output = Isometry<N, U2, UnitComplex<N>>

The resulting type after applying the * operator.

impl<'b, N: SimdRealField, S: Storage<N, U2>> Mul<&'b Matrix<N, U2, U1, S>> for UnitComplex<N> where
    N::Element: SimdRealField,
    DefaultAllocator: Allocator<N, U2, U1>, 
[src]

type Output = Vector2<N>

The resulting type after applying the * operator.

impl<'a, 'b, N: SimdRealField, S: Storage<N, U2>> Mul<&'b Matrix<N, U2, U1, S>> for &'a UnitComplex<N> where
    N::Element: SimdRealField,
    DefaultAllocator: Allocator<N, U2, U1>, 
[src]

type Output = Vector2<N>

The resulting type after applying the * operator.

impl<'b, N: SimdRealField> Mul<&'b Point<N, U2>> for UnitComplex<N> where
    N::Element: SimdRealField,
    DefaultAllocator: Allocator<N, U2, U1>, 
[src]

type Output = Point2<N>

The resulting type after applying the * operator.

impl<'a, 'b, N: SimdRealField> Mul<&'b Point<N, U2>> for &'a UnitComplex<N> where
    N::Element: SimdRealField,
    DefaultAllocator: Allocator<N, U2, U1>, 
[src]

type Output = Point2<N>

The resulting type after applying the * operator.

impl<'b, N: SimdRealField> Mul<&'b Rotation<N, U2>> for UnitComplex<N> where
    N::Element: SimdRealField,
    DefaultAllocator: Allocator<N, U2, U2>, 
[src]

type Output = UnitComplex<N>

The resulting type after applying the * operator.

impl<'a, 'b, N: SimdRealField> Mul<&'b Rotation<N, U2>> for &'a UnitComplex<N> where
    N::Element: SimdRealField,
    DefaultAllocator: Allocator<N, U2, U2>, 
[src]

type Output = UnitComplex<N>

The resulting type after applying the * operator.

impl<'b, N: SimdRealField> Mul<&'b Similarity<N, U2, Unit<Complex<N>>>> for UnitComplex<N> where
    N::Element: SimdRealField,
    DefaultAllocator: Allocator<N, U2, U1>, 
[src]

type Output = Similarity<N, U2, UnitComplex<N>>

The resulting type after applying the * operator.

impl<'a, 'b, N: SimdRealField> Mul<&'b Similarity<N, U2, Unit<Complex<N>>>> for &'a UnitComplex<N> where
    N::Element: SimdRealField,
    DefaultAllocator: Allocator<N, U2, U1>, 
[src]

type Output = Similarity<N, U2, UnitComplex<N>>

The resulting type after applying the * operator.

impl<'b, N: SimdRealField> Mul<&'b Translation<N, U2>> for UnitComplex<N> where
    N::Element: SimdRealField,
    DefaultAllocator: Allocator<N, U2, U1>, 
[src]

type Output = Isometry<N, U2, UnitComplex<N>>

The resulting type after applying the * operator.

impl<'a, 'b, N: SimdRealField> Mul<&'b Translation<N, U2>> for &'a UnitComplex<N> where
    N::Element: SimdRealField,
    DefaultAllocator: Allocator<N, U2, U1>, 
[src]

type Output = Isometry<N, U2, UnitComplex<N>>

The resulting type after applying the * operator.

impl<'b, N: SimdRealField> Mul<&'b Unit<Complex<N>>> for UnitComplex<N> where
    N::Element: SimdRealField
[src]

type Output = Self

The resulting type after applying the * operator.

impl<'a, 'b, N: SimdRealField> Mul<&'b Unit<Complex<N>>> for &'a UnitComplex<N> where
    N::Element: SimdRealField
[src]

type Output = UnitComplex<N>

The resulting type after applying the * operator.

impl<'b, N: SimdRealField, S: Storage<N, U2>> Mul<&'b Unit<Matrix<N, U2, U1, S>>> for UnitComplex<N> where
    N::Element: SimdRealField,
    DefaultAllocator: Allocator<N, U2, U1>, 
[src]

type Output = Unit<Vector2<N>>

The resulting type after applying the * operator.

impl<'a, 'b, N: SimdRealField, S: Storage<N, U2>> Mul<&'b Unit<Matrix<N, U2, U1, S>>> for &'a UnitComplex<N> where
    N::Element: SimdRealField,
    DefaultAllocator: Allocator<N, U2, U1>, 
[src]

type Output = Unit<Vector2<N>>

The resulting type after applying the * operator.

impl<N: SimdRealField> Mul<Isometry<N, U2, Unit<Complex<N>>>> for UnitComplex<N> where
    N::Element: SimdRealField,
    DefaultAllocator: Allocator<N, U2, U1>, 
[src]

type Output = Isometry<N, U2, UnitComplex<N>>

The resulting type after applying the * operator.

impl<'a, N: SimdRealField> Mul<Isometry<N, U2, Unit<Complex<N>>>> for &'a UnitComplex<N> where
    N::Element: SimdRealField,
    DefaultAllocator: Allocator<N, U2, U1>, 
[src]

type Output = Isometry<N, U2, UnitComplex<N>>

The resulting type after applying the * operator.

impl<N: SimdRealField, S: Storage<N, U2>> Mul<Matrix<N, U2, U1, S>> for UnitComplex<N> where
    N::Element: SimdRealField,
    DefaultAllocator: Allocator<N, U2, U1>, 
[src]

type Output = Vector2<N>

The resulting type after applying the * operator.

impl<'a, N: SimdRealField, S: Storage<N, U2>> Mul<Matrix<N, U2, U1, S>> for &'a UnitComplex<N> where
    N::Element: SimdRealField,
    DefaultAllocator: Allocator<N, U2, U1>, 
[src]

type Output = Vector2<N>

The resulting type after applying the * operator.

impl<N: SimdRealField> Mul<Point<N, U2>> for UnitComplex<N> where
    N::Element: SimdRealField,
    DefaultAllocator: Allocator<N, U2, U1>, 
[src]

type Output = Point2<N>

The resulting type after applying the * operator.

impl<'a, N: SimdRealField> Mul<Point<N, U2>> for &'a UnitComplex<N> where
    N::Element: SimdRealField,
    DefaultAllocator: Allocator<N, U2, U1>, 
[src]

type Output = Point2<N>

The resulting type after applying the * operator.

impl<N: SimdRealField> Mul<Rotation<N, U2>> for UnitComplex<N> where
    N::Element: SimdRealField,
    DefaultAllocator: Allocator<N, U2, U2>, 
[src]

type Output = UnitComplex<N>

The resulting type after applying the * operator.

impl<'a, N: SimdRealField> Mul<Rotation<N, U2>> for &'a UnitComplex<N> where
    N::Element: SimdRealField,
    DefaultAllocator: Allocator<N, U2, U2>, 
[src]

type Output = UnitComplex<N>

The resulting type after applying the * operator.

impl<N: SimdRealField> Mul<Similarity<N, U2, Unit<Complex<N>>>> for UnitComplex<N> where
    N::Element: SimdRealField,
    DefaultAllocator: Allocator<N, U2, U1>, 
[src]

type Output = Similarity<N, U2, UnitComplex<N>>

The resulting type after applying the * operator.

impl<'a, N: SimdRealField> Mul<Similarity<N, U2, Unit<Complex<N>>>> for &'a UnitComplex<N> where
    N::Element: SimdRealField,
    DefaultAllocator: Allocator<N, U2, U1>, 
[src]

type Output = Similarity<N, U2, UnitComplex<N>>

The resulting type after applying the * operator.

impl<N: SimdRealField> Mul<Translation<N, U2>> for UnitComplex<N> where
    N::Element: SimdRealField,
    DefaultAllocator: Allocator<N, U2, U1>, 
[src]

type Output = Isometry<N, U2, UnitComplex<N>>

The resulting type after applying the * operator.

impl<'a, N: SimdRealField> Mul<Translation<N, U2>> for &'a UnitComplex<N> where
    N::Element: SimdRealField,
    DefaultAllocator: Allocator<N, U2, U1>, 
[src]

type Output = Isometry<N, U2, UnitComplex<N>>

The resulting type after applying the * operator.

impl<N: SimdRealField> Mul<Unit<Complex<N>>> for UnitComplex<N>[src]

type Output = Self

The resulting type after applying the * operator.

impl<'a, N: SimdRealField> Mul<Unit<Complex<N>>> for &'a UnitComplex<N> where
    N::Element: SimdRealField
[src]

type Output = UnitComplex<N>

The resulting type after applying the * operator.

impl<N: SimdRealField, S: Storage<N, U2>> Mul<Unit<Matrix<N, U2, U1, S>>> for UnitComplex<N> where
    N::Element: SimdRealField,
    DefaultAllocator: Allocator<N, U2, U1>, 
[src]

type Output = Unit<Vector2<N>>

The resulting type after applying the * operator.

impl<'a, N: SimdRealField, S: Storage<N, U2>> Mul<Unit<Matrix<N, U2, U1, S>>> for &'a UnitComplex<N> where
    N::Element: SimdRealField,
    DefaultAllocator: Allocator<N, U2, U1>, 
[src]

type Output = Unit<Vector2<N>>

The resulting type after applying the * operator.

impl<'b, N: SimdRealField> MulAssign<&'b Rotation<N, U2>> for UnitComplex<N> where
    N::Element: SimdRealField,
    DefaultAllocator: Allocator<N, U2, U2>, 
[src]

impl<'b, N: SimdRealField> MulAssign<&'b Unit<Complex<N>>> for UnitComplex<N> where
    N::Element: SimdRealField
[src]

impl<N: SimdRealField> MulAssign<Rotation<N, U2>> for UnitComplex<N> where
    N::Element: SimdRealField,
    DefaultAllocator: Allocator<N, U2, U2>, 
[src]

impl<N: SimdRealField> MulAssign<Unit<Complex<N>>> for UnitComplex<N> where
    N::Element: SimdRealField
[src]

impl<N: SimdRealField> One for UnitComplex<N> where
    N::Element: SimdRealField
[src]

impl<N: Scalar + PartialEq> PartialEq<Unit<Complex<N>>> for UnitComplex<N>[src]

impl<N: RealField> RelativeEq<Unit<Complex<N>>> for UnitComplex<N>[src]

impl<N: SimdRealField> SimdValue for UnitComplex<N> where
    N::Element: SimdRealField
[src]

type Element = UnitComplex<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.

impl<N1, N2, R> SubsetOf<Isometry<N2, U2, R>> for UnitComplex<N1> where
    N1: RealField,
    N2: RealField + SupersetOf<N1>,
    R: AbstractRotation<N2, U2> + SupersetOf<Self>, 
[src]

impl<N1: RealField, N2: RealField + SupersetOf<N1>> SubsetOf<Matrix<N2, U3, U3, <DefaultAllocator as Allocator<N2, U3, U3>>::Buffer>> for UnitComplex<N1>[src]

impl<N1, N2> SubsetOf<Rotation<N2, U2>> for UnitComplex<N1> where
    N1: RealField,
    N2: RealField + SupersetOf<N1>, 
[src]

impl<N1, N2, R> SubsetOf<Similarity<N2, U2, R>> for UnitComplex<N1> where
    N1: RealField,
    N2: RealField + SupersetOf<N1>,
    R: AbstractRotation<N2, U2> + SupersetOf<Self>, 
[src]

impl<N1, N2, C> SubsetOf<Transform<N2, U2, C>> for UnitComplex<N1> where
    N1: RealField,
    N2: RealField + SupersetOf<N1>,
    C: SuperTCategoryOf<TAffine>, 
[src]

impl<N1, N2> SubsetOf<Unit<Complex<N2>>> for UnitComplex<N1> where
    N1: RealField,
    N2: RealField + SupersetOf<N1>, 
[src]

impl<N: RealField> UlpsEq<Unit<Complex<N>>> for UnitComplex<N>[src]