blob: 0cf21b7235222134d2e2d8fb7e9536f4ff99e63a [file] [log] [blame]
[/============================================================================
Boost.Geometry (aka GGL, Generic Geometry Library)
Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
Copyright (c) 2009-2012 Barend Gehrels, Amsterdam, the Netherlands.
Copyright (c) 2009-2012 Bruno Lalande, Paris, France.
Use, modification and distribution is subject to the Boost Software License,
Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
=============================================================================/]
[section:concept_linestring Linestring Concept]
[heading Description]
[concept Linestring..linestring]
A linestring is ['a Curve with linear interpolation between Points].
(__ogc_sf__).
[heading Concept Definition]
The Linestring Concept is defined as following:
* there must be a specialization of `traits::tag` defining `linestring_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 [link geometry.reference.concepts.concept_point Point Concept]
[heading Rules]
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.
[heading Available Models]
* [link geometry.reference.models.model_linestring model::linestring]
* a std::vector (requires registration)
* a std::deque (requires registration)
[see_boost_range_sample Linestring]
[endsect]