diff --git a/experiments/2024-12-09/src/geometry/sketch.rs b/experiments/2024-12-09/src/geometry/sketch.rs index eb888bc50..c5777a25e 100644 --- a/experiments/2024-12-09/src/geometry/sketch.rs +++ b/experiments/2024-12-09/src/geometry/sketch.rs @@ -1,3 +1,7 @@ +use std::collections::BTreeMap; + +use itertools::Itertools; + use crate::{ math::{Plane, Point}, object::Handle, @@ -20,6 +24,19 @@ impl Sketch { }) .collect::>(); + let mut internal_pairs = BTreeMap::new(); + + for (a, b) in vertices.iter().circular_tuple_windows() { + let mut pair = [a, b]; + pair.sort(); + + if let Some(internal) = internal_pairs.get_mut(&pair) { + *internal = true; + } else { + internal_pairs.insert(pair, false); + } + } + let half_edges = vertices .into_iter() .map(|start| Handle::new(HalfEdge { start }));