diff --git a/experiments/2025-03-18/src/extra/triangulate.rs b/experiments/2025-03-18/src/extra/triangulate.rs index 4a667f876..c6ae670c7 100644 --- a/experiments/2025-03-18/src/extra/triangulate.rs +++ b/experiments/2025-03-18/src/extra/triangulate.rs @@ -41,34 +41,36 @@ pub fn triangulate(face: &Face) -> TriMesh { } fn points_from_half_edges(face: &Face) -> Vec { - let points_from_half_edges = face.half_edges.iter().map(|half_edge| { - let point_global = half_edge.start.point; + face.half_edges + .iter() + .map(|half_edge| { + let point_global = half_edge.start.point; - // Here, we project a 3D point (from the vertex) into the face's - // surface, creating a 2D point. Through the surface, this 2D point has - // a position in 3D space. - // - // But this position isn't necessarily going to be the same as the - // position of the original 3D point, due to numerical inaccuracy. - // - // This doesn't matter. Neither does the fact, that other faces might - // share the same vertices and project them into their own surfaces, - // creating more redundancy. - // - // The reason that it doesn't, is that we're using the projected 2D - // points _only_ for this local triangulation. Once that tells us how - // the different 3D points must connect, we use the original 3D points - // to build those triangles. We never convert the 2D points back into - // 3D. - let point_surface = face.surface.geometry.project_point(point_global); + // Here, we project a 3D point (from the vertex) into the face's + // surface, creating a 2D point. Through the surface, this 2D point + // has a position in 3D space. + // + // But this position isn't necessarily going to be the same as the + // position of the original 3D point, due to numerical inaccuracy. + // + // This doesn't matter. Neither does the fact, that other faces + // might share the same vertices and project them into their own + // surfaces, creating more redundancy. + // + // The reason that it doesn't, is that we're using the projected 2D + // points _only_ for this local triangulation. Once that tells us + // how the different 3D points must connect, we use the original 3D + // points to build those triangles. We never convert the 2D points + // back into 3D. + let point_surface = + face.surface.geometry.project_point(point_global); - TriangulationPoint { - point_surface, - point_global, - } - }); - - points_from_half_edges.collect() + TriangulationPoint { + point_surface, + point_global, + } + }) + .collect() } fn triangles(points: &[TriangulationPoint]) -> Vec<[TriangulationPoint; 3]> {