Trait alga::linear::AffineTransformation[][src]

pub trait AffineTransformation<E: EuclideanSpace>: ProjectiveTransformation<E> {
    type Rotation: Rotation<E>;
    type NonUniformScaling: AffineTransformation<E>;
    type Translation: Translation<E>;
    fn decompose(
        &self
    ) -> (Self::Translation, Self::Rotation, Self::NonUniformScaling, Self::Rotation);
fn append_translation(&self, t: &Self::Translation) -> Self;
fn prepend_translation(&self, t: &Self::Translation) -> Self;
fn append_rotation(&self, r: &Self::Rotation) -> Self;
fn prepend_rotation(&self, r: &Self::Rotation) -> Self;
fn append_scaling(&self, s: &Self::NonUniformScaling) -> Self;
fn prepend_scaling(&self, s: &Self::NonUniformScaling) -> Self; fn append_rotation_wrt_point(
        &self,
        r: &Self::Rotation,
        p: &E
    ) -> Option<Self> { ... } }

The group of affine transformations. They are decomposable into a rotation, a non-uniform scaling, a second rotation, and a translation (applied in that order).

Associated Types

type Rotation: Rotation<E>[src]

Type of the first rotation to be applied.

type NonUniformScaling: AffineTransformation<E>[src]

Type of the non-uniform scaling to be applied.

type Translation: Translation<E>[src]

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

Loading content...

Required methods

fn decompose(
    &self
) -> (Self::Translation, Self::Rotation, Self::NonUniformScaling, Self::Rotation)
[src]

Decomposes this affine transformation into a rotation followed by a non-uniform scaling, followed by a rotation, followed by a translation.

fn append_translation(&self, t: &Self::Translation) -> Self[src]

Appends a translation to this similarity.

fn prepend_translation(&self, t: &Self::Translation) -> Self[src]

Prepends a translation to this similarity.

fn append_rotation(&self, r: &Self::Rotation) -> Self[src]

Appends a rotation to this similarity.

fn prepend_rotation(&self, r: &Self::Rotation) -> Self[src]

Prepends a rotation to this similarity.

fn append_scaling(&self, s: &Self::NonUniformScaling) -> Self[src]

Appends a scaling factor to this similarity.

fn prepend_scaling(&self, s: &Self::NonUniformScaling) -> Self[src]

Prepends a scaling factor to this similarity.

Loading content...

Provided methods

fn append_rotation_wrt_point(&self, r: &Self::Rotation, p: &E) -> Option<Self>[src]

Appends to this similarity a rotation centered at the point p, i.e., this point is left invariant.

May return None if Self does not have enough translational degree of liberty to perform this computation.

Loading content...

Implementors

impl<E: EuclideanSpace> AffineTransformation<E> for Id[src]

type Rotation = Id

type NonUniformScaling = Id

type Translation = Id

impl<R, E> AffineTransformation<E> for R where
    R: RealField,
    E: EuclideanSpace<RealField = R>,
    E::Coordinates: ClosedMul<R> + ClosedDiv<R> + ClosedNeg
[src]

type Rotation = Id

type NonUniformScaling = R

type Translation = Id

Loading content...