#线性代数 #计算机图形学 #游戏开发 #强类型 #矢量数学

lina

专注于3D应用(如游戏)的线性代数库(即低维向量矩阵)

8个版本

0.2.1 2023年7月21日
0.2.0 2023年6月11日
0.1.5 2023年5月23日
0.1.4 2023年4月17日
0.1.1 2021年10月24日

#185 in 数学

Download history 49/week @ 2024-03-31 1/week @ 2024-05-19

每月104次下载
用于 lox

MIT/Apache

195KB
3.5K SLoC

lina:3D应用(如游戏)的线性代数库

CI status of main Crates.io Version docs.rs

lina是一个利用强类型的大量线性代数库。其重点是3D应用,如游戏,即低维向量矩阵。

lina与其他类似库区分开来的显著特性

  • 使用const泛型,同时仍然允许通过.x.y.z.w访问标量。
  • 分离齐次坐标的类型(HcPointHcMatrix)。
  • 大多数类型都有一个Space参数,用于表示向量、点等所在的空间(例如模型空间、世界空间、视图空间等)。
  • 区分位置(Point)和位移(Vector)。

这三个示例展示了lina关于强类型哲学的思考。关于动机和示例,请参阅此文档。事实上,这仍然是一个小实验,但到目前为止,我在实践中对结果非常满意!然而,我确信这并不是每个人都适合的,很多人可能更喜欢不同的API。

幸运的是,Rust生态系统中有许多其他库。明确地说:lina并不比cgmathnalgebraglamultravioletvek等更好。它只是不同,API更适合我的口味——也许也适合你的口味。

其他特性:

  • 向量、点、矩阵
  • 常用的变换矩阵
  • 重载运算符,如你所预期
  • 强类型角度:DegreesRadians
  • 球坐标:SphericalPosSphericalDir
  • 几个辅助函数: atan2clamplerpslerp、...
  • 浮点数近似相等(包括 assert_approx_eq!

未来我还想添加的唯一一项主要功能是旋转器。 lina 提供了标准的转换矩阵,但旋转器可以更好地表示和组合旋转。

更多信息请参阅 文档

本项目状态

lina 确实可用,功能丰富。我正在一个游戏项目中积极使用它,这也推动了大多数 API 设计决策。但是,lina 并未被许多其他项目使用,可能还有一些非主要的 API 变更。



许可证

根据您的选择,受以下任一许可证的约束:Apache License, Version 2.0MIT license。除非您明确表示,否则您有意提交以包含在本项目中的任何贡献,根据 Apache-2.0 许可证定义,将按上述方式双重许可,不附加任何额外的条款或条件。

依赖关系

~285KB