Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/maplant/al-jabr

Extremely generic linear algebra libary for Rust
https://github.com/maplant/al-jabr

Last synced: 6 days ago
JSON representation

Extremely generic linear algebra libary for Rust

Awesome Lists containing this project

README

        

# al-jabr

[![Documentation](https://img.shields.io/docsrs/al-jabr/latest?style=for-the-badge)](https://docs.rs/al-jabr)
[![Version](https://img.shields.io/crates/v/al-jabr.svg?style=for-the-badge)](https://crates.io/crates/al-jabr)
[![Downloads](https://img.shields.io/crates/d/al-jabr.svg?style=for-the-badge)](https://crates.io/crates/al-jabr)

An n-dimensional linear algebra and mathematics library for computer
graphics and other applications, designed to be roughly compatible with
[cgmath](https://github.com/rustgd/cgmath).

The library provides:

* small vectors: `Vector2`, `Vector3`, and `Vector4`
* points: `Point2`, `Point3`, and `Point4`
* large column vectors: `ColumnVector`
* matrices: `Matrix2`, `Matrix3`, `Matrix4` and `Matrix`
* a quaternion type: `Quaternion`
* orthonormal (rotation) matrices: `Orthonormal`

`al-jabr` supports Vectors and Matrices of any size and will provide
implementations for any mathematic operations that are supported by their
scalars. Additionally, `al-jabr` can leverage Rust's type system to ensure that
operations are only applied to values that are the correct size. `al-jabr` can
do this while remaining no-std compatible.

For more information and a guide on getting started, check out the [documentation](https://docs.rs/al-jabr/).

## Cargo Features

* The `mint` feature (off by default) adds a dependency to the [mint](https://crates.io/crates/mint) crate and provides support for converting between al-jabr types and mint types.
* The `serde` feature (off by default) adds serialization/deserialization support from the [serde](https://crates.io/crates/serde) crate.
* The `rand` feature (off by default) allows you to create random points, vectors, and matrices by sampling from a random number source.

## Contributions

Pull request of any nature are welcome.

## Support

Contact the author at `[email protected]` or [file an issue on github.](https://github.com/maplant/al-jabr/issues/new/choose)