Crates.io | mathie |
lib.rs | mathie |
version | 0.6.0 |
source | src |
created_at | 2022-08-06 14:45:22.872223 |
updated_at | 2022-10-06 10:46:05.654857 |
description | A rust math type library. |
homepage | https://github.com/alphaqu/mathie |
repository | https://github.com/alphaqu/mathie |
max_upload_size | |
id | 639866 |
size | 41,174 |
Mathie is a rust math type library which contains the 3 basic types for doing anything 2D.
Value
A single number value.Vec2
A two-dimensional position.Rect
A two-dimensional area that has an origin and a size.Doing math with the builtin types is designed to be simple and powerful. All of them support Addition, Subtraction, Multiplication, Division and Remainder.
fn add() {
assert_eq!(Vec2D::new(0.5, 0.5) + Vec2D::new(1.0, 1.0), Vec2D::new(1.5, 1.5));
assert_eq!(Vec2D::new(0.5, 0.5) + 1.0, Vec2D::new(1.5, 1.5));
}
This library runs on the optional concept of units which may be sized and are designed to be easily converted between without thinking about it.
fn cm_to_m() {
let v0 = Vec2D::<f32, Centimeter>::new_def(250.0, 250.0);
// () is base unit. In all cases its Meter
let v1 = v0.convert::<()>();
assert_eq!(v1, Vec2D::new_def(2.5, 2.5));
}
There are builtin units that are optional.
metric_units
20 Metric prefixesimperial_units
10 Imperial prefixesnautical_units
Nautical mileThis library has optional features for compatibility between other
math type libraries like euclid
.
fn euclid_compat() {
let _: Vec2D<f32, ()> = euclid::Vector2D::new(1.0, 1.0).into();
}