Linear algebra library for Rust.
Go to file
Dimitri Sabadie 988d9272d2 Cleaned up exp(), log() and powf() for Quaternion. Also, they’re for Quaternion only as we cannot define them on UnitQuaternion. 2016-07-29 17:51:35 +02:00
benches Use full names for everything. 2016-04-17 17:26:58 +02:00
src Cleaned up exp(), log() and powf() for Quaternion. Also, they’re for Quaternion only as we cannot define them on UnitQuaternion. 2016-07-29 17:51:35 +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.