mirror of
https://github.com/hannobraun/Fornjot
synced 2025-05-06 19:08:28 +00:00
Prepare for follow-on change
This commit is contained in:
parent
0df0d129b2
commit
27f3dc5b51
@ -41,35 +41,34 @@ pub fn triangulate(face: &Face) -> TriMesh {
|
||||
}
|
||||
|
||||
fn points(face: &Face) -> Vec<TriangulationPoint> {
|
||||
face.half_edges
|
||||
.iter()
|
||||
.map(|half_edge| {
|
||||
// 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(half_edge.start.point);
|
||||
let points_from_half_edges = face.half_edges.iter().map(|half_edge| {
|
||||
// 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(half_edge.start.point);
|
||||
|
||||
TriangulationPoint {
|
||||
point_surface,
|
||||
point_vertex: half_edge.start.point,
|
||||
}
|
||||
})
|
||||
.collect()
|
||||
TriangulationPoint {
|
||||
point_surface,
|
||||
point_vertex: half_edge.start.point,
|
||||
}
|
||||
});
|
||||
|
||||
points_from_half_edges.collect()
|
||||
}
|
||||
|
||||
fn triangles(points: &[TriangulationPoint]) -> Vec<[TriangulationPoint; 3]> {
|
||||
|
Loading…
Reference in New Issue
Block a user