Crate nalgebra[−][src]
nalgebra
nalgebra is a linear algebra library written for Rust targeting:
 Generalpurpose linear algebra (still lacks a lot of features…)
 Realtime computer graphics.
 Realtime 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] // TODO: replace the * by the latest version. nalgebra = "*"
Most useful functionalities of nalgebra are grouped in the root module nalgebra::
.
However, the recommended way to use nalgebra is to import types and traits
explicitly, and call freefunctions using the na::
prefix:
#[macro_use] extern crate approx; // For the macro relative_eq! extern crate nalgebra as na; use na::{Vector3, Rotation3}; fn main() { let axis = Vector3::x_axis(); let angle = 1.57; let b = Rotation3::from_axis_angle(&axis, angle); relative_eq!(b.axis().unwrap(), axis); relative_eq!(b.angle(), angle); }
Features
nalgebra is meant to be a generalpurpose, lowdimensional, linear algebra library, with an optimized set of tools for computer graphics and physics. Those features include:
 A single parametrizable type
Matrix
for vectors, (square or rectangular) matrices, and slices with dimensions known either at compiletime (using typelevel integers) or at runtime.  Matrices and vectors with compiletime sizes are statically allocated while dynamic ones are allocated on the heap.
 Convenient aliases for lowdimensional matrices and vectors:
Vector1
toVector6
andMatrix1x1
toMatrix6x6
, including rectangular matrices likeMatrix2x5
.  Points sizes known at compile time, and convenience aliases:
Point1
toPoint6
.  Translation (seen as a transformation that composes by multiplication):
Translation2
,Translation3
.  Rotation matrices:
Rotation2
,Rotation3
.  Quaternions:
Quaternion
,UnitQuaternion
(for 3D rotation).  Unit complex numbers can be used for 2D rotation:
UnitComplex
.  Algebraic entities with a norm equal to one:
Unit<T>
, e.g.,Unit<Vector3<f32>>
.  Isometries (translation ⨯ rotation):
Isometry2
,Isometry3
 Similarity transformations (translation ⨯ rotation ⨯ uniform scale):
Similarity2
,Similarity3
.  Affine transformations stored as a homogeneous matrix:
Affine2
,Affine3
.  Projective (i.e. invertible) transformations stored as a homogeneous matrix:
Projective2
,Projective3
.  General transformations that does not have to be invertible, stored as a homogeneous matrix:
Transform2
,Transform3
.  3D projections for computer graphics:
Perspective3
,Orthographic3
.  Matrix factorizations:
Cholesky
,QR
,LU
,FullPivLU
,SVD
,Schur
,Hessenberg
,SymmetricEigen
.  Insertion and removal of rows of columns of a matrix.
Reexports
pub use crate::base::*;  
pub use crate::geometry::*;  
pub use crate::linalg::*;  
pub use base as core; 
Modules
base  [Reexported at the root of this crate.] Data structures for vector and matrix computations. 
geometry  [Reexported at the root of this crate.] Data structures for points and usual transformations (rotations, isometries, etc.) 
linalg  [Reexported at the root of this crate.] Factorization of real matrices. 
proptest 

Macros
unimplemented_or_uninitialized_generic  When “no_unsound_assume_init” is enabled, expands to 
Structs
Complex  A complex number in Cartesian form. 
Traits
ClosedAdd  Trait alias for 
ClosedDiv  Trait alias for 
ClosedMul  Trait alias for 
ClosedSub  Trait alias for 
ComplexField  Trait shared by all complex fields and its subfields (like real numbers). 
Field  Trait implemented by fields, i.e., complex numbers and floats. 
RealField  Trait shared by all reals. 
SimdBool  Lanewise generalization of 
SimdComplexField  Lanewise generalisation of 
SimdPartialOrd  Lanewise generalization of the standard 
SimdRealField  Lanewise generalization of 
SimdValue  Base trait for every SIMD types. 
Functions
abs  Deprecated The absolute value of 
center  The center of two points. 
clamp  Returns a reference to the input value clamped to the interval 
convert  Converts an object from one type to an equivalent or more general one. 
convert_ref  Converts an object from one type to an equivalent or more general one. 
convert_ref_unchecked  Use with care! Same as 
convert_unchecked  Use with care! Same as 
distance  The distance between two points. 
distance_squared  The squared distance between two points. 
inf  Deprecated Returns the infimum of 
inf_sup  Deprecated Returns simultaneously the infimum and supremum of 
is_convertible  Indicates if 
max  Same as 
min  Same as 
one  Gets the multiplicative identity element. 
partial_clamp  Clamp 
partial_cmp  Compare 
partial_ge  Returns 
partial_gt  Returns 
partial_le  Returns 
partial_lt  Returns 
partial_max  Return the maximum of 
partial_min  Return the minimum of 
partial_sort2  Sorts two values in increasing order using a partial ordering. 
sup  Deprecated Returns the supremum of 
try_convert  Attempts to convert an object to a more specific one. 
try_convert_ref  Attempts to convert an object to a more specific one. 
wrap  Wraps 
zero  Gets the additive identity element. 