3 // Copyright (c) 2017, Oracle and/or its affiliates.
4 // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
6 // Use, modification and distribution is subject to the Boost Software License,
7 // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
8 // http://www.boost.org/LICENSE_1_0.txt)
10 #ifndef BOOST_GEOMETRY_STRATEGIES_GEOGRAPHIC_PARAMETERS_HPP
11 #define BOOST_GEOMETRY_STRATEGIES_GEOGRAPHIC_PARAMETERS_HPP
14 #include <boost/geometry/formulas/andoyer_inverse.hpp>
15 #include <boost/geometry/formulas/thomas_direct.hpp>
16 #include <boost/geometry/formulas/thomas_inverse.hpp>
17 #include <boost/geometry/formulas/vincenty_direct.hpp>
18 #include <boost/geometry/formulas/vincenty_inverse.hpp>
20 #include <boost/mpl/assert.hpp>
21 #include <boost/mpl/integral_c.hpp>
24 namespace boost { namespace geometry { namespace strategy
29 //TODO: this should be replaced by an andoyer direct formula
33 bool EnableCoordinates = true,
34 bool EnableReverseAzimuth = false,
35 bool EnableReducedLength = false,
36 bool EnableGeodesicScale = false
39 : formula::thomas_direct
41 CT, EnableCoordinates, EnableReverseAzimuth,
42 EnableReducedLength, EnableGeodesicScale
51 bool EnableReverseAzimuth = false,
52 bool EnableReducedLength = false,
53 bool EnableGeodesicScale = false
56 : formula::andoyer_inverse
59 EnableAzimuth, EnableReverseAzimuth,
60 EnableReducedLength, EnableGeodesicScale
70 bool EnableCoordinates = true,
71 bool EnableReverseAzimuth = false,
72 bool EnableReducedLength = false,
73 bool EnableGeodesicScale = false
76 : formula::thomas_direct
78 CT, EnableCoordinates, EnableReverseAzimuth,
79 EnableReducedLength, EnableGeodesicScale
88 bool EnableReverseAzimuth = false,
89 bool EnableReducedLength = false,
90 bool EnableGeodesicScale = false
93 : formula::thomas_inverse
96 EnableAzimuth, EnableReverseAzimuth,
97 EnableReducedLength, EnableGeodesicScale
107 bool EnableCoordinates = true,
108 bool EnableReverseAzimuth = false,
109 bool EnableReducedLength = false,
110 bool EnableGeodesicScale = false
113 : formula::vincenty_direct
115 CT, EnableCoordinates, EnableReverseAzimuth,
116 EnableReducedLength, EnableGeodesicScale
125 bool EnableReverseAzimuth = false,
126 bool EnableReducedLength = false,
127 bool EnableGeodesicScale = false
130 : formula::vincenty_inverse
133 EnableAzimuth, EnableReverseAzimuth,
134 EnableReducedLength, EnableGeodesicScale
140 template <typename FormulaPolicy>
145 false, NOT_IMPLEMENTED_FOR_THIS_TYPE
146 , (types<FormulaPolicy>)
151 struct default_order<andoyer>
152 : boost::mpl::integral_c<unsigned int, 1>
156 struct default_order<thomas>
157 : boost::mpl::integral_c<unsigned int, 2>
161 struct default_order<vincenty>
162 : boost::mpl::integral_c<unsigned int, 4>
165 }}} // namespace boost::geometry::strategy
168 #endif // BOOST_GEOMETRY_STRATEGIES_GEOGRAPHIC_PARAMETERS_HPP