Trait alga::linear::Rotation[][src]

pub trait Rotation<E: EuclideanSpace>: OrthogonalTransformation<E, Rotation = Self> + DirectIsometry<E, Rotation = Self> {
    fn powf(&self, n: E::RealField) -> Option<Self>;
fn rotation_between(a: &E::Coordinates, b: &E::Coordinates) -> Option<Self>;
fn scaled_rotation_between(
        a: &E::Coordinates,
        b: &E::Coordinates,
        s: E::RealField
    ) -> Option<Self>; }

Subgroups of the n-dimensional rotation group SO(n).

Required methods

fn powf(&self, n: E::RealField) -> Option<Self>[src]

Raises this rotation to a power. If this is a simple rotation, the result must be equivalent to multiplying the rotation angle by n.

fn rotation_between(a: &E::Coordinates, b: &E::Coordinates) -> Option<Self>[src]

Computes a simple rotation that makes the angle between a and b equal to zero, i.e., b.angle(a * delta_rotation(a, b)) = 0. If a and b are collinear, the computed rotation may not be unique. Returns None if no such simple rotation exists in the subgroup represented by Self.

fn scaled_rotation_between(
    a: &E::Coordinates,
    b: &E::Coordinates,
    s: E::RealField
) -> Option<Self>
[src]

Computes the rotation between a and b and raises it to the power n.

This is equivalent to calling self.rotation_between(a, b) followed by .powf(n) but will usually be much more efficient.

Loading content...

Implementors

impl<E: EuclideanSpace> Rotation<E> for Id[src]

Loading content...