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次下载
6KB
66 行
raylite
Rust中的轻量级,无依赖的光线投射
🔧WIP: 非常早期的开发阶段,欢迎提交问题/贡献!
🚀 安装
使用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>
用于批处理。