Overview
Broccoli is a broadphase collision detection library.
The base data structure is a hybrid between a KD Tree and Sweep and Prune.
Inner projects
The broccoli_demo inner project is meant to show case the use of these algorithms.
The report inner project generates benches used in the broccoli book.
Screenshot
Screen capture from the inner dinotree_alg_demo project.
Example
use broccoli::prelude::*;
fn main() {
let mut aabbs = [
bbox(rect(0isize, 10, 0, 10), 0),
bbox(rect(15, 20, 15, 20), 0),
bbox(rect(5, 15, 5, 15), 0),
];
let mut ref_aabbs = aabbs.iter_mut().collect::<Vec<_>>();
let mut tree = broccoli::new(&mut ref_aabbs);
tree.find_colliding_pairs_mut(|a, b| {
*a += 1;
*b += 1;
});
assert_eq!(aabbs[0].inner, 1);
assert_eq!(aabbs[1].inner, 0);
assert_eq!(aabbs[2].inner, 1);
}