#vector-math #matrix #vector #math #linear-algebra #piston

vecmath

一个简单且类型无关的向量数学库,专为重导出而设计

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 算法

Download history 4533/week @ 2024-03-27 5854/week @ 2024-04-03 4915/week @ 2024-04-10 5246/week @ 2024-04-17 6414/week @ 2024-04-24 6693/week @ 2024-05-01 6515/week @ 2024-05-08 5402/week @ 2024-05-15 6045/week @ 2024-05-22 5728/week @ 2024-05-29 6107/week @ 2024-06-05 5343/week @ 2024-06-12 5234/week @ 2024-06-19 3979/week @ 2024-06-26 2616/week @ 2024-07-03 3345/week @ 2024-07-10

16,178 每月下载量
用于 147 个crate (38直接)

MIT 许可证

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 作为需求添加。
内联将消除开销。

这增加了可读性,并且对于此库的使用来说已经足够好。

依赖关系