comparison DEPENDENCIES/generic/include/boost/geometry/strategies/intersection.hpp @ 101:c530137014c0

Update Boost headers (1.58.0)
author Chris Cannam
date Mon, 07 Sep 2015 11:12:49 +0100
parents 2665513ce2d3
children
comparison
equal deleted inserted replaced
100:793467b5e61c 101:c530137014c0
18 18
19 #include <boost/geometry/strategies/side.hpp> 19 #include <boost/geometry/strategies/side.hpp>
20 #include <boost/geometry/strategies/intersection_result.hpp> 20 #include <boost/geometry/strategies/intersection_result.hpp>
21 21
22 #include <boost/geometry/strategies/cartesian/cart_intersect.hpp> 22 #include <boost/geometry/strategies/cartesian/cart_intersect.hpp>
23 #include <boost/geometry/policies/robustness/segment_ratio_type.hpp>
23 24
24 25
25 namespace boost { namespace geometry 26 namespace boost { namespace geometry
26 { 27 {
27 28
28 29
29 // The intersection strategy is a "compound strategy",
30 // it contains a segment-intersection-strategy
31 // and a side-strategy
32 /*! 30 /*!
33 \tparam CalculationType \tparam_calculation 31 \brief "compound strategy", containing a segment-intersection-strategy
34 */ 32 and a side-strategy
33 */
35 template 34 template
36 < 35 <
37 typename Tag, 36 typename Tag,
38 typename Geometry1, 37 typename Geometry1,
39 typename Geometry2, 38 typename Geometry2,
40 typename IntersectionPoint, 39 typename IntersectionPoint,
40 typename RobustPolicy,
41 typename CalculationType = void 41 typename CalculationType = void
42 > 42 >
43 struct strategy_intersection 43 struct strategy_intersection
44 { 44 {
45 private : 45 private :
46 // for development BOOST_STATIC_ASSERT((! boost::is_same<RobustPolicy, void>::type::value));
47
46 typedef typename geometry::point_type<Geometry1>::type point1_type; 48 typedef typename geometry::point_type<Geometry1>::type point1_type;
47 typedef typename geometry::point_type<Geometry2>::type point2_type; 49 typedef typename geometry::point_type<Geometry2>::type point2_type;
48 typedef typename model::referring_segment<point1_type const> segment1_type; 50 typedef typename model::referring_segment<point1_type const> segment1_type;
49 typedef typename model::referring_segment<point2_type const> segment2_type; 51 typedef typename model::referring_segment<point2_type const> segment2_type;
50 52
51 typedef segment_intersection_points 53 typedef segment_intersection_points
54 <
55 IntersectionPoint,
56 typename geometry::segment_ratio_type
52 < 57 <
53 IntersectionPoint 58 IntersectionPoint, RobustPolicy
54 > ip_type; 59 >::type
60 > ip_type;
55 61
56 public: 62 public:
57 typedef strategy::intersection::relate_cartesian_segments 63 typedef strategy::intersection::relate_cartesian_segments
58 < 64 <
59 policies::relate::segments_tupled 65 policies::relate::segments_tupled
60 < 66 <
61 policies::relate::segments_intersection_points 67 policies::relate::segments_intersection_points
62 < 68 <
63 segment1_type, 69 ip_type
64 segment2_type,
65 ip_type,
66 CalculationType
67 > , 70 > ,
68 policies::relate::segments_direction 71 policies::relate::segments_direction
69 <
70 segment1_type,
71 segment2_type,
72 CalculationType
73 >,
74 CalculationType
75 >, 72 >,
76 CalculationType 73 CalculationType
77 > segment_intersection_strategy_type; 74 > segment_intersection_strategy_type;
78 75
79 typedef typename strategy::side::services::default_strategy 76 typedef typename strategy::side::services::default_strategy
80 < 77 <
81 Tag, 78 Tag,
82 CalculationType 79 CalculationType
83 >::type side_strategy_type; 80 >::type side_strategy_type;
81
82 typedef RobustPolicy rescale_policy_type;
84 }; 83 };
85 84
86 85 // Version for box_box intersection or other detail calls not needing a strategy
86 struct strategy_intersection_empty {};
87 87
88 88
89 }} // namespace boost::geometry 89 }} // namespace boost::geometry
90 90
91 91