1#[derive(Debug, Clone, thiserror::Error)]
7pub enum RemeshError {
8 #[error(
10 "foldover detected at face {face}: normal rotation {angle_rad:.4} rad exceeds threshold {threshold:.4} rad"
11 )]
12 Foldover {
13 face: usize,
14 angle_rad: f64,
15 threshold: f64,
16 },
17
18 #[error("edge {edge} is a boundary edge (only one adjacent face)")]
20 BoundaryEdge { edge: usize },
21
22 #[error(
24 "edge {edge} already satisfies Delaunay criterion (opposite angle sum = {angle_sum:.4} rad)"
25 )]
26 AlreadyDelaunay { edge: usize, angle_sum: f64 },
27
28 #[error("index out of bounds: {index} >= {len}")]
30 IndexOutOfBounds { index: usize, len: usize },
31
32 #[error("edge {edge} has {count} adjacent faces, need exactly 2")]
34 NotInteriorEdge { edge: usize, count: usize },
35
36 #[error("geodesic computation failed: {reason}")]
38 GeodesicFailed { reason: String },
39
40 #[error("invalid input: {0}")]
42 InvalidInput(String),
43}