nalgebra is a low-dimensional linear algebra library written for Rust targeting:
- General-purpose linear algebra (still lacks a lot of features…)
- Real time computer graphics.
- Real time computer physics.
You will need the last stable build of the rust compiler and the official package manager: cargo.
Simply add the following to your Cargo.toml
file:
[dependencies]
nalgebra = "0.10.*"
All the functionality of nalgebra is grouped in one place: the root module nalgebra::
. This
module re-exports everything and includes free functions for all traits methods performing
out-of-place operations.
Thus, you can import the whole prelude using:
use nalgebra::*;
However, the recommended way to use nalgebra is to import types and traits
explicitly, and call free-functions using the na::
prefix:
extern crate nalgebra as na;
use na::{Vector3, Rotation3, Rotation};
fn main() {
let a = Vector3::new(1.0f64, 1.0, 1.0);
let mut b = Rotation3::new(na::zero());
b.append_rotation_mut(&a);
assert!(na::approx_eq(&na::rotation(&b), &a));
}
nalgebra is meant to be a general-purpose, low-dimensional, linear algebra library, with an optimized set of tools for computer graphics and physics. Those features include:
- Vectors with predefined static sizes:
Vector1
,Vector2
,Vector3
,Vector4
,Vector5
,Vector6
. - Vector with a user-defined static size:
VectorN
(available only with thegeneric_sizes
feature). - Points with static sizes:
Point1
,Point2
,Point3
,Point4
,Point5
,Point6
. - Square matrices with static sizes:
Matrix1
,Matrix2
,Matrix3
,Matrix4
,Matrix5
,Matrix6
. - Rotation matrices:
Rotation2
,Rotation3
- Quaternions:
Quaternion
,Unit<Quaternion>
. - Unit-sized values (unit vectors, unit quaternions, etc.):
Unit<T>
, e.g.,Unit<Vector3<f32>>
. - Isometries (translation ⨯ rotation):
Isometry2
,Isometry3
- Similarity transformations (translation ⨯ rotation ⨯ uniform scale):
Similarity2
,Similarity3
. - 3D projections for computer graphics:
Persp3
,PerspMatrix3
,Ortho3
,OrthoMatrix3
. - Dynamically sized heap-allocated vector:
DVector
. - Dynamically sized stack-allocated vectors with a maximum size:
DVector1
toDVector6
. - Dynamically sized heap-allocated (square or rectangular) matrix:
DMatrix
. - Linear algebra and data analysis operators:
Covariance
,Mean
,qr
,cholesky
. - Almost one trait per functionality: useful for generic programming.