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 数学
每月104次下载
用于 lox
195KB
3.5K SLoC
lina
:3D应用(如游戏)的线性代数库
lina
是一个利用强类型的大量线性代数库。其重点是3D应用,如游戏,即低维向量矩阵。
将lina
与其他类似库区分开来的显著特性
- 使用const泛型,同时仍然允许通过
.x
、.y
、.z
和.w
访问标量。 - 分离齐次坐标的类型(
HcPoint
和HcMatrix
)。 - 大多数类型都有一个
Space
参数,用于表示向量、点等所在的空间(例如模型空间、世界空间、视图空间等)。 - 区分位置(
Point
)和位移(Vector
)。
这三个示例展示了lina
关于强类型哲学的思考。关于动机和示例,请参阅此文档。事实上,这仍然是一个小实验,但到目前为止,我在实践中对结果非常满意!然而,我确信这并不是每个人都适合的,很多人可能更喜欢不同的API。
幸运的是,Rust生态系统中有许多其他库。明确地说:lina
并不比cgmath
、nalgebra
、glam
、ultraviolet
、vek
等更好。它只是不同,API更适合我的口味——也许也适合你的口味。
其他特性:
- 向量、点、矩阵
- 常用的变换矩阵
- 重载运算符,如你所预期
- 强类型角度:
Degrees
和Radians
- 球坐标:
SphericalPos
和SphericalDir
- 几个辅助函数:
atan2
、clamp
、lerp
、slerp
、... - 浮点数近似相等(包括
assert_approx_eq!
)
未来我还想添加的唯一一项主要功能是旋转器。 lina
提供了标准的转换矩阵,但旋转器可以更好地表示和组合旋转。
更多信息请参阅 文档。
本项目状态
lina
确实可用,功能丰富。我正在一个游戏项目中积极使用它,这也推动了大多数 API 设计决策。但是,lina
并未被许多其他项目使用,可能还有一些非主要的 API 变更。
许可证
根据您的选择,受以下任一许可证的约束:Apache License, Version 2.0 或 MIT license。除非您明确表示,否则您有意提交以包含在本项目中的任何贡献,根据 Apache-2.0 许可证定义,将按上述方式双重许可,不附加任何额外的条款或条件。
依赖关系
~285KB