Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. — Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Ring Concept
PrevUpHomeNext
Description

The Ring Concept describes the requirements for a ring type. All algorithms in Boost.Geometry will check any geometry arguments against the concept requirements.

[Note] Note

Also called linear ring, but we explicitly refer to a filled feature here

Concept Definition

The Ring Concept is defined as following:

  • there must be a specialization of traits::tag defining ring_tag as type
  • it must behave like a Boost.Range Random Access Range
  • The type defined by the metafunction range_value<...>::type must fulfill the Point Concept
  • there might be a specialization of traits::point_order defining the order or orientation of its points, clockwise or counterclockwise
  • there might be a specialization of traits::closure defining the closure, open or closed
Rules

Besides the Concepts, which are checks on compile-time, there are rules that valid rings must fulfill. See the Polygon Concept for more information on the rules a polygon (and also a ring) must fulfill.

Available Models
  • ring
  • a Boost.Polygon polygon_data (requires #include boost/geometry/geometries/adapted/boost_polygon/ring.hpp>)
  • a std::vector (requires #include boost/geometry/geometries/adapted/std_as_ring.hpp>)
  • a std::deque (requires #include boost/geometry/geometries/adapted/std_as_ring.hpp>)
[Note] Note

See also the sample in the Boost.Range documentation showing how a type can be adapted to a Boost.Range to fulfill the concept of a Ring


PrevUpHomeNext