2 个版本
0.1.1 | 2019年6月12日 |
---|---|
0.1.0 | 2019年6月10日 |
#1154 in 游戏开发
79KB
1K SLoC
fts_gamemath
fts_gamemath 是一个提供 3D 游戏数学基础构建块的 Rust Crate 集合
fts_units
fts_units 是一个 Rust 库,它允许在编译时使用测量单位进行类型安全的数学运算。
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
这可以轻松扩展到复杂的操作。
use fts_units::si_system::quantities::*;
fn calc_ballistic_range(speed: MetersPerSecond<f32>, gravity: MetersPerSecond2<f32>, initial_height: Meters<f32>)
-> Meters<f32>
{
let d2r = 0.01745329252;
let angle : f32 = 45.0 * d2r;
let cos = Dimensionless::<f32>::new(angle.cos());
let sin = Dimensionless::<f32>::new(angle.sin());
let range = (speed*cos/gravity) * (speed*sin + (speed*speed*sin*sin + Dimensionless::<f32>::new(2.0)*gravity*initial_height).sqrt());
range
}
您可以进行单位间的转换和类型间的转换。
let m = Meters::<f32>::new(7.73);
let km : Kilometers<f32> = m.convert_into();
assert_eq!(km.amount(), 0.00773);
let i : Meters<i32> = m.cast_into();
assert_eq!(i.amount(), 7);
有关更多功能和示例,请参阅 fts_units 文档。
fts_vecmath
即将推出!
fts_intersect3d
即将推出!
许可证:Unlicense OR MIT
依赖项
~215–305KB