5个版本

0.1.7 2023年9月11日
0.1.6 2023年9月2日
0.1.5 2023年8月25日
0.1.1 2023年8月23日
0.1.0 2023年8月22日

#246图形API

每月28次下载

MIT 许可证

6KB
66

raylite

Rust中的轻量级,无依赖的光线投射

🔧WIP: 非常早期的开发阶段,欢迎提交问题/贡献!

Crates.io

🚀 安装

使用cargo安装: cargo add raylite

🪶 示例

main.rs

use raylite::{cast, Barrier, Ray};

fn main() {
    // Positions are differentiated here because emission direction matters
    let ray = Ray {
        position: (0., 0.),     // Emission origin position
        end_position: (2., 0.), // Emission end position
    };
    let mut bar = Barrier {
        positions: ((1., -1.), (1., 1.)), // Direction does not matter for Barriers
    };

    let result = cast(&ray, &bar); // Returns a Result<RayHit, RayFail>

    assert!(result.is_ok()); // Result is an Ok<RayHit> containing hit info

    bar = Barrier {
        positions: ((-1., -1.), (-1., 1.)), // Place barrier behind the Ray
    };

    let result = cast(&ray, &bar);
    assert!(result.is_err()); // Result is an Err<RayFail::NoHit>
}

cast_wide() 提供与 cast() 相同的功能,但需要你提供一个 &Vec<Barrier> 用于批处理。

无运行时依赖