7个版本

0.1.6 2024年1月28日
0.1.5 2023年8月16日

#1080 in 数学

自定义许可证

21KB
459 代码行

vec3-rs

https://crates.io/crates/vec3-rs

该crate提供了Rust中3D向量的简单高效实现,包括各种用于向量操作和运算的实用函数。

特性

  • 在笛卡尔空间中表示3D向量。
  • 包含X、Y和Z轴的预定义常数向量。
  • 支持基本的向量运算,如加法、减法、点积、叉积等。
  • 支持所有原始数字类型。
  • 提供向量归一化、线性插值和角度计算的方法。
  • 允许在指定的epsilon范围内进行模糊的相等性比较。

示例

use vec3_rs::Vector3;

fn main() {
    let mut v1: Vector3<f64> = Vector3::new(1.0, 2.0, 3.0);
    let mut v2: Vector3<f64> = Vector3::new(3.0, 1.0, 2.0);

    // Basic operations
    let sum = v1 + v2;
    let difference = v1 - v2;
    let dot_product = v1.dot(&v2);
    let cross_product = v1.cross(&v2);

    // Other methods
    let lerp_result = v1.lerp(&v2, 0.5);
    let angle = v1.angle(&v2);
    let fuzzy_equal = v1.fuzzy_equal(&v2, 0.001);

    println!("Sum: {sum}");
    println!("Difference: {difference}");
    println!("Dot product: {dot_product}");
    println!("Cross product: {cross_product}");
    println!("Lerp 50%: {lerp_result}");
    println!("Angle: {angle}");
    print!("Are they close enough?: {fuzzy_equal}");

    v1.normalize();
    v2.normalize();

    println!("v1 normalized: {v1}");
    println!("v2 normalized: {v2}");
}

依赖项

~1–1.6MB
~33K SLoC