Crate nalgebra [−] [src]
nalgebra
nalgebra is a lowdimensional linear algebra library written for Rust targeting:
 generalpurpose linear algebra (still lacks a lot of features…).
 real time computer graphics.
 real time computer physics.
An online 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 reexports everything and includes free functions for all traits methods doing
outofplace 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
freefunctions 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 generalpurpose, lowdimensional, 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.
nalgebra in use
Here are some projects using nalgebra. Feel free to add your project to this list if you happen to use nalgebra!
Macros
assert_approx_eq! 
Asserts approximate equality of two values with the 
assert_approx_eq_eps! 
Asserts approximate equality within a given tolerance of two values with the

assert_approx_eq_ulps! 
Asserts approximate equality within a given tolerance of two values with the

Structs
DMat 
Matrix with dimensions unknown at compiletime. 
DVec 
Heap allocated, dynamically sized vector. 
DVec1 
Stackallocated, dynamically sized vector with a maximum size of 1. 
DVec2 
Stackallocated, dynamically sized vector with a maximum size of 2. 
DVec3 
Stackallocated, dynamically sized vector with a maximum size of 3. 
DVec4 
Stackallocated, dynamically sized vector with a maximum size of 4. 
DVec5 
Stackallocated, dynamically sized vector with a maximum size of 5. 
DVec6 
Stackallocated, dynamically sized vector with a maximum size of 6. 
Identity 
Special identity matrix. All its operation are noops. 
Iso2 
Two dimensional isometry. 
Iso3 
Three dimensional isometry. 
Iso4 
Four dimensional isometry. 
Mat1 
Square matrix of dimension 1. 
Mat2 
Square matrix of dimension 2. 
Mat3 
Square matrix of dimension 3. 
Mat4 
Square matrix of dimension 4. 
Mat5 
Square matrix of dimension 5. 
Mat6 
Square matrix of dimension 6. 
Ortho3 
A 3D orthographic projection stored without any matrix. 
OrthoMat3 
A 3D orthographic projection stored as a 4D matrix. 
Persp3 
A 3D perspective projection stored without any matrix. 
PerspMat3 
A 3D perspective projection stored as a 4D matrix. 
Pnt0 
Point of dimension 0. 
Pnt1 
Point of dimension 1. 
Pnt2 
Point of dimension 2. 
Pnt3 
Point of dimension 3. 
Pnt4 
Point of dimension 4. 
Pnt5 
Point of dimension 5. 
Pnt6 
Point of dimension 6. 
Quat 
A quaternion. 
Rot2 
Two dimensional rotation matrix. 
Rot3 
Three dimensional rotation matrix. 
Rot4 
Four dimensional rotation matrix. 
UnitQuat 
A unit quaternion that can represent a 3D rotation. 
Vec0 
Vector of dimension 0. 
Vec1 
Vector of dimension 1. 
Vec2 
Vector of dimension 2. 
Vec3 
Vector of dimension 3. 
Vec4 
Vector of dimension 4. 
Vec5 
Vector of dimension 5. 
Vec6 
Vector of dimension 6. 
Enums
POrdering 
Result of a partial ordering. 
Traits
Absolute 
Trait of objects having an absolute value. This is useful if the object does not have the same type as its absolute value. 
AbsoluteRotate 
Composition of a rotation and an absolute value. 
ApproxEq 
Trait for testing approximate equality 
Axpy 
Trait of objects implementing the 
BaseFloat 
Basic floatingpoint number numeric trait. 
BaseNum 
Basic integral numeric trait. 
Basis 
Traits of objects which can form a basis (typically vectors). 
Bounded 
Types that have maximum and minimum value. 
Cast 
Traits of objects which can be created from an object of type 
Col 
Trait to access columns of a matrix or vector. 
ColSlice 
Trait to access part of a column of a matrix 
Cov 
Trait for computing the covariance of a set of data. 
Cross 
Trait of elements having a cross product. 
CrossMatrix 
Trait of elements having a cross product operation which can be expressed as a matrix. 
Det 
Trait of objects having a determinant. Typically used by square matrices. 
Diag 
Trait to get the diagonal of square matrices. 
Dim 
Trait of objects having a spacial dimension known at compile time. 
Dot 
Traits of objects having a dot product. 
EigenQR 
Trait for computing the eigenvector and eigenvalues of a square matrix usin the QR algorithm. 
Eye 
Trait for constructing the identity matrix 
FloatPnt 
Trait of points with components implementing the 
FloatVec 
Trait of vector with components implementing the 
FromHomogeneous 
Traits of objects which can be build from an homogeneous coordinate form. 
Indexable 
This is a workaround of current Rust limitations. 
Inv 
Trait of objects having an inverse. Typically used to implement matrix inverse. 
Iterable 
This is a workaround of current Rust limitations. 
IterableMut 
This is a workaround of current Rust limitations. 
Mat 
Trait of matrices. 
Mean 
Trait for computing the covariance of a set of data. 
Norm 
Traits of objects having an euclidian norm. 
NumPnt 
Trait grouping most common operations on points. 
NumVec 
Trait grouping most common operations on vectors. 
Orig 
The zero element of a vector space, seen as an element of its embeding affine space. 
Outer 
Traits of objects having an outer product. 
POrd 
Pointwise ordering operations. 
PntAsVec 
Trait that relates a point of an affine space to a vector of the associated vector space. 
Repeat 
Trait for constructiong an object repeating a value. 
Rotate 
Trait of objects able to rotate other objects. 
Rotation 
Trait of object which can represent a rotation, and to which new rotations can be appended. A rotation is assumed to be an isometry without translation and without reflexion. 
RotationMatrix 
Trait of transformation having a rotation extractable as a rotation matrix. This can typically be implemented by quaternions to convert them to a rotation matrix. 
RotationTo 
Trait of object that can be rotated to be superimposed with another one of the same nature. 
RotationWithTranslation 
Various composition of rotation and translation. 
Row 
Trait to access rows of a matrix or a vector. 
RowSlice 
Trait to access part of a row of a matrix 
Shape 
The shape of an indexable object. 
SquareMat 
Trait implemented by square matrices. 
ToHomogeneous 
Traits of objects which can be put in homogeneous coordinates form. 
Transform 
Trait of objects able to transform other objects. 
Transformation 
Trait of object which represent a transformation, and to which new transformations can be appended. 
Translate 
Trait of objects able to translate other objects. This is typically implemented by vectors to translate points. 
Translation 
Trait of object which represent a translation, and to wich new translation can be appended. 
Transpose 
Trait of objects which can be transposed. 
UniformSphereSample 
Trait of vectors able to sample a unit sphere. 
Functions
abs 
Computes a componentwise absolute value. 
absolute_rotate 
Applies a rotation using the absolute values of its components. 
angle_between 
Computes the angle of the rotation needed to transfom 
append_rotation 
Applies the rotation 
append_rotation_wrt_center 
Rotates a copy of 
append_rotation_wrt_point 
Rotates a copy of 
append_transformation 
Gets a transformed copy of 
append_translation 
Applies the translation 
approx_eq 
Tests approximate equality. 
approx_eq_eps 
Tests approximate equality using a custom epsilon. 
canonical_basis 
Computes the canonical basis for a given dimension. 
canonical_basis_element 
Gets the (0based) ith element of the canonical basis of V. 
cast 
Converts an object from one type to another. 
center 
Returns the center of two points. 
cholesky 
Cholesky decomposition G of a square symmetric positive definite matrix A, such that A = G * G^{T} 
clamp 
Change the input value to ensure it is on the range 
cov 
Computes the covariance of a set of observations. 
cross 
Computes the cross product of two vectors. 
cross_matrix 
Given a vector, computes the matrix which, when multiplied by another vector, computes a cross product. 
det 
Computes the determinant of a square matrix. 
diag 
Gets the diagonal of a square matrix. 
dim 
Gets the dimension an object lives in. 
dist 
Returns the distance between two points. 
dot 
Computes the dot product of two vectors. 
eigen_qr 
Computes the eigenvalues and eigenvectors of a square matrix usin the QR algorithm. 
from_homogeneous 
Converts a matrix or vector from homogeneous coordinates. 
householder_matrix 
Get the householder matrix corresponding to a reflexion to the hyperplane
defined by 
identity 
Create a special identity object. 
inf 
Returns the infimum of 
inv 
Gets an inverted copy of a matrix. 
inv_rotate 
Applies an inverse rotation to a vector. 
inv_rotation 
Gets the inverse rotation applicable by 
inv_transform 
Applies an inverse transformation to a vector. 
inv_transformation 
Gets the inverse transformation applicable by 
inv_translate 
Applies an inverse translation to a point. 
inv_translation 
Gets the inverse translation applicable by 
is_zero 
Tests is a value is iqual to zero. 
max 
Same as 
mean 
Computes the mean of a set of observations. 
min 
Same as 
new_identity 
Construct the identity matrix for a given dimension 
norm 
Computes the L2 norm of a vector. 
normalize 
Gets the normalized version of a vector. 
one 
Create a onevalued value. 
orig 
Returns the trivial origin of an affine space. 
orthonormal_subspace_basis 
Computes the basis of the orthonormal subspace of a given vector. 
outer 
Computes the outer product of two vectors. 
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 
prepend_rotation 
Preapplies the rotation 
qr 
QR decomposition using Householder reflections. 
repeat 
Create an object by repeating a value. 
rotate 
Applies a rotation to a vector. 
rotation 
Gets the rotation applicable by 
rotation_between 
Computes the rotation needed to transform 
sample_sphere 
Samples the unit sphere living on the dimension as the samples types. 
shape 
Gets the indexable range of an object. 
sqdist 
Returns the squared distance between two points. 
sqnorm 
Computes the squared L2 norm of a vector. 
sup 
Returns the supremum of 
to_homogeneous 
Converts a matrix or vector to homogeneous coordinates. 
to_rot_mat 
Builds a rotation matrix from 
transform 
Applies a transformation to a vector. 
transformation 
Gets the transformation applicable by 
translate 
Applies a translation to a point. 
translation 
Gets the translation applicable by 
transpose 
Gets a transposed copy of a matrix. 
zero 
Create a zerovalued value. 