Improve mathematical terminology
This commit is contained in:
parent
b15c20c7fc
commit
8acc8f6943
2 changed files with 34 additions and 15 deletions
|
@ -76,7 +76,7 @@ fn test_Vec2() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_Vec2_geometric() {
|
fn test_Vec2_euclidean() {
|
||||||
let a = Vec2::new(5f, 12f); // (5, 12, 13) Pythagorean triple
|
let a = Vec2::new(5f, 12f); // (5, 12, 13) Pythagorean triple
|
||||||
let b0 = Vec2::new(3f, 4f); // (3, 4, 5) Pythagorean triple
|
let b0 = Vec2::new(3f, 4f); // (3, 4, 5) Pythagorean triple
|
||||||
let b = a.add_v(&b0);
|
let b = a.add_v(&b0);
|
||||||
|
@ -190,7 +190,7 @@ fn test_Vec3() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_Vec3_geometric() {
|
fn test_Vec3_euclidean() {
|
||||||
let a = Vec3::new(2f, 3f, 6f); // (2, 3, 6, 7) Pythagorean quadruple
|
let a = Vec3::new(2f, 3f, 6f); // (2, 3, 6, 7) Pythagorean quadruple
|
||||||
let b0 = Vec3::new(1f, 4f, 8f); // (1, 4, 8, 9) Pythagorean quadruple
|
let b0 = Vec3::new(1f, 4f, 8f); // (1, 4, 8, 9) Pythagorean quadruple
|
||||||
let b = a.add_v(&b0);
|
let b = a.add_v(&b0);
|
||||||
|
@ -304,7 +304,7 @@ fn test_Vec4() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_Vec4_geometric() {
|
fn test_Vec4_euclidean() {
|
||||||
let a = Vec4::new(1f, 2f, 4f, 10f); // (1, 2, 4, 10, 11) Pythagorean quintuple
|
let a = Vec4::new(1f, 2f, 4f, 10f); // (1, 2, 4, 10, 11) Pythagorean quintuple
|
||||||
let b0 = Vec4::new(1f, 2f, 8f, 10f); // (1, 2, 8, 10, 13) Pythagorean quintuple
|
let b0 = Vec4::new(1f, 2f, 8f, 10f); // (1, 2, 8, 10, 13) Pythagorean quintuple
|
||||||
let b = a.add_v(&b0);
|
let b = a.add_v(&b0);
|
||||||
|
|
43
src/vec.rs
43
src/vec.rs
|
@ -64,12 +64,20 @@ pub trait Vector4<T>: Vector<T> {
|
||||||
*/
|
*/
|
||||||
pub trait NumericVector<T>: Vector<T>, Neg<self> {
|
pub trait NumericVector<T>: Vector<T>, Neg<self> {
|
||||||
/**
|
/**
|
||||||
* Returns a vector with each component set to one
|
* The standard basis vector
|
||||||
|
*
|
||||||
|
* # Returns
|
||||||
|
*
|
||||||
|
* A vector with each component set to one
|
||||||
*/
|
*/
|
||||||
static pure fn identity() -> self;
|
static pure fn identity() -> self;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a vector with each component set to zero
|
* The null vector
|
||||||
|
*
|
||||||
|
* # Returns
|
||||||
|
*
|
||||||
|
* A vector with each component set to zero
|
||||||
*/
|
*/
|
||||||
static pure fn zero() -> self;
|
static pure fn zero() -> self;
|
||||||
|
|
||||||
|
@ -172,9 +180,13 @@ pub trait NumericVector4<T>: NumericVector<T> {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A vector with geometric properties
|
* A Euclidean (or Affine) vector
|
||||||
|
*
|
||||||
|
* # Type parameters
|
||||||
|
*
|
||||||
|
* * `T` - The type of the components. This should be a floating point type.
|
||||||
*/
|
*/
|
||||||
pub trait GeometricVector<T>: NumericVector<T> {
|
pub trait EuclideanVector<T>: NumericVector<T> {
|
||||||
/**
|
/**
|
||||||
* Returns the squared length of the vector
|
* Returns the squared length of the vector
|
||||||
*/
|
*/
|
||||||
|
@ -206,8 +218,15 @@ pub trait GeometricVector<T>: NumericVector<T> {
|
||||||
pure fn lerp(&self, other: &self, amount: T) -> self;
|
pure fn lerp(&self, other: &self, amount: T) -> self;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub trait MutableGeometricVector<T>: MutableNumericVector<&self/T>,
|
/**
|
||||||
GeometricVector<T> {
|
* A mutable Euclidean (or Affine) vector
|
||||||
|
*
|
||||||
|
* # Type parameters
|
||||||
|
*
|
||||||
|
* * `T` - The type of the components. This should be a floating point type.
|
||||||
|
*/
|
||||||
|
pub trait MutableEuclideanVector<T>: MutableNumericVector<&self/T>,
|
||||||
|
EuclideanVector<T> {
|
||||||
/**
|
/**
|
||||||
* Normalize the vector
|
* Normalize the vector
|
||||||
*/
|
*/
|
||||||
|
@ -368,7 +387,7 @@ pub impl<T:Copy Number> Vec2<T>: MutableNumericVector<&self/T> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub impl<T:Copy Number Exp> Vec2<T>: GeometricVector<T> {
|
pub impl<T:Copy Number Exp> Vec2<T>: EuclideanVector<T> {
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
pure fn length2(&self) -> T {
|
pure fn length2(&self) -> T {
|
||||||
self.dot(self)
|
self.dot(self)
|
||||||
|
@ -402,7 +421,7 @@ pub impl<T:Copy Number Exp> Vec2<T>: GeometricVector<T> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub impl<T:Copy Number Exp> Vec2<T>: MutableGeometricVector<&self/T> {
|
pub impl<T:Copy Number Exp> Vec2<T>: MutableEuclideanVector<&self/T> {
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
fn normalize_self(&mut self) {
|
fn normalize_self(&mut self) {
|
||||||
let mut n: T = Number::from(1);
|
let mut n: T = Number::from(1);
|
||||||
|
@ -622,7 +641,7 @@ pub impl<T:Copy Number> Vec3<T>: MutableNumericVector3<&self/T> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub impl<T:Copy Number Exp> Vec3<T>: GeometricVector<T> {
|
pub impl<T:Copy Number Exp> Vec3<T>: EuclideanVector<T> {
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
pure fn length2(&self) -> T {
|
pure fn length2(&self) -> T {
|
||||||
self.dot(self)
|
self.dot(self)
|
||||||
|
@ -656,7 +675,7 @@ pub impl<T:Copy Number Exp> Vec3<T>: GeometricVector<T> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub impl<T:Copy Number Exp> Vec3<T>: MutableGeometricVector<&self/T> {
|
pub impl<T:Copy Number Exp> Vec3<T>: MutableEuclideanVector<&self/T> {
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
fn normalize_self(&mut self) {
|
fn normalize_self(&mut self) {
|
||||||
let mut n: T = Number::from(1);
|
let mut n: T = Number::from(1);
|
||||||
|
@ -875,7 +894,7 @@ pub impl<T:Copy Number> Vec4<T>: MutableNumericVector<&self/T> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub impl<T:Copy Number Exp> Vec4<T>: GeometricVector<T> {
|
pub impl<T:Copy Number Exp> Vec4<T>: EuclideanVector<T> {
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
pure fn length2(&self) -> T {
|
pure fn length2(&self) -> T {
|
||||||
self.dot(self)
|
self.dot(self)
|
||||||
|
@ -909,7 +928,7 @@ pub impl<T:Copy Number Exp> Vec4<T>: GeometricVector<T> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub impl<T:Copy Number Exp> Vec4<T>: MutableGeometricVector<&self/T> {
|
pub impl<T:Copy Number Exp> Vec4<T>: MutableEuclideanVector<&self/T> {
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
fn normalize_self(&mut self) {
|
fn normalize_self(&mut self) {
|
||||||
let mut n: T = Number::from(1);
|
let mut n: T = Number::from(1);
|
||||||
|
|
Loading…
Reference in a new issue