diff options
Diffstat (limited to 'boost/geometry/strategies/spherical/side_by_cross_track.hpp')
-rw-r--r-- | boost/geometry/strategies/spherical/side_by_cross_track.hpp | 42 |
1 files changed, 18 insertions, 24 deletions
diff --git a/boost/geometry/strategies/spherical/side_by_cross_track.hpp b/boost/geometry/strategies/spherical/side_by_cross_track.hpp index c4c5f24eeb..3f7be05557 100644 --- a/boost/geometry/strategies/spherical/side_by_cross_track.hpp +++ b/boost/geometry/strategies/spherical/side_by_cross_track.hpp @@ -2,6 +2,11 @@ // Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. +// This file was modified by Oracle on 2014. +// Modifications copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -9,18 +14,15 @@ #ifndef BOOST_GEOMETRY_STRATEGIES_SPHERICAL_SIDE_BY_CROSS_TRACK_HPP #define BOOST_GEOMETRY_STRATEGIES_SPHERICAL_SIDE_BY_CROSS_TRACK_HPP -#include <boost/mpl/if.hpp> -#include <boost/type_traits.hpp> -#include <boost/core/ignore_unused.hpp> - #include <boost/geometry/core/cs.hpp> #include <boost/geometry/core/access.hpp> #include <boost/geometry/core/radian_access.hpp> #include <boost/geometry/algorithms/detail/course.hpp> -#include <boost/geometry/util/select_coordinate_type.hpp> #include <boost/geometry/util/math.hpp> +#include <boost/geometry/util/promote_floating_point.hpp> +#include <boost/geometry/util/select_calculation_type.hpp> #include <boost/geometry/strategies/side.hpp> //#include <boost/geometry/strategies/concepts/side_concept.hpp> @@ -47,27 +49,19 @@ public : template <typename P1, typename P2, typename P> static inline int apply(P1 const& p1, P2 const& p2, P const& p) { - typedef typename boost::mpl::if_c + typedef typename promote_floating_point < - boost::is_void<CalculationType>::type::value, - typename select_most_precise + typename select_calculation_type_alt < - typename select_most_precise - < - typename coordinate_type<P1>::type, - typename coordinate_type<P2>::type - >::type, - typename coordinate_type<P>::type - >::type, - CalculationType - >::type coordinate_type; - - boost::ignore_unused<coordinate_type>(); - - double d1 = 0.001; // m_strategy.apply(sp1, p); - double crs_AD = geometry::detail::course<double>(p1, p); - double crs_AB = geometry::detail::course<double>(p1, p2); - double XTD = asin(sin(d1) * sin(crs_AD - crs_AB)); + CalculationType, + P1, P2, P + >::type + >::type calc_t; + + calc_t d1 = 0.001; // m_strategy.apply(sp1, p); + calc_t crs_AD = geometry::detail::course<calc_t>(p1, p); + calc_t crs_AB = geometry::detail::course<calc_t>(p1, p2); + calc_t XTD = asin(sin(d1) * sin(crs_AD - crs_AB)); return math::equals(XTD, 0) ? 0 : XTD < 0 ? 1 : -1; } |