2 #include <boost/geometry/algorithms/intersects.hpp>
3 #include <boost/geometry/algorithms/length.hpp>
4 #include <boost/geometry/geometries/register/linestring.hpp>
5 #include <boost/geometry/geometries/register/segment.hpp>
35 using boost::geometry::intersects;
36 using boost::geometry::length;
37 using boost::geometry::overlaps;
38 using boost::geometry::touches;
40 template <
typename LineStringIterator>
41 double rangedLength(LineStringIterator start, LineStringIterator end);
54 template <
typename LineStringT>
55 std::vector<double>
lengthRatios(
const LineStringT& lineString);
66 template <
typename LineStringT>
82 template <
typename LineString3dT>
98 template <
typename LineString2dT>
110 template <
typename Po
int2dT>
111 double curvature2d(
const Point2dT&
p1,
const Point2dT&
p2,
const Point2dT& p3);
122 template <
typename Po
int2dT>
133 template <
typename LineString2dT>
148 template <
typename LineStringT>
162 template <
typename LineStringT>
166 template <
typename LineString3dT>
167 IfLS<LineString3dT, BoundingBox3d>
boundingBox3d(
const LineString3dT& lineString);
170 template <
typename LineString2dT>
171 IfLS<LineString2dT, BoundingBox2d>
boundingBox2d(
const LineString2dT& lineString);
181 template <typename LineString3dT, typename = std::enable_if_t<traits::is3D<LineString3dT>()>>
185 template <typename LineString2dT, typename = std::enable_if_t<traits::is2D<LineString2dT>()>>
197 template <
typename LineString2dT>
198 IfLS<LineString2dT, std::pair<BasicPoint2d, BasicPoint2d>>
projectedPoint2d(
const LineString2dT& l1,
199 const LineString2dT& l2);
207 template <
typename LineString3dT>
208 IfLS<LineString3dT, std::pair<BasicPoint3d, BasicPoint3d>>
projectedPoint3d(
const LineString3dT& l1,
209 const LineString3dT& l2);
218 template <
typename LineString3dT>
219 IfLS<LineString3dT, bool>
intersects3d(
const LineString3dT& linestring,
const LineString3dT& otherLinestring,
220 double heightTolerance = 3.);
240 template <
typename LineString1T,
typename LineString2T>
241 std::pair<LineString1T, LineString2T>
align(LineString1T left, LineString2T right);
248 template <
typename LineString2dT>
264 template <
typename LineString2dT>
278 template <
typename LineString2dT>