Triangulator¶
-
class
Triangulator
¶ This class can triangulate a convex or concave polygon, even one with holes. It is adapted from an algorithm published as:
Narkhede A. and Manocha D., Fast polygon triangulation algorithm based on Seidel’s Algorithm, UNC-CH, 1994.
http://www.cs.unc.edu/~dm/CODE/GEM/chapter.html
It works strictly on 2-d points. See
Triangulator3
for 3-d points.Inheritance diagram
-
Triangulator
(void)¶
-
Triangulator
(Triangulator const&) = default¶
-
void
add_hole_vertex
(int index)¶ Adds the next consecutive vertex of the current hole. This vertex should index into the vertex pool established by repeated calls to
add_vertex()
.The vertices may be listed in either clockwise or counterclockwise order. Vertices should not be repeated.
-
void
add_polygon_vertex
(int index)¶ Adds the next consecutive vertex of the polygon. This vertex should index into the vertex pool established by repeated calls to
add_vertex()
.The vertices may be listed in either clockwise or counterclockwise order. Vertices should not be repeated. In particular, do not repeat the first vertex at the end.
-
int
add_vertex
(double x, double y)¶ Adds a new vertex to the vertex pool. Returns the vertex index number.
-
void
begin_hole
(void)¶ Finishes the previous hole, if any, and prepares to add a new hole.
-
void
clear
(void)¶ Removes all vertices and polygon specifications from the Triangulator, and prepares it to start over.
-
void
clear_polygon
(void)¶ Removes the current polygon definition (and its set of holes), but does not clear the vertex pool.
-
int
get_num_triangles
(void) const¶ Returns the number of triangles generated by the previous call to
triangulate()
.
-
int
get_num_vertices
(void) const¶ Returns the number of vertices in the pool. Note that the Triangulator might append new vertices, in addition to those added by the user, if any of the polygon is self-intersecting, or if any of the holes intersect some part of the polygon edges.
-
int
get_triangle_v0
(int n) const¶ Returns vertex 0 of the nth triangle generated by the previous call to
triangulate()
.This is a zero-based index into the vertices added by repeated calls to
add_vertex()
.
-
int
get_triangle_v1
(int n) const¶ Returns vertex 1 of the nth triangle generated by the previous call to
triangulate()
.This is a zero-based index into the vertices added by repeated calls to
add_vertex()
.
-
int
get_triangle_v2
(int n) const¶ Returns vertex 2 of the nth triangle generated by the previous call to
triangulate()
.This is a zero-based index into the vertices added by repeated calls to
add_vertex()
.
-
bool
is_left_winding
(void) const¶ Returns true if the polygon vertices are listed in counterclockwise order, or false if they appear to be listed in clockwise order.
-
void
triangulate
(void)¶ Does the work of triangulating the specified polygon. After this call, you may retrieve the new triangles one at a time by iterating through get_triangle_v0/1/2().
-