18 个版本
0.14.1 | 2024 年 8 月 10 日 |
---|---|
0.11.2 | 2020 年 10 月 19 日 |
0.9.2 | 2019 年 12 月 2 日 |
0.9.1 | 2018 年 10 月 5 日 |
0.8.2 | 2018 年 5 月 4 日 |
#6 in #intersection
每月下载量256
用于 2 crates
17KB
247 代码行
bbox
bbox 是一个用于管理对齐的 3D 边界框的 crate。边界框可以通过 CSG 操作创建、膨胀、变换和与其他边界框合并。最后,您可以测试边界框是否包含某个点以及点与盒子的近似距离。
示例
相交两个边界框
use nalgebra as na;
let bbox1 = bbox::BoundingBox::<f64>::new(na::Point3::new(0., 0., 0.),
na::Point3::new(1., 2., 3.));
let bbox2 = bbox::BoundingBox::<f64>::new(na::Point3::new(-1., -2., -3.),
na::Point3::new(3., 2., 1.));
let intersection = bbox1.intersection(&bbox2);
旋转边界框
use nalgebra as na;
let rotation = na::Rotation::from_euler_angles(10., 11., 12.).to_homogeneous();
let bbox = bbox::BoundingBox::<f64>::new(na::Point3::new(0., 0., 0.),
na::Point3::new(1., 2., 3.));
let rotated_box = bbox.transform(&rotation);
点是否在盒子内?
use nalgebra as na;
let bbox = bbox::BoundingBox::<f64>::new(na::Point3::new(0., 0., 0.),
na::Point3::new(1., 2., 3.));
let result = bbox.contains(na::Point3::new(1., 1., 1.));
计算点与盒子的近似距离
use nalgebra as na;
let bbox = bbox::BoundingBox::<f64>::new(na::Point3::new(0., 0., 0.),
na::Point3::new(1., 2., 3.));
let distance = bbox.distance(na::Point3::new(1., 1., 1.));
Cargo 功能
mint
- 通过mint
接口启用与其他数学库的互操作性。
许可证
根据 MIT 许可证 许可。依赖关系
~3MB
~57K SLoC