5个版本

0.2.4 2022年5月3日
0.2.3 2022年4月29日
0.2.2 2022年3月28日
0.1.0 2022年3月26日

#529 in 数学

MIT-0 许可证

76KB
1.5K SLoC

fmath

我的Rust个人项目的数学库

关于

这不是一个通用数学库。它专门为我自己的目的编写。

如果你需要,可以随意在项目中使用它,甚至不必担心署名 :)

如何使用

包含

在Cargo.toml文件中...

  [dependencies]
  fmath = "0.2.4"

文档

使用命令行中的cargo doc构建文档( --open 在浏览器中打开)

  cargo doc

示例


use fmath::{
    types::{
        *, color::*
    },
    functions::angles::degrees_to_radians
};

let v1 = Vector2::new_left();
let v2 = Vector2::new_right();
let v3 = Vector2::new( 0.25, 0.247 );

let vector2_addition = v1 + v3;
let mut expected_result  = Vector2::new( -0.75, 0.247 );

println!("v1: {}, v2: {}, v3: {}\nv1 + v3 = {}", v1, v2, v3, vector2_addition);
assert!( vector2_addition == expected_result );

let vector2_subtraction = Vector2::new(0.8743, 123.523) - Vector2::new(12.52, 47.373);
expected_result = Vector2::new(-11.6457, 76.15 );
assert!( vector2_subtraction == expected_result );

let vector2_multiplication = Vector2::new(235.2, 6531.122) * 3.1;
expected_result = Vector2::new( 729.12, 20246.4782 );
assert!( vector2_multiplication == expected_result );

let translate = Vector3::new( 0.1, 4.2, 22.0 );
let euler_rotation = Vector3::new(
    degrees_to_radians( 90.0 ),
    degrees_to_radians( 45.0 ),
    degrees_to_radians( 15.0 ),
);
let scale = Vector3::new_one();

let trs = Matrix4x4::new_trs(
    translate.as_array(),
    euler_rotation.as_array(),
    scale.as_array()
);

let point = Vector3::new( 1.2, 0.5, -2.0 );
println!( "{}", trs.mul_vector3( &point ) );

// COLORS ======================================================

let mut color = RGB::from_hex( "#44FF00" ).unwrap();
println!("{}", color); // print as 8-bit values
color.set_a_f32( 0.5 ); // set alpha to 1.0
println!("{}", color.format_as_float_rgba()); // print as floats

let hsv = HSV::new( 251.0, 0.52, 0.77 );
println!("{}", hsv);
println!("HSV as {}", hsv.as_rgb());


无运行时依赖