Skip to main content

triangulate_shell_face

Function triangulate_shell_face 

Source
pub fn triangulate_shell_face(
    rings: &Rings,
) -> GeomResult<ShellFaceTriangulation>
Expand description

Triangulate a planar face of a closed shell (#283): as triangulate_with under PinchPolicy::Accept, and no triangle edge lies on a seam.

A seam (a keyhole’s segment run both ways, #270) may be a triangle edge there. Inside one face that is only a diagonal, but other faces of a shell can run along the same segment (a rim’s two end faces at its cut), and with the seam a triangle edge too that segment has four triangle uses. So where a seam would be a triangle edge, the two triangles on it are replaced: by the other diagonal of their quadrilateral where it is strictly convex, otherwise by four triangles around a SteinerPoint strictly inside it and off the seam’s line (a thin rim seamed at its corner has no triangulation on its own vertices without the seam). A Steiner point adds no area and moves no boundary: the result is certified against the cover it replaces, the same boundary edges with every triangle strictly counter-clockwise.

Rings without a seam triangulate exactly as under PinchPolicy::Accept, with no Steiner point.

§Errors

As triangulate_with under PinchPolicy::Accept; Degenerate naming the seam when no Steiner point can be placed off it, and when the result fails its certificate.