Linear algebra library for Rust.
Go to file
Dimitri Sabadie 213cc41f7d Added exp(), log() and powf() for Quaternion / UnitQuaternion. 2016-07-29 15:56:04 +02:00
benches Use full names for everything. 2016-04-17 17:26:58 +02:00
src Added exp(), log() and powf() for Quaternion / UnitQuaternion. 2016-07-29 15:56:04 +02:00
tests Replace "col" by "column". 2016-04-18 08:32:12 +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 Update the changelog. 2016-04-18 08:40:16 +02:00
Cargo.toml Implement Display for Identity. 2016-04-30 14:32:16 +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 Replace "col" by "column". 2016-04-18 08:32:12 +02:00

README.md

Build Status

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.

An on-line version of this documentation is available here.

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.