Coder Social home page Coder Social logo

nalgebra's Introduction

crates.io Build status

Documentation | Forum

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.

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.10.*"

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::*;

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));
}

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 the generic_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, Unit<Quaternion>.
  • Unit-sized values (unit vectors, unit quaternions, etc.): Unit<T>, e.g., Unit<Vector3<f32>>.
  • Isometries (translation ⨯ rotation): Isometry2, Isometry3
  • Similarity transformations (translation ⨯ rotation ⨯ uniform scale): Similarity2, Similarity3.
  • 3D projections for computer graphics: Persp3, PerspMatrix3, Ortho3, OrthoMatrix3.
  • Dynamically sized heap-allocated vector: DVector.
  • Dynamically sized stack-allocated vectors with a maximum size: DVector1 to DVector6.
  • 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's People

Contributors

sebcrozet avatar milibopp avatar bfops avatar andersk avatar hadronized avatar tomaka avatar arturoc avatar mikedilger avatar tinco avatar mitchmindtree avatar zsiciarz avatar brendanzab avatar aryla avatar anderskaloer avatar nwin avatar jmagnuson avatar vbarrielle avatar tikue avatar steveklabnik avatar globin avatar retep998 avatar oleglite avatar tilehalo avatar garrison avatar jorendorff avatar jhasse avatar blevin avatar antsiscool avatar alexanderchr avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.