Skip to main content

irox_geometry/
quadtree.rs

1// SPDX-License-Identifier: MIT
2// Copyright 2025 IROX Contributors
3//
4
5use crate::Point;
6use irox_tools::FloatIsh;
7
8#[derive(Debug, Default, Clone, PartialEq)]
9pub enum QuadtreeNode<T: FloatIsh, V: Clone> {
10    #[default]
11    Empty,
12    Split {
13        center: Point<T>,
14        element_count: usize,
15        nw: Box<QuadtreeNode<T, V>>,
16        ne: Box<QuadtreeNode<T, V>>,
17        sw: Box<QuadtreeNode<T, V>>,
18        se: Box<QuadtreeNode<T, V>>,
19    },
20    Values {
21        values: Vec<V>,
22    },
23}
24#[derive(Debug, Default, Clone, PartialEq)]
25pub struct Quadtree<T: FloatIsh, V: Clone> {
26    root: QuadtreeNode<T, V>,
27}