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

pub trait AffineTransformation<E: EuclideanSpace>: ProjectiveTransformation<E> {
    type Rotation: Rotation<E>;
    type NonUniformScaling: AffineTransformation<E>;
    type Translation: Translation<E>;
    fn decompose(
    ) -> (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(
        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>

Type of the first rotation to be applied.

type NonUniformScaling: AffineTransformation<E>

Type of the non-uniform scaling to be applied.

type Translation: Translation<E>

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

Loading content...

Required methods

fn decompose(
) -> (Self::Translation, Self::Rotation, Self::NonUniformScaling, Self::Rotation)

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

Appends a translation to this similarity.

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

Prepends a translation to this similarity.

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

Appends a rotation to this similarity.

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

Prepends a rotation to this similarity.

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

Appends a scaling factor to this similarity.

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

Prepends a scaling factor to this similarity.

Loading content...

Provided methods

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

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...


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

type Rotation = Id

type NonUniformScaling = R

type Translation = Id

Loading content...