16个版本 (1个稳定版)
使用旧的Rust 2015
1.0.0 | 2019年5月23日 |
---|---|
0.3.1 | 2017年9月28日 |
0.3.0 | 2017年1月23日 |
0.2.0 | 2015年9月30日 |
0.0.1 | 2014年12月13日 |
#313 in 算法
16,178 每月下载量
用于 147 个crate (38直接)
57KB
1.5K SLoC
vecmath
一个简单且类型无关的Rust向量数学库,专为重导出而设计
动机
在线性代数或游戏数学库的设计上很难达成共识。
有时你只需要几个函数,比如点积或叉积,而不想处理特质。
也许你懂数学,但类型系统阻碍了你?
这个库被设计成简单、通用且易于在之上构建抽象。
如果这不是你想要的,这里有一些替代方案
目标
- 无特质
- 无类型声明,这会产生依赖关系
- 仅全局函数,以便更容易在之上构建
- 固定数组
- 行主序矩阵与列主序矩阵无关
- 泛型
非目标
- 游戏数学或线性代数
- 特质或模块系统,人们对此意见不一
- 四元数
- 双数
- 矩阵设置
用法
一个好的惯例是在你的库/可执行文件中的 vecmath
模块中重导出库。
通过重导出,你可以添加新函数并提交拉取请求而不破坏代码。
此外,将自定义数学函数放在同一命名空间下更方便,
即使这些函数永远不会添加到原始向量数学库中。
编辑你的 'Cargo.toml' 文件
在文本编辑器中打开 'Cargo.toml' 并添加以下内容
[dependencies.vecmath]
version = "1.0.0"
步骤 1
将以下内容添加到 'lib.rs' 中
extern crate vecmath;
mod math; // Use 'pub mod' if you want it to be visible outside library.
步骤 2
在你的 'src/' 目录中创建一个名为 'math.rs' 的新文件。在文本编辑器中打开 'math.rs' 并输入
pub use multiply = vecmath::row_mat2x3_mul;
pub type Matrix2d = vecmath::Matrix2x3<f64>;
// etc.
您可以添加自己的自定义函数,并重命名现有的函数以供使用。
命名规范
所有方法都以前缀短名称版本开头。
示例
mat3x4_
一个 3x4 矩阵。
mat4_
一个 4x4 矩阵。
vec3_
一个有 3 个分量的向量。
col_mat4x3_
该矩阵被视为列主序的矩阵
通用规范
为了简化,所有方法都应该接受一个具有特定操作的泛型参数,例如,对于加法,使用 <T: Add<T, Output = T>>
。
如果需要额外的方法,应使用 traits::Float
。
所有参数都是按值传递的,因此当需要时,可以将 Copy
作为需求添加。
内联将消除开销。
这增加了可读性,并且对于此库的使用来说已经足够好。