diff options
Diffstat (limited to 'boost/geometry/strategies/intersection.hpp')
-rw-r--r-- | boost/geometry/strategies/intersection.hpp | 37 |
1 files changed, 18 insertions, 19 deletions
diff --git a/boost/geometry/strategies/intersection.hpp b/boost/geometry/strategies/intersection.hpp index fc628c0635..ef1b676fda 100644 --- a/boost/geometry/strategies/intersection.hpp +++ b/boost/geometry/strategies/intersection.hpp @@ -17,42 +17,47 @@ #include <boost/geometry/policies/relate/tupled.hpp> #include <boost/geometry/strategies/side.hpp> -#include <boost/geometry/strategies/intersection.hpp> #include <boost/geometry/strategies/intersection_result.hpp> #include <boost/geometry/strategies/cartesian/cart_intersect.hpp> +#include <boost/geometry/policies/robustness/segment_ratio_type.hpp> namespace boost { namespace geometry { -// The intersection strategy is a "compound strategy", -// it contains a segment-intersection-strategy -// and a side-strategy /*! -\tparam CalculationType \tparam_calculation -*/ +\brief "compound strategy", containing a segment-intersection-strategy + and a side-strategy + */ template < typename Tag, typename Geometry1, typename Geometry2, typename IntersectionPoint, + typename RobustPolicy, typename CalculationType = void > struct strategy_intersection { private : + // for development BOOST_STATIC_ASSERT((! boost::is_same<RobustPolicy, void>::type::value)); + typedef typename geometry::point_type<Geometry1>::type point1_type; typedef typename geometry::point_type<Geometry2>::type point2_type; typedef typename model::referring_segment<point1_type const> segment1_type; typedef typename model::referring_segment<point2_type const> segment2_type; typedef segment_intersection_points + < + IntersectionPoint, + typename geometry::segment_ratio_type < - IntersectionPoint - > ip_type; + IntersectionPoint, RobustPolicy + >::type + > ip_type; public: typedef strategy::intersection::relate_cartesian_segments @@ -61,18 +66,9 @@ public: < policies::relate::segments_intersection_points < - segment1_type, - segment2_type, - ip_type, - CalculationType + ip_type > , policies::relate::segments_direction - < - segment1_type, - segment2_type, - CalculationType - >, - CalculationType >, CalculationType > segment_intersection_strategy_type; @@ -82,9 +78,12 @@ public: Tag, CalculationType >::type side_strategy_type; -}; + typedef RobustPolicy rescale_policy_type; +}; +// Version for box_box intersection or other detail calls not needing a strategy +struct strategy_intersection_empty {}; }} // namespace boost::geometry |