Trait InnerSpace

Source
pub trait InnerSpace: VectorSpace + MetricSpace<Metric = Self::Scalar> {
    // Required method
    fn dot(self, other: Self) -> Self::Scalar;

    // Provided methods
    fn is_perpendicular(self, other: Self) -> bool
       where Self::Scalar: UlpsEq { ... }
    fn magnitude2(self) -> Self::Scalar { ... }
    fn angle(self, other: Self) -> Rad<Self::Scalar>
       where Self::Scalar: BaseFloat { ... }
    fn project_on(self, other: Self) -> Self { ... }
    fn magnitude(self) -> Self::Scalar
       where Self::Scalar: Float { ... }
    fn normalize(self) -> Self
       where Self::Scalar: Float { ... }
    fn normalize_to(self, magnitude: Self::Scalar) -> Self
       where Self::Scalar: Float { ... }
}
Expand description

Vectors that also have a dot (or inner) product.

The dot product allows for the definition of other useful operations, like finding the magnitude of a vector or normalizing it.

Examples include vectors and quaternions.

Required Methods§

Source

fn dot(self, other: Self) -> Self::Scalar

Vector dot (or inner) product.

Provided Methods§

Source

fn is_perpendicular(self, other: Self) -> bool
where Self::Scalar: UlpsEq,

Returns true if the vector is perpendicular (at right angles) to the other vector.

Source

fn magnitude2(self) -> Self::Scalar

Returns the squared magnitude.

This does not perform an expensive square root operation like in InnerSpace::magnitude method, and so can be used to compare magnitudes more efficiently.

Source

fn angle(self, other: Self) -> Rad<Self::Scalar>
where Self::Scalar: BaseFloat,

Returns the angle between two vectors in radians.

Source

fn project_on(self, other: Self) -> Self

Returns the vector projection of the current inner space projected onto the supplied argument.

Source

fn magnitude(self) -> Self::Scalar
where Self::Scalar: Float,

The distance from the tail to the tip of the vector.

Source

fn normalize(self) -> Self
where Self::Scalar: Float,

Returns a vector with the same direction, but with a magnitude of 1.

Source

fn normalize_to(self, magnitude: Self::Scalar) -> Self
where Self::Scalar: Float,

Returns a vector with the same direction and a given magnitude.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl<S> InnerSpace for Quaternion<S>
where S: BaseFloat,

Source§

impl<S> InnerSpace for Vector1<S>
where S: BaseNum,

Source§

impl<S> InnerSpace for Vector2<S>
where S: BaseNum,

Source§

impl<S> InnerSpace for Vector3<S>
where S: BaseNum,

Source§

impl<S> InnerSpace for Vector4<S>
where S: BaseNum,