10#if !defined(GEOGRAPHICLIB_GEODESICEXACT_HPP)
11#define GEOGRAPHICLIB_GEODESICEXACT_HPP 1
96 static const unsigned maxit1_ = 20;
98 real tiny_, tol0_, tol1_, tol2_, tolb_, xthresh_;
100 static constexpr unsigned CAP_NONE = 0U;
101 static constexpr unsigned CAP_E = 1U<<0;
103 static constexpr unsigned CAP_D = 1U<<2;
104 static constexpr unsigned CAP_H = 1U<<3;
105 static constexpr unsigned CAP_C4 = 1U<<4;
106 static constexpr unsigned CAP_ALL = 0x1FU;
107 static constexpr unsigned CAP_MASK = CAP_ALL;
108 static constexpr unsigned OUT_ALL = 0x7F80U;
109 static constexpr unsigned OUT_MASK = 0xFF80U;
113 real _a, _f, _f1, _e2, _ep2, _n, _b, _c2, _etol2;
121 real cbet1,
real cbet2,
unsigned outmask,
136 real& domg12,
bool diffp,
real& dlam12)
const;
138 unsigned outmask,
real& s12,
144 real X, tX, tdX, sX, sX1, sXX1, asinhsX, _k2;
290 real& lat2, real& lon2, real& azi2,
291 real& m12, real& M12, real& M21, real& S12)
294 return GenDirect(lat1, lon1, azi1,
false, s12,
297 lat2, lon2, azi2, t, m12, M12, M21, S12);
304 real& lat2, real& lon2)
307 return GenDirect(lat1, lon1, azi1,
false, s12,
309 lat2, lon2, t, t, t, t, t, t);
316 real& lat2, real& lon2, real& azi2)
319 return GenDirect(lat1, lon1, azi1,
false, s12,
321 lat2, lon2, azi2, t, t, t, t, t);
328 real& lat2, real& lon2, real& azi2, real& m12)
331 return GenDirect(lat1, lon1, azi1,
false, s12,
333 lat2, lon2, azi2, t, m12, t, t, t);
340 real& lat2, real& lon2, real& azi2,
341 real& M12, real& M21)
344 return GenDirect(lat1, lon1, azi1,
false, s12,
346 lat2, lon2, azi2, t, t, M12, M21, t);
353 real& lat2, real& lon2, real& azi2,
354 real& m12, real& M12, real& M21)
357 return GenDirect(lat1, lon1, azi1,
false, s12,
360 lat2, lon2, azi2, t, m12, M12, M21, t);
401 void ArcDirect(real lat1, real lon1, real azi1, real a12,
402 real& lat2, real& lon2, real& azi2, real& s12,
403 real& m12, real& M12, real& M21, real& S12)
408 lat2, lon2, azi2, s12, m12, M12, M21, S12);
414 void ArcDirect(real lat1, real lon1, real azi1, real a12,
415 real& lat2, real& lon2)
const {
419 lat2, lon2, t, t, t, t, t, t);
425 void ArcDirect(real lat1, real lon1, real azi1, real a12,
426 real& lat2, real& lon2, real& azi2)
const {
430 lat2, lon2, azi2, t, t, t, t, t);
436 void ArcDirect(real lat1, real lon1, real azi1, real a12,
437 real& lat2, real& lon2, real& azi2, real& s12)
442 lat2, lon2, azi2, s12, t, t, t, t);
448 void ArcDirect(real lat1, real lon1, real azi1, real a12,
449 real& lat2, real& lon2, real& azi2,
450 real& s12, real& m12)
const {
455 lat2, lon2, azi2, s12, m12, t, t, t);
461 void ArcDirect(real lat1, real lon1, real azi1, real a12,
462 real& lat2, real& lon2, real& azi2, real& s12,
463 real& M12, real& M21)
const {
468 lat2, lon2, azi2, s12, t, M12, M21, t);
474 void ArcDirect(real lat1, real lon1, real azi1, real a12,
475 real& lat2, real& lon2, real& azi2, real& s12,
476 real& m12, real& M12, real& M21)
const {
481 lat2, lon2, azi2, s12, m12, M12, M21, t);
540 bool arcmode,
real s12_a12,
unsigned outmask,
581 real& s12, real& azi1, real& azi2, real& m12,
582 real& M12, real& M21, real& S12)
const {
583 return GenInverse(lat1, lon1, lat2, lon2,
586 s12, azi1, azi2, m12, M12, M21, S12);
595 return GenInverse(lat1, lon1, lat2, lon2,
597 s12, t, t, t, t, t, t);
604 real& azi1, real& azi2)
const {
606 return GenInverse(lat1, lon1, lat2, lon2,
608 t, azi1, azi2, t, t, t, t);
615 real& s12, real& azi1, real& azi2)
618 return GenInverse(lat1, lon1, lat2, lon2,
620 s12, azi1, azi2, t, t, t, t);
627 real& s12, real& azi1, real& azi2, real& m12)
630 return GenInverse(lat1, lon1, lat2, lon2,
632 s12, azi1, azi2, m12, t, t, t);
639 real& s12, real& azi1, real& azi2,
640 real& M12, real& M21)
const {
642 return GenInverse(lat1, lon1, lat2, lon2,
644 s12, azi1, azi2, t, M12, M21, t);
651 real& s12, real& azi1, real& azi2, real& m12,
652 real& M12, real& M21)
const {
654 return GenInverse(lat1, lon1, lat2, lon2,
657 s12, azi1, azi2, m12, M12, M21, t);
750 unsigned caps =
ALL)
const;
771 unsigned caps =
ALL)
const;
794 unsigned caps =
ALL)
const;
817 unsigned caps =
ALL)
const;
843 bool arcmode, real s12_a12,
844 unsigned caps =
ALL)
const;
Header for GeographicLib::Constants class.
#define GEOGRAPHICLIB_EXPORT
Header for GeographicLib::DST class.
Header for GeographicLib::EllipticFunction class.
GeographicLib::Math::real real
Discrete sine transforms.
Elliptic integrals and functions.
Exact geodesic calculations.
Math::real Direct(real lat1, real lon1, real azi1, real s12, real &lat2, real &lon2, real &azi2, real &m12, real &M12, real &M21) const
void ArcDirect(real lat1, real lon1, real azi1, real a12, real &lat2, real &lon2, real &azi2, real &s12, real &M12, real &M21) const
GeodesicLineExact InverseLine(real lat1, real lon1, real lat2, real lon2, unsigned caps=ALL) const
Math::real Direct(real lat1, real lon1, real azi1, real s12, real &lat2, real &lon2, real &azi2, real &m12) const
Math::real EllipsoidArea() const
GeodesicLineExact GenDirectLine(real lat1, real lon1, real azi1, bool arcmode, real s12_a12, unsigned caps=ALL) const
GeodesicLineExact DirectLine(real lat1, real lon1, real azi1, real s12, unsigned caps=ALL) const
Math::real Flattening() const
Math::real Inverse(real lat1, real lon1, real lat2, real lon2, real &s12, real &azi1, real &azi2, real &m12, real &M12, real &M21, real &S12) const
void ArcDirect(real lat1, real lon1, real azi1, real a12, real &lat2, real &lon2, real &azi2, real &s12) const
void ArcDirect(real lat1, real lon1, real azi1, real a12, real &lat2, real &lon2, real &azi2, real &s12, real &m12, real &M12, real &M21) const
Math::real GenDirect(real lat1, real lon1, real azi1, bool arcmode, real s12_a12, unsigned outmask, real &lat2, real &lon2, real &azi2, real &s12, real &m12, real &M12, real &M21, real &S12) const
void ArcDirect(real lat1, real lon1, real azi1, real a12, real &lat2, real &lon2, real &azi2, real &s12, real &m12, real &M12, real &M21, real &S12) const
Math::real Inverse(real lat1, real lon1, real lat2, real lon2, real &s12) const
friend class GeodesicLineExact
Math::real Inverse(real lat1, real lon1, real lat2, real lon2, real &s12, real &azi1, real &azi2, real &m12) const
Math::real Inverse(real lat1, real lon1, real lat2, real lon2, real &s12, real &azi1, real &azi2, real &m12, real &M12, real &M21) const
Math::real Direct(real lat1, real lon1, real azi1, real s12, real &lat2, real &lon2, real &azi2, real &M12, real &M21) const
Math::real Direct(real lat1, real lon1, real azi1, real s12, real &lat2, real &lon2, real &azi2) const
Math::real Inverse(real lat1, real lon1, real lat2, real lon2, real &azi1, real &azi2) const
void ArcDirect(real lat1, real lon1, real azi1, real a12, real &lat2, real &lon2, real &azi2) const
void ArcDirect(real lat1, real lon1, real azi1, real a12, real &lat2, real &lon2) const
Math::real Direct(real lat1, real lon1, real azi1, real s12, real &lat2, real &lon2, real &azi2, real &m12, real &M12, real &M21, real &S12) const
Math::real EquatorialRadius() const
GeodesicLineExact Line(real lat1, real lon1, real azi1, unsigned caps=ALL) const
Math::real Direct(real lat1, real lon1, real azi1, real s12, real &lat2, real &lon2) const
void ArcDirect(real lat1, real lon1, real azi1, real a12, real &lat2, real &lon2, real &azi2, real &s12, real &m12) const
Math::real Inverse(real lat1, real lon1, real lat2, real lon2, real &s12, real &azi1, real &azi2) const
GeodesicLineExact LineClass
Math::real Inverse(real lat1, real lon1, real lat2, real lon2, real &s12, real &azi1, real &azi2, real &M12, real &M21) const
GeodesicLineExact ArcDirectLine(real lat1, real lon1, real azi1, real a12, unsigned caps=ALL) const
Namespace for GeographicLib.