Trait InnerSpace

Source
pub trait InnerSpace:
    VectorSpace
    + MetricSpace<Metric = Self::Scalar>
    + UlpsEq<Epsilon = Self::Scalar>
where Self::Scalar: BaseFloat,
{ // Required method fn dot(self, other: Self) -> Self::Scalar; // Provided methods fn is_perpendicular(self, other: Self) -> bool { ... } fn magnitude2(self) -> Self::Scalar { ... } fn magnitude(self) -> Self::Scalar { ... } fn angle(self, other: Self) -> Rad<Self::Scalar> { ... } fn normalize(self) -> Self { ... } fn normalize_to(self, magnitude: Self::Scalar) -> Self { ... } fn project_on(self, other: Self) -> Self { ... } }
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

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 magnitude(self) -> Self::Scalar

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

Source

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

Returns the angle between two vectors in radians.

Source

fn normalize(self) -> Self

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

Source

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

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

Source

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

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

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: BaseFloat,

Source§

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

Source§

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

Source§

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