1个不稳定版本
0.1.0 | 2019年8月8日 |
---|
#2583在算法中
15KB
336 行
quadtree-cd
一个基于四叉树的数据结构,用于在有限的二维空间中放置形状,如旋转的矩形,并检查与已放置项目的碰撞。
有关文档,请参阅docs.rs/quadtree-cd。
用法
四叉树通过宽度和高度参数初始化,并对使用的几何类型进行泛型;该软件包支持旋转矩形。
以下示例演示了如何使用四叉树来放置旋转矩形,并在每个放置时检查它是否与已放置的项目相交。
use quadtree_cd::{Tree, BoundingBox, RotatedRect as Rect};
fn main() {
let mut tree: Tree<RR> = Tree::new(1.0, 1.0);
let rr1 = Rect { x: 0.5, y: 0.5, w: 0.5, h: 0.5, a: PI / 4.0 };
let rr2 = Rect { x: 0.85, y: 0.85, w: 0.15, h: 0.15, a: PI / 8.0 };
// These rectangles are non-intersecting.
assert!(tree.insert_unless_intersecting(rr1, &(&rr1).into()));
assert!(tree.insert_unless_intersecting(rr2, &(&rr2).into()));
// But this one intersects at least one.
let rr3 = Rect { x: 0.85, y: 0.85, w: 0.25, h: 0.25, a: PI / 8.0 };
assert!(!tree.insert_unless_intersecting(rr3, &(&rr3).into()));
}
依赖关系
~10KB