Linear algebra library for Rust.
Go to file
Sébastien Crozet c13b0388ef Remove implementations of Rotation, Translation and Transformation for the Identity type.
Because most of their methods did not make sence for the (constant) identity matrix, they were set
to `panic!` at runtime whenever the user tried to use them. Instead, it is much safer to completely
forbid their use by removing the related trait implementation.

See sebcrozet/ncollide#87.
2015-07-07 22:40:14 +02:00
benches Use the Zero and One traits from the num crate. 2015-04-18 14:38:34 +02:00
src Remove implementations of Rotation, Translation and Transformation for the Identity type. 2015-07-07 22:40:14 +02:00
tests Allow for non-consuming std operations on DMat. Added DMat multiplication test. 2015-06-21 00:20:39 +10:00
.gitignore Add points. 2014-10-10 11:45:20 +02:00
.travis.yml Don't run benchmarks on travis. 2015-06-19 23:48:27 +02:00
Cargo.toml Release v0.2.18. 2015-06-23 21:04:31 +02:00
LICENSE Initial commit. 2013-05-14 11:34:28 +00:00
Makefile Remove implementations of Rotation, Translation and Transformation for the Identity type. 2015-07-07 22:40:14 +02:00
README.md Fix the README examples. 2015-06-06 14:28:34 +02:00

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 doing out-of-place modifications.

  • You can import the whole prelude using:
use nalgebra::*;

The preferred 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::{Vec3, Rot3, Rotation};

fn main() {
    let     a = Vec3::new(1.0f64, 1.0, 1.0);
    let mut b = Rot3::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 static sizes: Vec0, Vec1, Vec2, Vec3, Vec4, Vec5, Vec6.
  • Points with static sizes: Pnt0, Pnt1, Pnt2, Pnt3, Pnt4, Pnt5, Pnt6.
  • Square matrices with static sizes: Mat1, Mat2, Mat3, Mat4, Mat5, Mat6 .
  • Rotation matrices: Rot2, Rot3, Rot4.
  • Quaternions: Quat, UnitQuat.
  • Isometries: Iso2, Iso3, Iso4.
  • 3D projections for computer graphics: Persp3, PerspMat3, Ortho3, OrthoMat3.
  • Dynamically sized vector: DVec.
  • Dynamically sized (square or rectangular) matrix: DMat.
  • A few methods for data analysis: Cov, Mean.
  • Almost one trait per functionality: useful for generic programming.
  • Operator overloading using multidispatch.