sphereql_layout/types.rs
1use sphereql_core::SphericalPoint;
2
3/// An item paired with its assigned position on S².
4#[derive(Debug, Clone)]
5pub struct LayoutEntry<T> {
6 pub item: T,
7 pub position: SphericalPoint,
8}
9
10/// The output of a layout computation.
11#[derive(Debug, Clone)]
12pub struct LayoutResult<T> {
13 pub entries: Vec<LayoutEntry<T>>,
14 pub quality: LayoutQuality,
15}
16
17/// Quality metrics for a layout.
18#[derive(Debug, Clone, Copy, Default)]
19pub struct LayoutQuality {
20 /// How evenly spread points are (0.0 = clustered, 1.0 = maximally dispersed).
21 pub dispersion_score: f64,
22 /// Fraction of point pairs closer than the overlap threshold (0.0 = none, 1.0 = all).
23 pub overlap_score: f64,
24 /// Silhouette coefficient for cluster quality (-1.0 to 1.0, higher = better separated).
25 pub silhouette_score: f64,
26}