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>
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.
Required Methods
fn decompose(
&self
) -> (Self::Translation, Self::Rotation, Self::NonUniformScaling, Self::Rotation)
&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.
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.
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.
Implementors
impl<R, E> AffineTransformation<E> for R where
R: Real,
E: EuclideanSpace<Real = R>,
E::Coordinates: ClosedMul<R> + ClosedDiv<R> + ClosedNeg, type Rotation = Id; type NonUniformScaling = R; type Translation = Id;impl<E: EuclideanSpace> AffineTransformation<E> for Id type Rotation = Id; type NonUniformScaling = Id; type Translation = Id;