3个版本
0.1.2 | 2021年12月22日 |
---|---|
0.1.1 | 2021年12月20日 |
0.1.0 | 2021年12月20日 |
#1244 in 数学
23KB
511 行
描述
ndmath是一个Rust库,用于在内置类型上执行向量算术。
您可以在文档中找到使用信息;
lib.rs
:
该crate提供用于将内置Rust类型用作几何原型的特质。
使用方法
向量
VecN
提供了基本的向量数学运算。 FloatingVecN
为实值向量添加了一些额外的方法。
这些特质适用于所有适用的数组类型。
示例
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);
轴对齐的边界框
Aabb
提供了轴对齐边界框的运算。它们由一个原点和大小组成。
该特质适用于所有大小为16及以下偶数大小的标量数组以及所有大小为2的标量数组。
示例
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]));
命名维度特质
有一些特质提供了对命名维度值的访问器。
有4个向量维度特质
有3个轴对齐边界框维度特质
示例
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);