use crate::DType;
use numr::error::Result;
use numr::runtime::Runtime;
use numr::tensor::Tensor;
#[derive(Debug, Clone)]
pub struct SphericalVoronoi<R: Runtime<DType = DType>> {
pub points: Tensor<R>,
pub center: Tensor<R>,
pub radius: f64,
pub vertices: Tensor<R>,
pub regions_indices: Tensor<R>,
pub regions_indptr: Tensor<R>,
}
pub trait SphericalVoronoiAlgorithms<R: Runtime<DType = DType>> {
fn spherical_voronoi(
&self,
points: &Tensor<R>,
radius: f64,
center: Option<&Tensor<R>>,
) -> Result<SphericalVoronoi<R>>;
fn spherical_voronoi_sort_regions(
&self,
sv: &SphericalVoronoi<R>,
) -> Result<SphericalVoronoi<R>>;
fn spherical_voronoi_region_areas(&self, sv: &SphericalVoronoi<R>) -> Result<Tensor<R>>;
}