111个版本
0.33.0 | 2024年6月23日 |
---|---|
0.32.5 | 2024年3月28日 |
0.32.3 | 2023年7月9日 |
0.32.2 | 2023年3月7日 |
0.1.0 | 2014年11月22日 |
#4 in 数学
704,088 每月下载量
用于 2,360 个crates(892个直接使用)
2MB
36K SLoC
线性代数库 适用于Rust编程语言。
lib.rs
:
nalgebra
nalgebra 是一个为Rust编写的线性代数库,针对
- 通用线性代数(仍缺少许多功能…)
- 实时计算机图形学。
- 实时计算机物理学。
使用 nalgebra
您需要最新稳定的 rust编译器 和官方包管理器:cargo。
只需将以下内容添加到您的 Cargo.toml
文件中
[dependencies]
// TODO: replace the * by the latest version.
nalgebra = "*"
nalgebra 的大多数有用功能都分组在根模块 nalgebra::
中。
然而,推荐使用 nalgebra 的方法是显式导入类型和特性,并使用 na::
前缀调用免费函数
#[macro_use]
extern crate approx; // For the macro assert_relative_eq!
extern crate nalgebra as na;
use na::{Vector3, Rotation3};
fn main() {
let axis = Vector3::x_axis();
let angle = 1.57;
let b = Rotation3::from_axis_angle(&axis, angle);
assert_relative_eq!(b.axis().unwrap(), axis);
assert_relative_eq!(b.angle(), angle);
}
功能
nalgebra 旨在成为一个通用、低维度的线性代数库,具有针对计算机图形学和物理学的优化工具集。这些功能包括
- 一个可参数化的类型
Matrix
,用于向量、(正方形或矩形)矩阵和已知尺寸的切片,尺寸在编译时(使用类型级别整数)或运行时已知。 - 编译时尺寸的矩阵和向量是静态分配的,而动态的则在堆上分配。
- 低维矩阵和向量的便捷别名:从
Vector1
到Vector6
,以及从Matrix1x1
到Matrix6x6
,包括矩形矩阵如Matrix2x5
。 - 编译时已知的点大小和便捷别名:
Point1
到Point6
。 - 平移(视为通过乘法组合的转换):
Translation2
、Translation3
。 - 旋转矩阵:
Rotation2
、Rotation3
。 - 四元数:
Quaternion
、UnitQuaternion
(用于3D旋转)。 - 单位复数可用于2D旋转:
UnitComplex
。 - 范数等于一的代数实体:
Unit<T>
,例如:Unit<Vector3<f32>>
。 - 等距性(平移 × 旋转):
Isometry2
、Isometry3
- 相似变换(平移 × 旋转 × 均匀缩放):
Similarity2
、Similarity3
- 存储为齐次矩阵的仿射变换:
Affine2
、Affine3
- 存储为齐次矩阵的投影(即可逆)变换:
Projective2
、Projective3
- 存储为齐次矩阵的通用变换,不一定可逆:
Transform2
、Transform3
- 计算机图形学的3D投影:
Perspective3
、Orthographic3
- 矩阵分解:
Cholesky
、QR
、LU
、FullPivLU
、SVD
、Schur
、Hessenberg
、SymmetricEigen
- 矩阵的行和列的插入和删除。
依赖关系
~0.8–4MB
~94K SLoC