mirror of
https://github.com/boostorg/geometry.git
synced 2026-02-10 23:42:12 +00:00
[disjoint] add specializations for linestring/multilinestring, multilinestring/multilinestring; fixed specialization for polygon/multilinestring
This commit is contained in:
@@ -37,6 +37,7 @@
|
||||
#include <boost/geometry/algorithms/detail/disjoint.hpp>
|
||||
#include <boost/geometry/algorithms/detail/overlay/get_turns.hpp>
|
||||
#include <boost/geometry/algorithms/detail/point_on_border.hpp>
|
||||
#include <boost/geometry/multi/algorithms/detail/point_on_border.hpp>
|
||||
#include <boost/geometry/algorithms/point_on_surface.hpp>
|
||||
#include <boost/geometry/algorithms/detail/for_each_range.hpp>
|
||||
|
||||
@@ -433,13 +434,25 @@ struct disjoint<Linestring, Ring, DimensionCount, linestring_tag, ring_tag, Reve
|
||||
: public detail::disjoint::disjoint_linear_areal<Linestring, Ring>
|
||||
{};
|
||||
|
||||
// move the following specializations to multi/algorithms/disjoint.hpp?
|
||||
|
||||
template<typename MultiLinestring, typename Polygon, std::size_t DimensionCount, bool Reverse>
|
||||
struct disjoint<MultiLinestring, Polygon, DimensionCount, multi_linestring_tag, polygon_tag, Reverse>
|
||||
: public detail::disjoint::disjoint_linear_areal<MultiLinestring, Polygon>
|
||||
template<typename Linestring, typename MultiLinestring, std::size_t DimensionCount, bool Reverse>
|
||||
struct disjoint<Linestring, MultiLinestring, DimensionCount, linestring_tag, multi_linestring_tag, Reverse>
|
||||
: public detail::disjoint::disjoint_linear<Linestring, MultiLinestring>
|
||||
{};
|
||||
|
||||
template<typename Polygon, typename MultiLinestring, std::size_t DimensionCount, bool Reverse>
|
||||
struct disjoint<Polygon, MultiLinestring, DimensionCount, polygon_tag, multi_linestring_tag, Reverse>
|
||||
{
|
||||
static inline bool apply(Polygon const& polygon,
|
||||
MultiLinestring const& multilinestring)
|
||||
{
|
||||
return detail::disjoint::disjoint_linear_areal
|
||||
<
|
||||
MultiLinestring,
|
||||
Polygon
|
||||
>::apply(multilinestring, polygon);
|
||||
}
|
||||
};
|
||||
|
||||
template<typename MultiLinestring, typename Ring, std::size_t DimensionCount, bool Reverse>
|
||||
struct disjoint<MultiLinestring, Ring, DimensionCount, multi_linestring_tag, ring_tag, Reverse>
|
||||
: public detail::disjoint::disjoint_linear_areal<MultiLinestring, Ring>
|
||||
@@ -455,6 +468,11 @@ struct disjoint<MultiLinestring, MultiPolygon, DimensionCount, multi_linestring_
|
||||
: public detail::disjoint::disjoint_linear_areal<MultiLinestring, MultiPolygon>
|
||||
{};
|
||||
|
||||
template<typename MultiLinestring1, typename MultiLinestring2, std::size_t DimensionCount, bool Reverse>
|
||||
struct disjoint<MultiLinestring1, MultiLinestring2, DimensionCount, multi_linestring_tag, multi_linestring_tag, Reverse>
|
||||
: public detail::disjoint::disjoint_linear<MultiLinestring1, MultiLinestring2>
|
||||
{};
|
||||
|
||||
template<typename Point, typename Linestring, std::size_t DimensionCount, bool Reverse>
|
||||
struct disjoint<Point, Linestring, DimensionCount, point_tag, linestring_tag, Reverse>
|
||||
: public detail::disjoint::disjoint_point_linear<Point, Linestring>
|
||||
|
||||
Reference in New Issue
Block a user