pub trait InnerSpace: VectorSpace {
Show 14 methods
// Required method
fn scalar(self, other: Self) -> Self::Scalar;
// Provided methods
fn magnitude2(self) -> Self::Scalar { ... }
fn magnitude(self) -> Self::Scalar { ... }
fn normalize(self) -> Self { ... }
fn angle(self, other: Self) -> Self::Scalar { ... }
fn with_magnitude(self, magnitude: Self::Scalar) -> Self { ... }
fn with_direction(self, dir: Self) -> Self { ... }
fn query_axis(self, dir: Self) -> Self::Scalar { ... }
fn normalized_project(self, dir: Self) -> Self { ... }
fn project(self, dir: Self) -> Self { ... }
fn normalized_reject(self, dir: Self) -> Self { ... }
fn reject(self, dir: Self) -> Self { ... }
fn normalized_reflect(self, dir: Self) -> Self { ... }
fn reflect(self, dir: Self) -> Self { ... }
}
Expand description
This trait defines the scalar product and adds commom vector operations.
Required Methods§
Provided Methods§
Sourcefn magnitude2(self) -> Self::Scalar
fn magnitude2(self) -> Self::Scalar
The squared magnitude.
This is more efficient than calculating the magnitude. Useful if you need the squared magnitude anyway.
Sourcefn with_magnitude(self, magnitude: Self::Scalar) -> Self
fn with_magnitude(self, magnitude: Self::Scalar) -> Self
Sets the magnitude of a vector.
Sourcefn with_direction(self, dir: Self) -> Self
fn with_direction(self, dir: Self) -> Self
Sets the direction of a vector.
Sourcefn query_axis(self, dir: Self) -> Self::Scalar
fn query_axis(self, dir: Self) -> Self::Scalar
The value of the vector along the specified axis.
Sourcefn normalized_project(self, dir: Self) -> Self
fn normalized_project(self, dir: Self) -> Self
Projects a vector onto an already normalized direction vector.
Sourcefn normalized_reject(self, dir: Self) -> Self
fn normalized_reject(self, dir: Self) -> Self
Rejects a vector from an already normalized direction vector.
Sourcefn normalized_reflect(self, dir: Self) -> Self
fn normalized_reflect(self, dir: Self) -> Self
Reflects a vector from an already normalized direction vector.
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.