comparison DEPENDENCIES/generic/include/boost/geometry/strategies/intersection.hpp @ 16:2665513ce2d3

Add boost headers
author Chris Cannam
date Tue, 05 Aug 2014 11:11:38 +0100
parents
children c530137014c0
comparison
equal deleted inserted replaced
15:663ca0da4350 16:2665513ce2d3
1 // Boost.Geometry (aka GGL, Generic Geometry Library)
2
3 // Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
4
5 // Use, modification and distribution is subject to the Boost Software License,
6 // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
7 // http://www.boost.org/LICENSE_1_0.txt)
8
9 #ifndef BOOST_GEOMETRY_STRATEGIES_INTERSECTION_HPP
10 #define BOOST_GEOMETRY_STRATEGIES_INTERSECTION_HPP
11
12 #include <boost/geometry/core/point_type.hpp>
13 #include <boost/geometry/geometries/segment.hpp>
14
15 #include <boost/geometry/policies/relate/intersection_points.hpp>
16 #include <boost/geometry/policies/relate/direction.hpp>
17 #include <boost/geometry/policies/relate/tupled.hpp>
18
19 #include <boost/geometry/strategies/side.hpp>
20 #include <boost/geometry/strategies/intersection_result.hpp>
21
22 #include <boost/geometry/strategies/cartesian/cart_intersect.hpp>
23
24
25 namespace boost { namespace geometry
26 {
27
28
29 // The intersection strategy is a "compound strategy",
30 // it contains a segment-intersection-strategy
31 // and a side-strategy
32 /*!
33 \tparam CalculationType \tparam_calculation
34 */
35 template
36 <
37 typename Tag,
38 typename Geometry1,
39 typename Geometry2,
40 typename IntersectionPoint,
41 typename CalculationType = void
42 >
43 struct strategy_intersection
44 {
45 private :
46 typedef typename geometry::point_type<Geometry1>::type point1_type;
47 typedef typename geometry::point_type<Geometry2>::type point2_type;
48 typedef typename model::referring_segment<point1_type const> segment1_type;
49 typedef typename model::referring_segment<point2_type const> segment2_type;
50
51 typedef segment_intersection_points
52 <
53 IntersectionPoint
54 > ip_type;
55
56 public:
57 typedef strategy::intersection::relate_cartesian_segments
58 <
59 policies::relate::segments_tupled
60 <
61 policies::relate::segments_intersection_points
62 <
63 segment1_type,
64 segment2_type,
65 ip_type,
66 CalculationType
67 > ,
68 policies::relate::segments_direction
69 <
70 segment1_type,
71 segment2_type,
72 CalculationType
73 >,
74 CalculationType
75 >,
76 CalculationType
77 > segment_intersection_strategy_type;
78
79 typedef typename strategy::side::services::default_strategy
80 <
81 Tag,
82 CalculationType
83 >::type side_strategy_type;
84 };
85
86
87
88
89 }} // namespace boost::geometry
90
91
92 #endif // BOOST_GEOMETRY_STRATEGIES_INTERSECTION_HPP