|
||||
File indexing completed on 2025-01-18 09:35:41
0001 // Boost.Geometry - gis-projections (based on PROJ4) 0002 0003 // Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. 0004 0005 // This file was modified by Oracle on 2017, 2018, 2019. 0006 // Modifications copyright (c) 2017-2019, Oracle and/or its affiliates. 0007 // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle. 0008 0009 // Use, modification and distribution is subject to the Boost Software License, 0010 // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at 0011 // http://www.boost.org/LICENSE_1_0.txt) 0012 0013 // This file is converted from PROJ4, http://trac.osgeo.org/proj 0014 // PROJ4 is originally written by Gerald Evenden (then of the USGS) 0015 // PROJ4 is maintained by Frank Warmerdam 0016 // PROJ4 is converted to Boost.Geometry by Barend Gehrels 0017 0018 // Last updated version of proj: 5.0.0 0019 0020 // Original copyright notice: 0021 0022 // Permission is hereby granted, free of charge, to any person obtaining a 0023 // copy of this software and associated documentation files (the "Software"), 0024 // to deal in the Software without restriction, including without limitation 0025 // the rights to use, copy, modify, merge, publish, distribute, sublicense, 0026 // and/or sell copies of the Software, and to permit persons to whom the 0027 // Software is furnished to do so, subject to the following conditions: 0028 0029 // The above copyright notice and this permission notice shall be included 0030 // in all copies or substantial portions of the Software. 0031 0032 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 0033 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 0034 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 0035 // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 0036 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 0037 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 0038 // DEALINGS IN THE SOFTWARE. 0039 0040 #ifndef BOOST_GEOMETRY_PROJECTIONS_GINS8_HPP 0041 #define BOOST_GEOMETRY_PROJECTIONS_GINS8_HPP 0042 0043 #include <boost/geometry/srs/projections/impl/base_static.hpp> 0044 #include <boost/geometry/srs/projections/impl/base_dynamic.hpp> 0045 #include <boost/geometry/srs/projections/impl/projects.hpp> 0046 #include <boost/geometry/srs/projections/impl/factory_entry.hpp> 0047 0048 namespace boost { namespace geometry 0049 { 0050 0051 namespace projections 0052 { 0053 #ifndef DOXYGEN_NO_DETAIL 0054 namespace detail { namespace gins8 0055 { 0056 0057 static const double Cl = 0.000952426; 0058 static const double Cp = 0.162388; 0059 //static const double C12 = 0.08333333333333333; 0060 0061 template <typename T> 0062 inline T C12() { return 0.083333333333333333333333333333333333; } 0063 0064 template <typename T, typename Parameters> 0065 struct base_gins8_spheroid 0066 { 0067 // FORWARD(s_forward) spheroid 0068 // Project coordinates from geographic (lon, lat) to cartesian (x, y) 0069 inline void fwd(Parameters const& , T const& lp_lon, T const& lp_lat, T& xy_x, T& xy_y) const 0070 { 0071 static const T C12 = gins8::C12<T>(); 0072 0073 T t = lp_lat * lp_lat; 0074 0075 xy_y = lp_lat * (1. + t * C12); 0076 xy_x = lp_lon * (1. - Cp * t); 0077 t = lp_lon * lp_lon; 0078 xy_x *= (0.87 - Cl * t * t); 0079 } 0080 0081 static inline std::string get_name() 0082 { 0083 return "gins8_spheroid"; 0084 } 0085 0086 }; 0087 0088 // Ginsburg VIII (TsNIIGAiK) 0089 template <typename Parameters> 0090 inline void setup_gins8(Parameters& par) 0091 { 0092 par.es = 0.; 0093 } 0094 0095 }} // namespace detail::gins8 0096 #endif // doxygen 0097 0098 /*! 0099 \brief Ginsburg VIII (TsNIIGAiK) projection 0100 \ingroup projections 0101 \tparam Geographic latlong point type 0102 \tparam Cartesian xy point type 0103 \tparam Parameters parameter type 0104 \par Projection characteristics 0105 - Pseudocylindrical 0106 - Spheroid 0107 - no inverse 0108 \par Example 0109 \image html ex_gins8.gif 0110 */ 0111 template <typename T, typename Parameters> 0112 struct gins8_spheroid : public detail::gins8::base_gins8_spheroid<T, Parameters> 0113 { 0114 template <typename Params> 0115 inline gins8_spheroid(Params const& , Parameters & par) 0116 { 0117 detail::gins8::setup_gins8(par); 0118 } 0119 }; 0120 0121 #ifndef DOXYGEN_NO_DETAIL 0122 namespace detail 0123 { 0124 0125 // Static projection 0126 BOOST_GEOMETRY_PROJECTIONS_DETAIL_STATIC_PROJECTION_F(srs::spar::proj_gins8, gins8_spheroid) 0127 0128 // Factory entry(s) 0129 BOOST_GEOMETRY_PROJECTIONS_DETAIL_FACTORY_ENTRY_F(gins8_entry, gins8_spheroid) 0130 0131 BOOST_GEOMETRY_PROJECTIONS_DETAIL_FACTORY_INIT_BEGIN(gins8_init) 0132 { 0133 BOOST_GEOMETRY_PROJECTIONS_DETAIL_FACTORY_INIT_ENTRY(gins8, gins8_entry); 0134 } 0135 0136 } // namespace detail 0137 #endif // doxygen 0138 0139 } // namespace projections 0140 0141 }} // namespace boost::geometry 0142 0143 #endif // BOOST_GEOMETRY_PROJECTIONS_GINS8_HPP 0144
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |