Linear algebra library for Rust.
Go to file
Sébastien Crozet d45c242a15 Add a `Unit` wrapper type, remove UnitQuaternion.
The `Unit` wrapper type ensures that elements of the underlying type has a unit norm.
For example, `Unit<Vector3>` designates an element of S².
In particular `UnitQuaternion<N>` is now a type alias for `Unit<Quaternion<N>>`.
2016-08-16 10:27:07 +02:00
benches Macro groupping. 2016-08-11 23:28:08 +02:00
src Add a `Unit` wrapper type, remove UnitQuaternion. 2016-08-16 10:27:07 +02:00
tests Fixed Zero and One for Quaternion. 2016-07-30 14:08:55 +02:00
.gitignore Add points. 2014-10-10 11:45:20 +02:00
.travis.yml Fix compilation when the "generic_sizes" feature is enabled. 2016-04-17 17:42:14 +02:00
CHANGELOG.md Add a `Unit` wrapper type, remove UnitQuaternion. 2016-08-16 10:27:07 +02:00
Cargo.toml Add a `Unit` wrapper type, remove UnitQuaternion. 2016-08-16 10:27:07 +02:00
LICENSE Initial commit. 2013-05-14 11:34:28 +00:00
Makefile Fix compilation when the "generic_sizes" feature is enabled. 2016-04-17 17:42:14 +02:00
README.md Make the link to the documentation more visible 2016-08-09 21:50:21 +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

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, UnitQuaternion.
  • 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.