16 个版本 (10 个破坏性更新)
使用旧的 Rust 2015
0.11.1 | 2019 年 10 月 24 日 |
---|---|
0.11.0 | 2018 年 7 月 4 日 |
0.10.1 | 2018 年 7 月 4 日 |
#18 在 #mathematical
84 每月下载量
56KB
1.5K SLoC
coord
已弃用。我建议使用具有类似目标的 vek
。
Coord
描述
Coord 是一个简单、易用的 Rust 向量数学 crate,旨在用于游戏开发、物理引擎和其他涉及通用多变量数学的程序。
Coord 现已兼容 no_std
!
示例
#[macro_use]
extern crate coord;
use coord::prelude::*;
fn main() {
// Coord supports 4 multi-variable vector types: Vec1, Vec2, Vec3 and Vec4
let mut v = vec3!(1.0, 2.5, 3.0);
// Coord supports common mathematical operations for both primitive and vector types
v += vec3![1.0; 3] * 5.0;
let _ = v * vec3!([10.0, 10.0, 10.0]);
// Coord implements many common mathematic functions
let _ = v.length();
let _ = v.norm();
// Coord supports debug and display printing of vectors
println!("Debug => {:?}", v);
println!("Display => {}", v);
// Coord allows arbitrary vector component types
let _ = vec2!(true, false); // Create a boolean vector
}
更多示例,请访问 https://docs.rs/coord
特性
- 泛型
Vec1
、Vec2
、Vec3
和Vec4
类型 - 实用宏,使向量操作更简单
-
VecXu
、VecXi
和VecXf
默认类型定义 - 基本数学运算(
Add
、Sub
、Mul
、Div
) - 数学函数(例如:
.length()
、.norm()
等) - 使用
serialize
功能支持序列化 - 使用
large_defaults
功能支持 64 位默认类型 - 支持哈希
-
.map()
方法执行任意元素级的向量变换 -
.convert_to()
方法允许元素级的向量转换 -
.div_floor()
方法允许类似 floor 的向量除法
即将推出
- 位运算
- 更多数学函数
- 整数向量类型的模运算符
使用 Coord
要在Rust项目中使用Coord,请在Cargo.toml
文件中[dependencies]
部分下方添加以下行。
coord = "0.11.0"
如果您想启用序列化或64位默认值,请指定依赖项,如下所示。
[dependencies.coord]
version = "0.7.0"
features = ["serialize", "large_defaults"]
常见问题解答
Coord为什么存在?
Coord是在开发Veloren项目时,由于对现有的矢量数学库普遍不满意而出现的。现有的解决方案要么太复杂,使用起来不方便,要么需要太多的依赖项。
Coord是否旨在最终实现功能X?
Coord并不旨在成为一个完整的N维数学库。它旨在实现一组小巧而优雅的功能,使其适用于需要简单多变量数学的应用程序。
如果您认为功能X属于这个范围,并且尚未在项目的待办事项列表中,您可以在GitHub上打开一个问题,我会考虑实现它。
为什么Coord选择32位默认类型?
Coord在defaults
模块中定义了一组“默认”类型。它们也包含在prelude
模块中。这些默认类型,如Vec2f
、Vec3u
、Vec4b
等,旨在使使用Coord编写代码更快。仍然可以不使用它们编程,如Vec2<f32>
、Vec3<u32>
、Vec4<bool>
等。Coord选择32位类型作为默认值,因为我认为这些类型在为游戏和物理引擎开发时更有用,它们需要快速计算。此外,32位浮点类型意味着Coord与OpenGL兼容。
为什么Coord没有通用vec!
宏?
这样的宏会与Rust标准库中的vec!
宏冲突。
为什么Coord不依赖于标准库?
它不需要。为什么要通过要求std
来限制库的使用范围?
错误!错误!我发现了一个错误!
在GitHub上打开一个问题,我会尽快修复。
许可协议
Coord是开源软件,根据MIT许可协议(见'LICENSE'或http://opensource.org/licenses/MIT)许可。
依赖项
~175–415KB