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 of the first rotation to be applied.

Type of the non-uniform scaling to be applied.

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

Required Methods

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

Appends a translation to this similarity.

Prepends a translation to this similarity.

Appends a rotation to this similarity.

Prepends a rotation to this similarity.

Appends a scaling factor to this similarity.

Prepends a scaling factor to this similarity.

Provided Methods

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.

Implementors