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.