Expand description
This crate provides traits for working with builtin Rust types as geometric primitives.
§Usage
§Vectors
VecN
provides basic vector math operations. FloatingVecN
adds some extra methods that only apply to real-valued vectors.
These traits are implemented for all applicable array types.
§Example
use ndmath::*;
let a = [2, 5];
let b = [3, -7];
let c = a.add(b);
let d = a.neg();
assert_eq!(c, [5, -2]);
assert_eq!(d, [-2, -5]);
let a = [1, 2, 3, 4, 5, 6, 7];
let b = [9, 8, 7, 6, 5, 4, 3];
let c = a.add(b);
let d = a.sub(b);
let e = a.mul(2);
assert_eq!(c, [10; 7]);
assert_eq!(d, [-8, -6, -4, -2, 0, 2, 4]);
assert_eq!(e, [2, 4, 6, 8, 10, 12, 14]);
let a = [3.0, 4.0];
let b = [3.0, 6.0];
assert_eq!(a.mag(), 5.0);
assert_eq!(a.dist(b), 2.0);
§Axis-aligned bounding boxes
Aabb
provides operations for axis-aligned bounding boxes. They consist of an origin and a size.
This trait is implemented for all even-sized scalar arrays up to size 16 and all size 2 arrays of scalar arrays.
§Example
use ndmath::*;
let aabb = [1, 0, 4, 5];
assert!(aabb.contains([2, 2]));
assert!(aabb.contains([1, 0]));
assert!(aabb.contains([5, 5]));
assert!(!aabb.contains([5, 6]));
§Named dimension traits
There are traits to provide accessors for named dimensional values.
There are 4 traits for vector dimensions:
There are 3 traits for axis-aligned bounding box dimensions:
§Example
use ndmath::*;
let a = [1, 2];
let b = [3, 4, 5];
let c = [6, 7, 8, 9];
assert_eq!(a.x(), 1);
assert_eq!(a.y(), 2);
assert_eq!(b.z(), 5);
assert_eq!(c.w(), 9);
let aabb = [[0, 1, 2], [3, 4, 5]];
assert_eq!(aabb.left(), 0);
assert_eq!(aabb.top(), 1);
assert_eq!(aabb.back(), 2);
assert_eq!(aabb.right(), 3);
assert_eq!(aabb.bottom(), 5);
assert_eq!(aabb.front(), 7);
assert_eq!(aabb.width(), 3);
assert_eq!(aabb.height(), 4);
assert_eq!(aabb.depth(), 5);
Traits§
- Aabb
- Trait for axis-aligned bounding boxes
- Floating
Scalar - Trait for floating-point scalar numbers
- Floating
VecN - Trait for real-valued vector math operations
- Scalar
- Trait for math with scalar numbers
- VecN
- Trait for basic vector math operations
- WVec
- Trait for vectors with a W dimension
- XAabb
- Trait for axis-aligned bounding boxes with a width
- XVec
- Trait for vectors with an X dimension
- YAabb
- Trait for axis-aligned bounding boxes with a height
- YVec
- Trait for vectors with a Y dimension
- ZAabb
- Trait for axis-aligned bounding boxes with a depth
- ZVec
- Trait for vectors with a Z dimension