[−][src]Trait alga::linear::AffineTransformation
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<E: EuclideanSpace> AffineTransformation<E> for Id
[src]
impl<E: EuclideanSpace> AffineTransformation<E> for Id
type Rotation = Id
type NonUniformScaling = Id
type Translation = Id
fn decompose(&self) -> (Id, Id, Id, Id)
[src]
fn decompose(&self) -> (Id, Id, Id, Id)
fn append_translation(&self, _: &Self::Translation) -> Self
[src]
fn append_translation(&self, _: &Self::Translation) -> Self
fn prepend_translation(&self, _: &Self::Translation) -> Self
[src]
fn prepend_translation(&self, _: &Self::Translation) -> Self
fn append_rotation(&self, _: &Self::Rotation) -> Self
[src]
fn append_rotation(&self, _: &Self::Rotation) -> Self
fn prepend_rotation(&self, _: &Self::Rotation) -> Self
[src]
fn prepend_rotation(&self, _: &Self::Rotation) -> Self
fn append_scaling(&self, _: &Self::NonUniformScaling) -> Self
[src]
fn append_scaling(&self, _: &Self::NonUniformScaling) -> Self
fn prepend_scaling(&self, _: &Self::NonUniformScaling) -> Self
[src]
fn prepend_scaling(&self, _: &Self::NonUniformScaling) -> Self
fn append_rotation_wrt_point(&self, r: &Self::Rotation, p: &E) -> Option<Self>
[src]
fn append_rotation_wrt_point(&self, r: &Self::Rotation, p: &E) -> Option<Self>
impl<R, E> AffineTransformation<E> for R where
R: Real,
E: EuclideanSpace<Real = R>,
E::Coordinates: ClosedMul<R> + ClosedDiv<R> + ClosedNeg,
[src]
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
fn decompose(&self) -> (Id, Id, R, Id)
[src]
fn decompose(&self) -> (Id, Id, R, Id)
fn append_translation(&self, _: &Self::Translation) -> Self
[src]
fn append_translation(&self, _: &Self::Translation) -> Self
fn prepend_translation(&self, _: &Self::Translation) -> Self
[src]
fn prepend_translation(&self, _: &Self::Translation) -> Self
fn append_rotation(&self, _: &Self::Rotation) -> Self
[src]
fn append_rotation(&self, _: &Self::Rotation) -> Self
fn prepend_rotation(&self, _: &Self::Rotation) -> Self
[src]
fn prepend_rotation(&self, _: &Self::Rotation) -> Self
fn append_scaling(&self, s: &Self::NonUniformScaling) -> Self
[src]
fn append_scaling(&self, s: &Self::NonUniformScaling) -> Self
fn prepend_scaling(&self, s: &Self::NonUniformScaling) -> Self
[src]
fn prepend_scaling(&self, s: &Self::NonUniformScaling) -> Self
fn append_rotation_wrt_point(&self, r: &Self::Rotation, p: &E) -> Option<Self>
[src]
fn append_rotation_wrt_point(&self, r: &Self::Rotation, p: &E) -> Option<Self>