Trait alga::linear::AffineTransformation

source ·
pub trait AffineTransformation<E: EuclideanSpace>: ProjectiveTransformation<E> {
    type Rotation: Rotation<E>;
    type NonUniformScaling: AffineTransformation<E>;
    type Translation: Translation<E>;

    // Required methods
    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;

    // Provided method
    fn append_rotation_wrt_point(
        &self,
        r: &Self::Rotation,
        p: &E
    ) -> Option<Self> { ... }
}
Expand description

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

Required Associated Types§

source

type Rotation: Rotation<E>

Type of the first rotation to be applied.

source

type NonUniformScaling: AffineTransformation<E>

Type of the non-uniform scaling to be applied.

source

type Translation: Translation<E>

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

Required Methods§

source

fn decompose( &self ) -> (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.

source

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

Appends a translation to this similarity.

source

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

Prepends a translation to this similarity.

source

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

Appends a rotation to this similarity.

source

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

Prepends a rotation to this similarity.

source

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

Appends a scaling factor to this similarity.

source

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

Prepends a scaling factor to this similarity.

Provided Methods§

source

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.

Object Safety§

This trait is not object safe.

Implementors§