14 # pragma warning (disable: 4701)
17 namespace GeographicLib {
21 const Math::real Gnomonic::eps0_ = numeric_limits<real>::epsilon();
25 real& x, real& y, real& azi, real& rk)
28 _earth.GenInverse(lat0, lon0, lat, lon,
31 t, azi0, azi, m, M, t, t);
34 x = y = Math::NaN<real>();
37 azi0 *= Math::degree<real>();
44 real& lat, real& lon, real& azi, real& rk)
47 azi0 = atan2(x, y) / Math::degree<real>(),
49 s = _a * atan(rho/_a);
50 bool little = rho <= _a;
58 int count = numit_, trip = 0;
59 real lat1, lon1, azi1, M;
62 line.
Position(s, lat1, lon1, azi1, m, M, t);
67 real ds = little ? (m/M - rho) * M * M : (rho - M/m) * m * m;
70 if (!(abs(ds) >= eps_ * _a))
74 lat = lat1; lon = lon1; azi = azi1; rk = M;
76 lat = lon = azi = rk = Math::NaN<real>();
GeographicLib::Math::real real
void Reverse(real lat0, real lon0, real x, real y, real &lat, real &lon, real &azi, real &rk) const
Math::real Position(real s12, real &lat2, real &lon2, real &azi2, real &m12, real &M12, real &M21, real &S12) const
Header for GeographicLib::Gnomonic class.
void Forward(real lat0, real lon0, real lat, real lon, real &x, real &y, real &azi, real &rk) const