...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
The Polygon Concept describes the requirements for a polygon type. All algorithms in Boost.Geometry will check any geometry arguments against the concept requirements.
A polygon is A polygon is a planar surface defined by one exterior boundary and zero or more interior boundaries. (opengeospatial).
So the definition of a Boost.Geometry polygon differs a bit from e.g. Wiki, where a polygon does not have holes. A polygon of Boost.Geometry is a polygon with or without holes. (A polygon without holes is a helper geometry within Boost.Geometry, and referred to as a ring.)
The Polygon Concept is defined as following:
traits::tag
defining polygon_tag
as type
traits::ring_type
defining the type of its exterior ring and interior rings as type
ring_type
must fulfill the Ring
Concept
traits::interior_type
defining the type of the collection of its interior rings as type;
this collection itself must fulfill a Boost.Range Random Access Range
Concept
traits::exterior_ring
with two functions named get
,
returning the exterior ring, one being const, the other being non const
traits::interior_rings
with two functions named get
,
returning the interior rings, one being const, the other being non
const
#include
boost/geometry/geometries/adapted/boost_polygon/polygon.hpp>
)