Linear algebra library for Rust.
Go to file
Sébastien Crozet 99b6181b1e Complete library rewrite.
See comments on #207 for details.
2016-12-04 22:47:36 +01:00
benches Complete library rewrite. 2016-12-04 22:47:36 +01:00
src Complete library rewrite. 2016-12-04 22:47:36 +01:00
tests Complete library rewrite. 2016-12-04 22:47:36 +01:00
.gitignore update .gitignore. 2016-08-21 22:01:39 +02:00
.travis.yml Fix compilation when the "generic_sizes" feature is enabled. 2016-04-17 17:42:14 +02:00
CHANGELOG.md Fix formatting of the CHANGELOG. 2016-08-29 21:38:12 +02:00
Cargo.toml Complete library rewrite. 2016-12-04 22:47:36 +01:00
LICENSE Initial commit. 2013-05-14 11:34:28 +00:00
Makefile Implement traits from the algebra crate. 2016-08-21 21:35:56 +02:00
README.md Prevent the README cargo example to be compiled as a test. 2016-08-29 21:22:09 +02:00

README.md

crates.io Build status

Documentation | Forum

nalgebra

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.

Using nalgebra

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));
}

Features

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 the generic_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 to DVector6.
  • 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.