Expand description
nalgebra
nalgebra is a 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.
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]
nalgebra = "0.16"
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 free-functions 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 general-purpose, low-dimensional, 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 compile-time (using type-level integers) or at runtime. - Matrices and vectors with compile-time sizes are statically allocated while dynamic ones are allocated on the heap.
- Convenient aliases for low-dimensional 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 an homogeneous matrix:
Affine2
,Affine3
. - Projective (i.e. invertible) transformations stored as an homogeneous matrix:
Projective2
,Projective3
. - General transformations that does not have to be invertible, stored as an homogeneous matrix:
Transform2
,Transform3
. - 3D projections for computer graphics:
Perspective3
,Orthographic3
. - Matrix factorizations:
Cholesky
,QR
,LU
,FullPivLU
,SVD
,RealSchur
,Hessenberg
,SymmetricEigen
. - Insertion and removal of rows of columns of a matrix.
- Implements traits from the alga crate for generic programming.
Re-exports
Modules
[Reexported at the root of this crate.] Data structures for vector and matrix computations.
[Reexported at the root of this crate.] Data structures for points and usual transformations
(rotations, isometries, etc.)
[Reexported at the root of this crate.] Factorization of real matrices.
Structs
The universal identity element wrt. a given operator, usually noted
Id
with a
context-dependent subscript.Traits
Trait shared by all reals.
Functions
absDeprecated
The absolute value of
a
.angleDeprecated
Computes the smallest angle between two vectors.
The center of two points.
Returns a reference to the input value clamped to the interval
[min, max]
.Converts an object from one type to an equivalent or more general one.
Converts an object from one type to an equivalent or more general one.
Use with care! Same as
try_convert
but
without any property checks.Use with care! Same as
try_convert
but
without any property checks.The dimension of the given algebraic entity seen as a vector space.
The distance between two points.
The squared distance between two points.
dotDeprecated
Computes the dot product of two vectors.
Gets the ubiquitous multiplicative identity element.
Returns the infimum of
a
and b
.Returns simultaneously the infimum and supremum of
a
and b
.Computes the multiplicative inverse of an (always invertible) algebraic entity.
Indicates if
try_convert
will succeed without
actually performing the conversion.magnitude_squaredDeprecated
A synonym for
norm_squared
,
aka length squared.Same as
cmp::max
.Same as
cmp::min
.normDeprecated
Computes the L2 (Euclidean) norm of a vector.
norm_squaredDeprecated
Computes the squared L2 (Euclidean) norm of the vector
v
.normalizeDeprecated
Computes the normalized version of the vector
v
.Gets the multiplicative identity element.
originDeprecated
Gets the origin of the given point.
Clamp
value
between min
and max
. Returns None
if value
is not comparable to
min
or max
.Compare
a
and b
using a partial ordering relation.Returns
true
iff a
and b
are comparable and a >= b
.Returns
true
iff a
and b
are comparable and a > b
.Returns
true
iff a
and b
are comparable and a <= b
.Returns
true
iff a
and b
are comparable and a < b
.Return the maximum of
a
and b
if they are comparable.Return the minimum of
a
and b
if they are comparable.Sorts two values in increasing order using a partial ordering.
Returns the supremum of
a
and b
.Attempts to convert an object to a more specific one.
Attempts to convert an object to a more specific one.
Tries to gets an inverted copy of a square matrix.
try_normalizeDeprecated
Computes the normalized version of the vector
v
or returns None
if its norm is smaller than min_norm
.Wraps
val
into the range [min, max]
using modular arithmetics.Gets the additive identity element.