]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/boost/geometry/strategies/intersection_strategies.hpp
import quincy beta 17.1.0
[ceph.git] / ceph / src / boost / boost / geometry / strategies / intersection_strategies.hpp
1 // Boost.Geometry (aka GGL, Generic Geometry Library)
2
3 // Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
4
5 // This file was modified by Oracle on 2016-2020.
6 // Modifications copyright (c) 2016-2020, Oracle and/or its affiliates.
7 // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
8
9 // Use, modification and distribution is subject to the Boost Software License,
10 // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
11 // http://www.boost.org/LICENSE_1_0.txt)
12
13 #ifndef BOOST_GEOMETRY_STRATEGIES_INTERSECTION_HPP
14 #define BOOST_GEOMETRY_STRATEGIES_INTERSECTION_HPP
15
16
17 //#include <type_traits>
18
19 #include <boost/geometry/policies/relate/intersection_policy.hpp>
20 #include <boost/geometry/policies/robustness/segment_ratio_type.hpp>
21
22 #include <boost/geometry/strategies/intersection.hpp>
23 #include <boost/geometry/strategies/intersection_result.hpp>
24 #include <boost/geometry/strategies/side.hpp>
25
26 #include <boost/geometry/strategies/cartesian/intersection.hpp>
27 #include <boost/geometry/strategies/cartesian/side_by_triangle.hpp>
28 #include <boost/geometry/strategies/spherical/intersection.hpp>
29 #include <boost/geometry/strategies/spherical/ssf.hpp>
30
31
32 namespace boost { namespace geometry
33 {
34
35
36 /*!
37 \brief "compound strategy", containing a segment-intersection-strategy
38 and a side-strategy
39 */
40 template
41 <
42 typename Tag,
43 typename Geometry1,
44 typename Geometry2,
45 typename IntersectionPoint,
46 typename RobustPolicy,
47 typename CalculationType = void
48 >
49 struct intersection_strategies
50 {
51 private :
52 // for development BOOST_STATIC_ASSERT((! std::is_same<RobustPolicy, void>::type::value));
53
54 typedef segment_intersection_points
55 <
56 IntersectionPoint,
57 typename detail::segment_ratio_type
58 <
59 IntersectionPoint, RobustPolicy
60 >::type
61 > ip_type;
62
63 public:
64 typedef policies::relate::segments_intersection_policy
65 <
66 ip_type
67 > intersection_policy_type;
68
69 typedef typename strategy::intersection::services::default_strategy
70 <
71 Tag,
72 CalculationType
73 >::type segment_intersection_strategy_type;
74
75 typedef typename strategy::side::services::default_strategy
76 <
77 Tag,
78 CalculationType
79 >::type side_strategy_type;
80
81 typedef RobustPolicy rescale_policy_type;
82 };
83
84
85 }} // namespace boost::geometry
86
87
88 #endif // BOOST_GEOMETRY_STRATEGIES_INTERSECTION_HPP