Inline redundant variable

This commit is contained in:
Hanno Braun 2025-04-03 13:30:23 +02:00
parent e4c5f5aaf3
commit e93b583e40

View File

@ -41,34 +41,36 @@ pub fn triangulate(face: &Face) -> TriMesh {
}
fn points_from_half_edges(face: &Face) -> Vec<TriangulationPoint> {
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]> {