CGAL 5.4.5 - 2D Polygons
|
A polygon is a closed chain of edges. Several algorithms are available for polygons. For some of those algorithms, it is necessary that the polygon is simple. A polygon is simple if edges don't intersect, except consecutive edges, which intersect in their common vertex.
The following algorithms are available:
All those operations take two forward iterators as parameters in order to describe the polygon. These parameters have a point type as value type.
The type Polygon_2
can be used to represent polygons. Polygons are dynamic. Vertices can be modified, inserted and erased. They provide the algorithms described above as member functions. Moreover, they provide ways of iterating over the vertices and edges.
The Polygon_2
class is a wrapper around a container of points, but little more. Especially, computed values are not cached. That is, when the Polygon_2::is_simple()
member function is called twice or more, the result is computed each time anew.
The following example creates a polygon and illustrates the usage of some member functions.
File Polygon/Polygon.cpp
The following example creates a polygon and illustrates the usage of some global functions that operate on sequences of points.
File Polygon/polygon_algorithms.cpp
Sometimes it is useful to run a 2D algorithm on 3D data. Polygons may be contours of a 3D object, where the contours are organized in parallel slices, generated by segmentation of image data from a scanner.
In order to avoid an explicit projection on the xy
plane, one can use the traits class Projection_traits_xy_3
which is part of the 2D and 3D Linear Geometric Kernel.
File Polygon/projected_polygon.cpp
A polygon can be visualized by calling the CGAL::draw<P>() function as shown in the following example. This function opens a new window showing the given polygon. A call to this function is blocking, that is the program continues as soon as the user closes the window (a version exists for polygon with holes, cf. CGAL::draw<PH>() ).
This function requires CGAL_Qt5
, and is only available if the macro CGAL_USE_BASIC_VIEWER
is defined. Linking with the cmake target CGAL::CGAL_Basic_viewer
will link with CGAL_Qt5
and add the definition CGAL_USE_BASIC_VIEWER
.