diff options
Diffstat (limited to 'boost/geometry/algorithms/detail/relate/point_point.hpp')
-rw-r--r-- | boost/geometry/algorithms/detail/relate/point_point.hpp | 39 |
1 files changed, 21 insertions, 18 deletions
diff --git a/boost/geometry/algorithms/detail/relate/point_point.hpp b/boost/geometry/algorithms/detail/relate/point_point.hpp index e623868b92..e55be08225 100644 --- a/boost/geometry/algorithms/detail/relate/point_point.hpp +++ b/boost/geometry/algorithms/detail/relate/point_point.hpp @@ -17,9 +17,12 @@ #include <algorithm> #include <vector> +#include <boost/range/empty.hpp> + #include <boost/geometry/algorithms/detail/equals/point_point.hpp> #include <boost/geometry/algorithms/detail/within/point_in_geometry.hpp> #include <boost/geometry/algorithms/detail/relate/less.hpp> +#include <boost/geometry/algorithms/detail/relate/result.hpp> namespace boost { namespace geometry { @@ -38,15 +41,15 @@ struct point_point bool equal = detail::equals::equals_point_point(point1, point2); if ( equal ) { - set<interior, interior, '0'>(result); + relate::set<interior, interior, '0'>(result); } else { - set<interior, exterior, '0'>(result); - set<exterior, interior, '0'>(result); + relate::set<interior, exterior, '0'>(result); + relate::set<exterior, interior, '0'>(result); } - set<exterior, exterior, result_dimension<Point1>::value>(result); + relate::set<exterior, exterior, result_dimension<Point1>::value>(result); } }; @@ -89,7 +92,7 @@ struct point_multipoint if ( boost::empty(multi_point) ) { // TODO: throw on empty input? - set<interior, exterior, '0', Transpose>(result); + relate::set<interior, exterior, '0', Transpose>(result); return; } @@ -97,20 +100,20 @@ struct point_multipoint if ( rel.first ) // some point of MP is equal to P { - set<interior, interior, '0', Transpose>(result); + relate::set<interior, interior, '0', Transpose>(result); if ( rel.second ) // a point of MP was found outside P { - set<exterior, interior, '0', Transpose>(result); + relate::set<exterior, interior, '0', Transpose>(result); } } else { - set<interior, exterior, '0', Transpose>(result); - set<exterior, interior, '0', Transpose>(result); + relate::set<interior, exterior, '0', Transpose>(result); + relate::set<exterior, interior, '0', Transpose>(result); } - set<exterior, exterior, result_dimension<Point>::value, Transpose>(result); + relate::set<exterior, exterior, result_dimension<Point>::value, Transpose>(result); } }; @@ -144,12 +147,12 @@ struct multipoint_multipoint } else if ( empty1 ) { - set<exterior, interior, '0'>(result); + relate::set<exterior, interior, '0'>(result); return; } else if ( empty2 ) { - set<interior, exterior, '0'>(result); + relate::set<interior, exterior, '0'>(result); return; } } @@ -165,7 +168,7 @@ struct multipoint_multipoint // NlogN + MlogN bool all_handled = search<false>(multi_point1, multi_point2, result); - if ( all_handled || result.interrupt ) + if ( BOOST_GEOMETRY_CONDITION(all_handled || result.interrupt) ) return; // MlogM + NlogM @@ -212,23 +215,23 @@ struct multipoint_multipoint // TODO: if I/I is set for one MPt, this won't be changed when the other one in analysed // so if e.g. only I/I must be analysed we musn't check the other MPt - set<interior, interior, '0', Transpose>(result); + relate::set<interior, interior, '0', Transpose>(result); if ( found_outside ) // some point of MP2 was found outside of MP1 { - set<exterior, interior, '0', Transpose>(result); + relate::set<exterior, interior, '0', Transpose>(result); } } else { - set<interior, exterior, '0', Transpose>(result); - set<exterior, interior, '0', Transpose>(result); + relate::set<interior, exterior, '0', Transpose>(result); + relate::set<exterior, interior, '0', Transpose>(result); // if no point is intersecting the other MPt then we musn't analyse the reversed case all_handled = true; } - set<exterior, exterior, result_dimension<point_type>::value, Transpose>(result); + relate::set<exterior, exterior, result_dimension<point_type>::value, Transpose>(result); return all_handled; } |