Crate nalgebra [−] [src]
nalgebra
nalgebra is a low-dimensional linear algebra library written for Rust targeting:
- low-dimensional 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::*;Run
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)); }Run
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 thegeneric_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:
Perspective3
,PerspectiveMatrix3
,Orthographic3
,OrthographicMatrix3
. - Dynamically sized heap-allocated vector:
DVector
. - Dynamically sized stack-allocated vectors with a maximum size:
DVector1
toDVector6
. - 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.
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
DMatrix |
Matrix with dimensions unknown at compile-time. |
DMatrix1 |
A stack-allocated dynamically sized matrix with at most one row and column. |
DMatrix2 |
A stack-allocated dynamically sized square or rectangular matrix with at most 2 rows and columns. |
DMatrix3 |
A stack-allocated dynamically sized square or rectangular matrix with at most 3 rows and columns. |
DMatrix4 |
A stack-allocated dynamically sized square or rectangular matrix with at most 4 rows and columns. |
DMatrix5 |
A stack-allocated dynamically sized square or rectangular matrix with at most 5 rows and columns. |
DMatrix6 |
A stack-allocated dynamically sized square or rectangular matrix with at most 6 rows and columns. |
DVector |
Heap allocated, dynamically sized vector. |
DVector1 |
Stack-allocated, dynamically sized vector with a maximum size of 1. |
DVector2 |
Stack-allocated, dynamically sized vector with a maximum size of 2. |
DVector3 |
Stack-allocated, dynamically sized vector with a maximum size of 3. |
DVector4 |
Stack-allocated, dynamically sized vector with a maximum size of 4. |
DVector5 |
Stack-allocated, dynamically sized vector with a maximum size of 5. |
DVector6 |
Stack-allocated, dynamically sized vector with a maximum size of 6. |
Identity |
Special identity matrix. All its operation are no-ops. |
Isometry2 |
Two dimensional direct isometry. |
Isometry3 |
Three dimensional direct isometry. |
Matrix1 |
Square matrix of dimension 1. |
Matrix2 |
Square matrix of dimension 2. |
Matrix3 |
Square matrix of dimension 3. |
Matrix4 |
Square matrix of dimension 4. |
Matrix5 |
Square matrix of dimension 5. |
Matrix6 |
Square matrix of dimension 6. |
Orthographic3 |
A 3D orthographic projection stored without any matrix. |
OrthographicMatrix3 |
A 3D orthographic projection stored as a 4D matrix. |
Perspective3 |
A 3D perspective projection stored without any matrix. |
PerspectiveMatrix3 |
A 3D perspective projection stored as a 4D matrix. |
Point1 |
Point of dimension 1. |
Point2 |
Point of dimension 2. |
Point3 |
Point of dimension 3. |
Point4 |
Point of dimension 4. |
Point5 |
Point of dimension 5. |
Point6 |
Point of dimension 6. |
Quaternion |
A quaternion. See |
Rotation2 |
Two dimensional rotation matrix. |
Rotation3 |
Three dimensional rotation matrix. |
Similarity2 |
A two-dimensional similarity transformation. |
Similarity3 |
A three-dimensional similarity transformation. |
UnitQuaternion |
A unit quaternion that can represent a 3D rotation. |
Vector1 |
Vector of dimension 1. |
Vector2 |
Vector of dimension 2. |
Vector3 |
Vector of dimension 3. |
Vector4 |
Vector of dimension 4. |
Vector5 |
Vector of dimension 5. |
Vector6 |
Vector of dimension 6. |
Enums
PartialOrdering |
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 floating-point 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 |
Column |
Trait to access columns of a matrix or vector. |
ColumnSlice |
Trait to access part of a column of a matrix |
Covariance |
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. |
Determinant |
Trait of objects having a determinant. Typically used by square matrices. |
Diagonal |
Trait to get the diagonal of square matrices. |
Dimension |
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 |
FloatPoint |
Trait of points with components implementing the |
FloatVector |
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. |
Inverse |
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. |
Matrix |
Trait of matrices. |
Mean |
Trait for computing the mean of a set of data. |
Norm |
Traits of objects having an euclidian norm. |
NumPoint |
Trait grouping most common operations on points. |
NumVector |
Trait grouping most common operations on vectors. |
Origin |
The zero element of a vector space, seen as an element of its embeding affine space. |
Outer |
Traits of objects having an outer product. |
PartialOrder |
Pointwise ordering operations. |
PointAsVector |
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. |
SquareMatrix |
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 component-wise 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 (0-based) i-th 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 * GT |
clamp |
Change the input value to ensure it is on the range |
covariance |
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. |
determinant |
Computes the determinant of a square matrix. |
diagonal |
Gets the diagonal of a square matrix. |
dimension |
Gets the dimension an object lives in. |
distance |
Returns the distance between two points. |
distance_squared |
Returns the squared 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. |
hessenberg |
Hessenberg Returns the matrix m in Hessenberg form and the corresponding similarity transformation |
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 |
inverse |
Gets an inverted copy of a matrix. |
inverse_rotate |
Applies an inverse rotation to a vector. |
inverse_rotation |
Gets the inverse rotation applicable by |
inverse_transform |
Applies an inverse transformation to a vector. |
inverse_transformation |
Gets the inverse transformation applicable by |
inverse_translate |
Applies an inverse translation to a point. |
inverse_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. |
norm_squared |
Computes the squared L2 norm of a vector. |
normalize |
Gets the normalized version of a vector. |
one |
Create a one-valued value. |
origin |
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 |
Pre-applies 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. |
sup |
Returns the supremum of |
to_homogeneous |
Converts a matrix or vector to homogeneous coordinates. |
to_rotation_matrix |
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 zero-valued value. |