gml 1.1.0

Graphics Math Library. Generic Vector and Matrix Math library targetting graphics applications.
# rust-gml

Graphics Math Library.  A vector and matrix library for Rust
targeting low level graphics operations.  Similar to C++ libraries
glm, cml, MathGeoLib, Eigen, CGGeometry from Cocoa, and others.  It
may be useful to anyone working with low level graphic operations in
Rust.

This library was created to determine if header-only generic template
C++ libraries such as you would find in Boost, glm.g-truc.net, and the
like could be implemented in a simpler fashion in Rust with less
boilerplate while maintaining performance.  After several iterations
we are fairly happy with the result.  Version 1.0 of this library
(gml) implements a complete and tested fully generic vector and matrix
library, modelled after the functionality found in the OpenGL shader
language, the C++ library GLM, and the math portion of the Unity game
engine.  With OpenGL or DirectX bindings (not included here) and this
library you can be coding up spinning 3D geometries with Rust in no time.

## Documentation

Documentation may be found at [CreekWare/OpenSource/gml](http://creekware.com/rust-gml/doc/gml/index.html)

Alternatively, documentation may be generated by cloning a local copy of this
project on a machine with Rust 1.xx installed, using `cargo doc` to
generate the documentation, and finally `cargo doc --open` to view the
documentation in your web browser.

## Versioning

Version 1.0.0 represents a stable and tested API.  The third digit (ie
from 1.0.0 to 1.0.1) represents minor revisions, bug fixes and the
like.  The second digit (ie from 1.0.23 to 1.1.0) represents
significant backwards compatible feature additions.  The first digit
(ie from 1.3.43 to 2.0.0) represents breaking API changes.
Development prior to 1.0.0 was performed using a private repository.

## Usage

To use the currently released version from crates.io (recommended),
add this to your `Cargo.toml`:

```toml
[dependencies]
gml = "*"
```

or to use the latest version from the github repository,
add this instead to your `Cargo.toml`:

```toml
[dependencies.gml]
git = "https://github.com/creekware/rust-gml.git"
```

and this to your crate root:

```rust
extern crate gml;
```

### Hello Vector Example

```rust
extern crate gml;

fn main() {
    let a = gml::Vector3::new(2.0, 5.0, 7.0);
    let b = gml::Vector3::new(11.0, -32.0, 14.0);
    let c = a + b;
    
    println!("Hello from gml.  c={:?}", c);
}
```


## Contributing

Discussions on how to implement these features using Rust in a simpler
or perhaps more performant fashion are welcome, as are bug fixes or
feature additions within the scope of the library.  A variety of
additional features cherry picked from the C++ reference libraries
will be added as time permits.