Trait alga::linear::Rotation
[−]
[src]
pub trait Rotation<E: EuclideanSpace>: OrthogonalTransformation<E, Rotation = Self> + DirectIsometry<E, Rotation = Self> {
fn powf(&self, n: E::Real) -> 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::Real
) -> Option<Self>;
}Subgroups of the n-dimensional rotation group SO(n).
Required Methods
fn powf(&self, n: E::Real) -> Option<Self>
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>
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::Real
) -> Option<Self>
a: &E::Coordinates,
b: &E::Coordinates,
s: E::Real
) -> Option<Self>
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.
Implementors
impl<E: EuclideanSpace> Rotation<E> for Id