2013-08-26 05:08:25 +00:00
|
|
|
# cgmath-rs
|
2012-11-01 05:58:36 +00:00
|
|
|
|
2013-11-03 04:11:18 +00:00
|
|
|
[![Build Status](https://travis-ci.org/bjz/cgmath-rs.png?branch=master)](https://travis-ci.org/bjz/cgmath-rs)
|
|
|
|
|
2013-08-26 05:08:25 +00:00
|
|
|
A linear algebra and mathematics library for computer graphics.
|
2013-08-27 11:12:42 +00:00
|
|
|
|
2013-09-03 05:13:10 +00:00
|
|
|
The library provides:
|
|
|
|
|
|
|
|
- vectors: `Vec2`, `Vec3`, `Vec4`
|
2013-09-17 09:02:28 +00:00
|
|
|
- square matrices: `Mat2`, `Mat3`, `Mat4`
|
2013-09-03 05:13:10 +00:00
|
|
|
- a quaternion type: `Quat`
|
2013-09-17 09:02:28 +00:00
|
|
|
- rotation matrices: `Rot2`, `Rot3`
|
|
|
|
- rotations: `Euler`, `AxisAngle`
|
|
|
|
- angle units: `Rad`, `Deg`
|
2013-09-20 06:45:51 +00:00
|
|
|
- points: `Point2`, `Point3`
|
2013-09-17 09:02:28 +00:00
|
|
|
- rays: `Ray2`, `Ray3`
|
|
|
|
- plane: `Plane`
|
|
|
|
- perspective projections: `Perspective`, `PerspectiveFov`, `Ortho`
|
2013-09-20 06:45:51 +00:00
|
|
|
- a view frustum: `Frustrum`
|
2013-09-17 09:02:28 +00:00
|
|
|
- axis-aligned bounding boxes: `Aabb2`, `Aabb3`
|
|
|
|
- oriented bounding boxes: `Obb2`, `Obb3`
|
|
|
|
- collision primitives: `Sphere`, `Cylinder`
|
2013-09-03 05:13:10 +00:00
|
|
|
|
2013-09-17 09:02:28 +00:00
|
|
|
Not all of the functionality has been implemented yet, and the existing code
|
|
|
|
is not fully covered by the testsuite. If you encounter any mistakes or
|
|
|
|
omissions please let me know by posting an issue, or even better: send me a
|
|
|
|
pull request with a fix.
|
|
|
|
|
2013-09-03 05:13:10 +00:00
|
|
|
## Compilation
|
|
|
|
|
2013-08-27 11:12:42 +00:00
|
|
|
~~~
|
|
|
|
rustpkg build cgmath
|
|
|
|
~~~
|
2013-09-03 05:13:10 +00:00
|
|
|
|
|
|
|
## Limitations
|
|
|
|
|
|
|
|
cgmath is _not_ an n-dimensional library and is aimed at computer graphics
|
|
|
|
applications rather than general linear algebra. It only offers the 2, 3, and
|
|
|
|
4 dimensional structures that are more than useful for most computer graphics
|
|
|
|
applications. This design decision was made in order to simplify the
|
|
|
|
implementation (Rust cannot paramerise over constants at compile time), and to
|
2013-09-17 09:02:28 +00:00
|
|
|
make dimension-specific optimisations easier in the future. Those looking for
|
2013-09-03 05:13:10 +00:00
|
|
|
n-dimensional mathematics can look to [nalgebra](https://github.com/sebcrozet/nalgebra).
|
|
|
|
|
|
|
|
Currently, operators are not overloaded. This is due to limitations in Rust's
|
|
|
|
generics that will be fixed sometime in the future.
|
|
|
|
|
|
|
|
## Contributing
|
|
|
|
|
|
|
|
Pull requests are most welcome, especially in the realm of performance
|
|
|
|
enhancements and fixing any mistakes I may have made along the way. Unit tests
|
|
|
|
and benchmarks are also required, so help on that front would be most
|
2013-09-17 09:02:28 +00:00
|
|
|
appreciated.
|
2013-09-21 08:09:15 +00:00
|
|
|
|
|
|
|
## Support
|
|
|
|
|
|
|
|
Contact `bjz` on irc.mozilla.org [#rust](http://mibbit.com/?server=irc.mozilla.org&channel=%23rust)
|
|
|
|
and [#rust-gamedev](http://mibbit.com/?server=irc.mozilla.org&channel=%23rust-gamedev),
|
|
|
|
or [post an issue](https://github.com/bjz/cgmath-rs/issues/new) on Github.
|