GARS.hpp
Go to the documentation of this file.
1 
10 #if !defined(GEOGRAPHICLIB_GARS_HPP)
11 #define GEOGRAPHICLIB_GARS_HPP 1
12 
14 
15 #if defined(_MSC_VER)
16 // Squelch warnings about dll vs string
17 # pragma warning (push)
18 # pragma warning (disable: 4251)
19 #endif
20 
21 namespace GeographicLib {
22 
39  private:
40  typedef Math::real real;
41  static const char* const digits_;
42  static const char* const letters_;
43  enum {
44  lonorig_ = -180, // Origin for longitude
45  latorig_ = -90, // Origin for latitude
46  baselon_ = 10, // Base for longitude tiles
47  baselat_ = 24, // Base for latitude tiles
48  lonlen_ = 3,
49  latlen_ = 2,
50  baselen_ = lonlen_ + latlen_,
51  mult1_ = 2, // base precision = 1/2 degree
52  mult2_ = 2, // 6th char gives 2x more precision
53  mult3_ = 3, // 7th char gives 3x more precision
54  m_ = mult1_ * mult2_ * mult3_,
55  maxprec_ = 2,
56  maxlen_ = baselen_ + maxprec_,
57  };
58  GARS(); // Disable constructor
59 
60  public:
61 
80  static void Forward(real lat, real lon, int prec, std::string& gars);
81 
102  static void Reverse(const std::string& gars, real& lat, real& lon,
103  int& prec, bool centerp = true);
104 
113  static Math::real Resolution(int prec) {
114  return 1/real(prec <= 0 ? mult1_ : (prec == 1 ? mult1_ * mult2_ :
115  mult1_ * mult2_ * mult3_));
116  }
117 
127  static int Precision(real res) {
128  using std::abs; res = abs(res);
129  for (int prec = 0; prec < maxprec_; ++prec)
130  if (Resolution(prec) <= res)
131  return prec;
132  return maxprec_;
133  }
134 
135  };
136 
137 } // namespace GeographicLib
138 
139 #if defined(_MSC_VER)
140 # pragma warning (pop)
141 #endif
142 
143 #endif // GEOGRAPHICLIB_GARS_HPP
#define GEOGRAPHICLIB_EXPORT
Definition: Constants.hpp:91
float real
Definition: datatypes.h:10
static const double lat
Conversions for the Global Area Reference System (GARS)
Definition: GARS.hpp:38
static Math::real Resolution(int prec)
Definition: GARS.hpp:113
cout<< "Here is the matrix m:"<< endl<< m<< endl;Matrix< ptrdiff_t, 3, 1 > res
Namespace for GeographicLib.
static const char *const letters_
Definition: GARS.hpp:42
static const char *const digits_
Definition: GARS.hpp:41
Math::real real
Definition: GARS.hpp:40
Header for GeographicLib::Constants class.
static const double lon
#define abs(x)
Definition: datatypes.h:17
static int Precision(real res)
Definition: GARS.hpp:127


gtsam
Author(s):
autogenerated on Tue Jul 4 2023 02:34:15