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

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

A complex number with a norm equal to 1.

Implementations

impl<N: RealField> UnitComplex<N>[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)>[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 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 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);

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 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);

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 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());

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);

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);

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);

impl<N: RealField> UnitComplex<N>[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);

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.

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_matrix(m: &Matrix2<N>) -> Self[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
[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_between<SB, SC>(
    a: &Vector<N, U2, SB>,
    b: &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 = 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
    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: RealField> AbstractGroup<Multiplicative> for UnitComplex<N>[src]

impl<N: RealField> AbstractLoop<Multiplicative> for UnitComplex<N>[src]

impl<N: RealField> AbstractMagma<Multiplicative> for UnitComplex<N>[src]

impl<N: RealField> AbstractMonoid<Multiplicative> for UnitComplex<N>[src]

impl<N: RealField> AbstractQuasigroup<Multiplicative> for UnitComplex<N>[src]

impl<N: RealField> AbstractSemigroup<Multiplicative> for UnitComplex<N>[src]

impl<N: RealField> AffineTransformation<Point<N, U2>> for UnitComplex<N> where
    DefaultAllocator: Allocator<N, U2>, 
[src]

type Rotation = Self

Type of the first rotation to be applied.

type NonUniformScaling = Id

Type of the non-uniform scaling to be applied.

type Translation = Id

The type of the pure translation part of this affine transformation.

impl<N: RealField> DirectIsometry<Point<N, U2>> for UnitComplex<N> where
    DefaultAllocator: Allocator<N, U2>, 
[src]

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

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

type Output = UnitComplex<N>

The resulting type after applying the / operator.

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

type Output = UnitComplex<N>

The resulting type after applying the / operator.

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

type Output = Self

The resulting type after applying the / operator.

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

type Output = UnitComplex<N>

The resulting type after applying the / operator.

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

type Output = UnitComplex<N>

The resulting type after applying the / operator.

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

type Output = UnitComplex<N>

The resulting type after applying the / operator.

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

type Output = Self

The resulting type after applying the / operator.

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

type Output = UnitComplex<N>

The resulting type after applying the / operator.

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

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

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

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

impl<N: RealField> From<Rotation<N, U2>> for UnitComplex<N>[src]

impl<N: RealField> Identity<Multiplicative> for UnitComplex<N>[src]

impl<N: RealField> Isometry<Point<N, U2>> for UnitComplex<N> where
    DefaultAllocator: Allocator<N, U2>, 
[src]

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

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

The resulting type after applying the * operator.

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

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

The resulting type after applying the * operator.

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

type Output = Vector2<N>

The resulting type after applying the * operator.

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

type Output = Vector2<N>

The resulting type after applying the * operator.

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

type Output = Point2<N>

The resulting type after applying the * operator.

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

type Output = Point2<N>

The resulting type after applying the * operator.

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

type Output = UnitComplex<N>

The resulting type after applying the * operator.

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

type Output = UnitComplex<N>

The resulting type after applying the * operator.

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

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

The resulting type after applying the * operator.

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

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

The resulting type after applying the * operator.

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

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

The resulting type after applying the * operator.

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

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

The resulting type after applying the * operator.

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

type Output = Self

The resulting type after applying the * operator.

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

type Output = UnitComplex<N>

The resulting type after applying the * operator.

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

type Output = Unit<Vector2<N>>

The resulting type after applying the * operator.

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

type Output = Unit<Vector2<N>>

The resulting type after applying the * operator.

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

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

The resulting type after applying the * operator.

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

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

The resulting type after applying the * operator.

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

type Output = Vector2<N>

The resulting type after applying the * operator.

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

type Output = Vector2<N>

The resulting type after applying the * operator.

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

type Output = Point2<N>

The resulting type after applying the * operator.

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

type Output = Point2<N>

The resulting type after applying the * operator.

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

type Output = UnitComplex<N>

The resulting type after applying the * operator.

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

type Output = UnitComplex<N>

The resulting type after applying the * operator.

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

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

The resulting type after applying the * operator.

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

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

The resulting type after applying the * operator.

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

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

The resulting type after applying the * operator.

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

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

The resulting type after applying the * operator.

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

type Output = Self

The resulting type after applying the * operator.

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

type Output = UnitComplex<N>

The resulting type after applying the * operator.

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

type Output = Unit<Vector2<N>>

The resulting type after applying the * operator.

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

type Output = Unit<Vector2<N>>

The resulting type after applying the * operator.

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

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

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

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

impl<N: RealField> One for UnitComplex<N>[src]

impl<N: RealField> OrthogonalTransformation<Point<N, U2>> for UnitComplex<N> where
    DefaultAllocator: Allocator<N, U2>, 
[src]

impl<N: RealField> ProjectiveTransformation<Point<N, U2>> for UnitComplex<N> where
    DefaultAllocator: Allocator<N, U2>, 
[src]

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

impl<N: RealField> Rotation<Point<N, U2>> for UnitComplex<N> where
    DefaultAllocator: Allocator<N, U2>, 
[src]

impl<N: RealField> Similarity<Point<N, U2>> for UnitComplex<N> where
    DefaultAllocator: Allocator<N, U2>, 
[src]

type Scaling = Id

The type of the pure (uniform) scaling part of this similarity transformation.

impl<N1, N2, R> SubsetOf<Isometry<N2, U2, R>> for UnitComplex<N1> where
    N1: RealField,
    N2: RealField + SupersetOf<N1>,
    R: AlgaRotation<Point2<N2>> + 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: AlgaRotation<Point2<N2>> + 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> Transformation<Point<N, U2>> for UnitComplex<N> where
    DefaultAllocator: Allocator<N, U2>, 
[src]

impl<N: RealField> TwoSidedInverse<Multiplicative> for UnitComplex<N>[src]

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