Warning, file /include/boost/geometry/srs/projections/proj/cc.hpp was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040 #ifndef BOOST_GEOMETRY_PROJECTIONS_CC_HPP
0041 #define BOOST_GEOMETRY_PROJECTIONS_CC_HPP
0042
0043 #include <boost/geometry/util/math.hpp>
0044
0045 #include <boost/geometry/srs/projections/impl/base_static.hpp>
0046 #include <boost/geometry/srs/projections/impl/base_dynamic.hpp>
0047 #include <boost/geometry/srs/projections/impl/projects.hpp>
0048 #include <boost/geometry/srs/projections/impl/factory_entry.hpp>
0049
0050 namespace boost { namespace geometry
0051 {
0052
0053 namespace projections
0054 {
0055 #ifndef DOXYGEN_NO_DETAIL
0056 namespace detail { namespace cc
0057 {
0058
0059 static const double epsilon10 = 1.e-10;
0060
0061 template <typename T, typename Parameters>
0062 struct base_cc_spheroid
0063 {
0064
0065
0066 inline void fwd(Parameters const& , T const& lp_lon, T const& lp_lat, T& xy_x, T& xy_y) const
0067 {
0068 static const T half_pi = detail::half_pi<T>();
0069
0070 if (fabs(fabs(lp_lat) - half_pi) <= epsilon10) {
0071 BOOST_THROW_EXCEPTION( projection_exception(error_tolerance_condition) );
0072 }
0073 xy_x = lp_lon;
0074 xy_y = tan(lp_lat);
0075 }
0076
0077
0078
0079 inline void inv(Parameters const& , T const& xy_x, T const& xy_y, T& lp_lon, T& lp_lat) const
0080 {
0081 lp_lat = atan(xy_y);
0082 lp_lon = xy_x;
0083 }
0084
0085 static inline std::string get_name()
0086 {
0087 return "cc_spheroid";
0088 }
0089
0090 };
0091
0092
0093 template <typename Parameters>
0094 inline void setup_cc(Parameters& par)
0095 {
0096 par.es = 0.;
0097 }
0098
0099 }}
0100 #endif
0101
0102
0103
0104
0105
0106
0107
0108
0109
0110
0111
0112
0113
0114 template <typename T, typename Parameters>
0115 struct cc_spheroid : public detail::cc::base_cc_spheroid<T, Parameters>
0116 {
0117 template <typename Params>
0118 inline cc_spheroid(Params const& , Parameters & par)
0119 {
0120 detail::cc::setup_cc(par);
0121 }
0122 };
0123
0124 #ifndef DOXYGEN_NO_DETAIL
0125 namespace detail
0126 {
0127
0128
0129 BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION_FI(srs::spar::proj_cc, cc_spheroid)
0130
0131
0132 BOOST_GEOMETRY_PROJECTIONS_DETAIL_FACTORY_ENTRY_FI(cc_entry, cc_spheroid)
0133
0134 BOOST_GEOMETRY_PROJECTIONS_DETAIL_FACTORY_INIT_BEGIN(cc_init)
0135 {
0136 BOOST_GEOMETRY_PROJECTIONS_DETAIL_FACTORY_INIT_ENTRY(cc, cc_entry);
0137 }
0138
0139 }
0140 #endif
0141
0142 }
0143
0144 }}
0145
0146 #endif
0147