pub trait InnerSpace: VectorSpacewhere
    Self: MetricSpace<Metric = <Self as VectorSpace>::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) -> boolwhere 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::Scalarwhere Self::Scalar: Float,

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

source

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

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

source

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

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

Implementors§