From 769cad1e3e9c7c0160a916e5d80b8b0f9da9431b Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Fri, 21 Mar 2025 21:35:21 +0100 Subject: [PATCH] Fix assumption that is no longer valid --- crates/fj-core/src/algorithms/triangulate/delaunay.rs | 7 ++++++- crates/fj-math/src/triangle.rs | 11 ++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/crates/fj-core/src/algorithms/triangulate/delaunay.rs b/crates/fj-core/src/algorithms/triangulate/delaunay.rs index c6e0f1b7f..e0e2ce7ae 100644 --- a/crates/fj-core/src/algorithms/triangulate/delaunay.rs +++ b/crates/fj-core/src/algorithms/triangulate/delaunay.rs @@ -61,7 +61,12 @@ pub fn triangulate( Handedness::LeftHanded => Winding::Cw, Handedness::RightHanded => Winding::Ccw, }; - let actual_winding = triangle.winding(); + let Some(actual_winding) = triangle.winding() else { + unreachable!( + "Just asserted that the triangle is valid. Therefore it must \ + have a winding." + ); + }; let triangle = if actual_winding == required_winding { [v0, v1, v2] diff --git a/crates/fj-math/src/triangle.rs b/crates/fj-math/src/triangle.rs index 1cea0b0ff..cced92bb1 100644 --- a/crates/fj-math/src/triangle.rs +++ b/crates/fj-math/src/triangle.rs @@ -69,7 +69,7 @@ impl Triangle { impl Triangle<2> { /// # Compute the winding of the triangle - pub fn winding(&self) -> Winding { + pub fn winding(&self) -> Option { let [pa, pb, pc] = self.points.map(|point| robust::Coord { x: point.u, y: point.v, @@ -77,16 +77,13 @@ impl Triangle<2> { let orient2d = robust::orient2d(pa, pb, pc); if orient2d < 0. { - return Winding::Cw; + return Some(Winding::Cw); } if orient2d > 0. { - return Winding::Ccw; + return Some(Winding::Ccw); } - unreachable!( - "Points don't form a triangle, but this was verified in the \ - constructor." - ) + None } }