fts_gamemath

Crate API Build Status Crates.io

fts_gamemath is a collection of Rust crates that provide basic building blocks for 3d video game math

fts_units

fts_units is a Rust library that enables compile-time type-safe mathematical operations using units of measurement.

no_compile use fts_units::si_system::quantities::f32::*; let d = Meters::new(10.0); let t = Seconds::new(2.0); let v = d / v; // units will be m·s⁻¹ let err = d + t; // compile error

This easily extends into complex operations.

```rust use ftsunits::sisystem::quantities::*;

fn calcballisticrange(speed: MetersPerSecond, gravity: MetersPerSecond2, initial_height: Meters) -> Meters { let d2r = 0.01745329252; let angle : f32 = 45.0 * d2r; let cos = Dimensionless::::new(angle.cos()); let sin = Dimensionless::::new(angle.sin());

let range = (speed*cos/gravity) * (speed*sin + (speed*speed*sin*sin + Dimensionless::<f32>::new(2.0)*gravity*initial_height).sqrt());
range

} ```

You can convert between units and cast between types.

```rust

let m = Meters::::new(7.73); let km : Kilometers = m.convertinto(); asserteq!(km.amount(), 0.00773);

let i : Meters = m.castinto(); asserteq!(i.amount(), 7); ```

For additional features and examples refer to the fts_units documentation.

fts_vecmath

Coming soon!

fts_intersect3d

Coming soon!

License: Unlicense OR MIT