| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210 | // Boost.Geometry// Copyright (c) 2017-2020, 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)#ifndef BOOST_GEOMETRY_STRATEGIES_GEOGRAPHIC_PARAMETERS_HPP#define BOOST_GEOMETRY_STRATEGIES_GEOGRAPHIC_PARAMETERS_HPP#include <type_traits>#include <boost/geometry/core/static_assert.hpp>#include <boost/geometry/formulas/andoyer_inverse.hpp>#include <boost/geometry/formulas/thomas_direct.hpp>#include <boost/geometry/formulas/thomas_inverse.hpp>#include <boost/geometry/formulas/vincenty_direct.hpp>#include <boost/geometry/formulas/vincenty_inverse.hpp>#include <boost/geometry/formulas/karney_direct.hpp>#include <boost/geometry/formulas/karney_inverse.hpp>namespace boost { namespace geometry { namespace strategy{struct andoyer{    template    <        typename CT,        bool EnableCoordinates = true,        bool EnableReverseAzimuth = false,        bool EnableReducedLength = false,        bool EnableGeodesicScale = false    >    struct direct            : formula::thomas_direct              <                  CT, false,                  EnableCoordinates, EnableReverseAzimuth,                  EnableReducedLength, EnableGeodesicScale              >    {};    template    <        typename CT,        bool EnableDistance,        bool EnableAzimuth,        bool EnableReverseAzimuth = false,        bool EnableReducedLength = false,        bool EnableGeodesicScale = false    >    struct inverse        : formula::andoyer_inverse            <                CT, EnableDistance,                EnableAzimuth, EnableReverseAzimuth,                EnableReducedLength, EnableGeodesicScale            >    {};};struct thomas{    template    <        typename CT,        bool EnableCoordinates = true,        bool EnableReverseAzimuth = false,        bool EnableReducedLength = false,        bool EnableGeodesicScale = false    >    struct direct            : formula::thomas_direct              <                  CT, true,                  EnableCoordinates, EnableReverseAzimuth,                  EnableReducedLength, EnableGeodesicScale              >    {};    template    <        typename CT,        bool EnableDistance,        bool EnableAzimuth,        bool EnableReverseAzimuth = false,        bool EnableReducedLength = false,        bool EnableGeodesicScale = false    >    struct inverse        : formula::thomas_inverse            <                CT, EnableDistance,                EnableAzimuth, EnableReverseAzimuth,                EnableReducedLength, EnableGeodesicScale            >    {};};struct vincenty{    template    <        typename CT,        bool EnableCoordinates = true,        bool EnableReverseAzimuth = false,        bool EnableReducedLength = false,        bool EnableGeodesicScale = false    >    struct direct            : formula::vincenty_direct              <                  CT, EnableCoordinates, EnableReverseAzimuth,                  EnableReducedLength, EnableGeodesicScale              >    {};    template    <        typename CT,        bool EnableDistance,        bool EnableAzimuth,        bool EnableReverseAzimuth = false,        bool EnableReducedLength = false,        bool EnableGeodesicScale = false    >    struct inverse        : formula::vincenty_inverse            <                CT, EnableDistance,                EnableAzimuth, EnableReverseAzimuth,                EnableReducedLength, EnableGeodesicScale            >    {};};struct karney{    template    <        typename CT,        bool EnableCoordinates = true,        bool EnableReverseAzimuth = false,        bool EnableReducedLength = false,        bool EnableGeodesicScale = false    >    struct direct            : formula::karney_direct              <                  CT, EnableCoordinates, EnableReverseAzimuth,                  EnableReducedLength, EnableGeodesicScale              >    {};    template    <        typename CT,        bool EnableDistance,        bool EnableAzimuth,        bool EnableReverseAzimuth = false,        bool EnableReducedLength = false,        bool EnableGeodesicScale = false    >    struct inverse        : formula::karney_inverse            <                CT, EnableDistance,                EnableAzimuth, EnableReverseAzimuth,                EnableReducedLength, EnableGeodesicScale            >    {};};template <typename FormulaPolicy>struct default_order{    BOOST_GEOMETRY_STATIC_ASSERT_FALSE(        "Not implemented for this type.",        FormulaPolicy);};template<>struct default_order<andoyer>    : std::integral_constant<unsigned int, 1>{};template<>struct default_order<thomas>    : std::integral_constant<unsigned int, 2>{};template<>struct default_order<vincenty>    : std::integral_constant<unsigned int, 4>{};template<>struct default_order<karney>    : std::integral_constant<unsigned int, 8>{};}}} // namespace boost::geometry::strategy#endif // BOOST_GEOMETRY_STRATEGIES_GEOGRAPHIC_PARAMETERS_HPP
 |