Skip to main content

conspire/geometry/grid/defeature/
mod.rs

1use std::num::NonZeroU32;
2#[cfg(test)]
3mod test;
4
5use crate::geometry::{
6    grid::{Pixels, Voxels},
7    ntree::{Octree, Quadtree},
8};
9use std::hash::Hash;
10
11impl<V: Copy + Eq + Hash> Pixels<V> {
12    pub fn defeature(self, minimum: usize) -> Result<Self, &'static str> {
13        let mut quadtree = Quadtree::<u16, NonZeroU32, V>::try_from(self)?;
14        quadtree.defeature(minimum);
15        Ok(Self::from(&quadtree))
16    }
17}
18
19impl<V: Copy + Eq + Hash> Voxels<V> {
20    pub fn defeature(self, minimum: usize) -> Result<Self, &'static str> {
21        let mut octree = Octree::<u16, NonZeroU32, V>::try_from(self)?;
22        octree.defeature(minimum);
23        Ok(Self::from(&octree))
24    }
25}