use crate::bounds::BoundingBox;
pub mod cell_2d;
pub mod cell_3d_faces;
pub trait Cell<const D: usize>: Send + Sync + Sized + Clone {
type Scratch: Default + Clone + Send;
fn new(id: usize, bounds: BoundingBox<D>) -> Self;
fn clip(
&mut self,
point: &[f64; D],
normal: &[f64; D],
neighbor_id: i32,
scratch: &mut Self::Scratch,
generator: Option<&[f64; D]>,
) -> (bool, f64);
fn max_radius_sq(&self, center: &[f64; D]) -> f64;
fn centroid(&self) -> [f64; D];
fn is_empty(&self) -> bool;
fn neighbors(&self) -> &[i32];
fn shared_vertices(&self, neighbor_a: i32, neighbor_b: i32) -> Vec<f64> {
let _ = neighbor_a;
let _ = neighbor_b;
Vec::new()
}
}