#vector #geometry

ndmath

使用内置类型执行向量几何操作的特质

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);

没有运行时依赖