...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
The Linestring Concept describes the requirements for a linestring type. All algorithms in Boost.Geometry will check any geometry arguments against the concept requirements.
A linestring is a Curve with linear interpolation between Points. (OGC Simple Feature Specification).
The Linestring Concept is defined as following:
traits::tag
defining linestring_tag
as type
range_value<...>::type
must fulfill the Point
Concept
Besides the Concepts, which are checks on compile-time, there are rules that valid linestrings must fulfill. Most algorithms work on any linestring, so either self-crossing or not. However, for correct results using the overlay algorithms (intersection and difference algorithms in combination with a polygon) self-intersections can disturb the process and result in incorrect results.
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 Linestring |