10#if !defined(GEOGRAPHICLIB_GEODESICEXACT_HPP)
11#define GEOGRAPHICLIB_GEODESICEXACT_HPP 1
21 class GeodesicLineExact;
81 static const unsigned maxit1_ = 20;
83 real tiny_, tol0_, tol1_, tol2_, tolb_, xthresh_;
100 real _a, _f, _f1, _e2, _ep2, _n, _b, _c2, _etol2;
108 real cbet1,
real cbet2,
unsigned outmask,
123 real& domg12,
bool diffp,
real& dlam12)
const;
125 unsigned outmask,
real& s12,
131 real X, tX, tdX, sX, sX1, sXX1, asinhsX, _k2;
164 LATITUDE = 1U<<7 | CAP_NONE,
169 LONGITUDE = 1U<<8 | CAP_H,
176 AZIMUTH = 1U<<9 | CAP_NONE,
181 DISTANCE = 1U<<10 | CAP_E,
188 STANDARD = LATITUDE | LONGITUDE | AZIMUTH | DISTANCE,
194 DISTANCE_IN = 1U<<11 | CAP_E,
199 REDUCEDLENGTH = 1U<<12 | CAP_D,
204 GEODESICSCALE = 1U<<13 | CAP_D,
209 AREA = 1U<<14 | CAP_C4,
214 LONG_UNROLL = 1U<<15,
220 ALL = OUT_ALL| CAP_ALL,
277 real& lat2, real& lon2, real& azi2,
278 real& m12, real& M12, real& M21, real& S12)
281 return GenDirect(lat1, lon1, azi1,
false, s12,
282 LATITUDE | LONGITUDE | AZIMUTH |
283 REDUCEDLENGTH | GEODESICSCALE | AREA,
284 lat2, lon2, azi2, t, m12, M12, M21, S12);
291 real& lat2, real& lon2)
294 return GenDirect(lat1, lon1, azi1,
false, s12,
295 LATITUDE | LONGITUDE,
296 lat2, lon2, t, t, t, t, t, t);
303 real& lat2, real& lon2, real& azi2)
306 return GenDirect(lat1, lon1, azi1,
false, s12,
307 LATITUDE | LONGITUDE | AZIMUTH,
308 lat2, lon2, azi2, t, t, t, t, t);
315 real& lat2, real& lon2, real& azi2, real& m12)
318 return GenDirect(lat1, lon1, azi1,
false, s12,
319 LATITUDE | LONGITUDE | AZIMUTH | REDUCEDLENGTH,
320 lat2, lon2, azi2, t, m12, t, t, t);
327 real& lat2, real& lon2, real& azi2,
328 real& M12, real& M21)
331 return GenDirect(lat1, lon1, azi1,
false, s12,
332 LATITUDE | LONGITUDE | AZIMUTH | GEODESICSCALE,
333 lat2, lon2, azi2, t, t, M12, M21, t);
340 real& lat2, real& lon2, real& azi2,
341 real& m12, real& M12, real& M21)
344 return GenDirect(lat1, lon1, azi1,
false, s12,
345 LATITUDE | LONGITUDE | AZIMUTH |
346 REDUCEDLENGTH | GEODESICSCALE,
347 lat2, lon2, azi2, t, m12, M12, M21, t);
388 void ArcDirect(real lat1, real lon1, real azi1, real a12,
389 real& lat2, real& lon2, real& azi2, real& s12,
390 real& m12, real& M12, real& M21, real& S12)
392 GenDirect(lat1, lon1, azi1,
true, a12,
393 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE |
394 REDUCEDLENGTH | GEODESICSCALE | AREA,
395 lat2, lon2, azi2, s12, m12, M12, M21, S12);
401 void ArcDirect(real lat1, real lon1, real azi1, real a12,
402 real& lat2, real& lon2)
const {
404 GenDirect(lat1, lon1, azi1,
true, a12,
405 LATITUDE | LONGITUDE,
406 lat2, lon2, t, t, t, t, t, t);
412 void ArcDirect(real lat1, real lon1, real azi1, real a12,
413 real& lat2, real& lon2, real& azi2)
const {
415 GenDirect(lat1, lon1, azi1,
true, a12,
416 LATITUDE | LONGITUDE | AZIMUTH,
417 lat2, lon2, azi2, t, t, t, t, t);
423 void ArcDirect(real lat1, real lon1, real azi1, real a12,
424 real& lat2, real& lon2, real& azi2, real& s12)
427 GenDirect(lat1, lon1, azi1,
true, a12,
428 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE,
429 lat2, lon2, azi2, s12, t, t, t, t);
435 void ArcDirect(real lat1, real lon1, real azi1, real a12,
436 real& lat2, real& lon2, real& azi2,
437 real& s12, real& m12)
const {
439 GenDirect(lat1, lon1, azi1,
true, a12,
440 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE |
442 lat2, lon2, azi2, s12, m12, t, t, t);
448 void ArcDirect(real lat1, real lon1, real azi1, real a12,
449 real& lat2, real& lon2, real& azi2, real& s12,
450 real& M12, real& M21)
const {
452 GenDirect(lat1, lon1, azi1,
true, a12,
453 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE |
455 lat2, lon2, azi2, s12, t, M12, M21, 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& M12, real& M21)
const {
465 GenDirect(lat1, lon1, azi1,
true, a12,
466 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE |
467 REDUCEDLENGTH | GEODESICSCALE,
468 lat2, lon2, azi2, s12, m12, M12, M21, t);
527 bool arcmode,
real s12_a12,
unsigned outmask,
568 real& s12, real& azi1, real& azi2, real& m12,
569 real& M12, real& M21, real& S12)
const {
570 return GenInverse(lat1, lon1, lat2, lon2,
572 REDUCEDLENGTH | GEODESICSCALE | AREA,
573 s12, azi1, azi2, m12, M12, M21, S12);
582 return GenInverse(lat1, lon1, lat2, lon2,
584 s12, t, t, t, t, t, t);
591 real& azi1, real& azi2)
const {
593 return GenInverse(lat1, lon1, lat2, lon2,
595 t, azi1, azi2, t, t, t, t);
602 real& s12, real& azi1, real& azi2)
605 return GenInverse(lat1, lon1, lat2, lon2,
607 s12, azi1, azi2, t, t, t, t);
614 real& s12, real& azi1, real& azi2, real& m12)
617 return GenInverse(lat1, lon1, lat2, lon2,
618 DISTANCE | AZIMUTH | REDUCEDLENGTH,
619 s12, azi1, azi2, m12, t, t, t);
626 real& s12, real& azi1, real& azi2,
627 real& M12, real& M21)
const {
629 return GenInverse(lat1, lon1, lat2, lon2,
630 DISTANCE | AZIMUTH | GEODESICSCALE,
631 s12, azi1, azi2, t, M12, M21, t);
638 real& s12, real& azi1, real& azi2, real& m12,
639 real& M12, real& M21)
const {
641 return GenInverse(lat1, lon1, lat2, lon2,
643 REDUCEDLENGTH | GEODESICSCALE,
644 s12, azi1, azi2, m12, M12, M21, t);
732 unsigned caps = ALL)
const;
753 unsigned caps = ALL)
const;
776 unsigned caps = ALL)
const;
799 unsigned caps = ALL)
const;
825 bool arcmode,
real s12_a12,
826 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
Math::real Direct(real lat1, real lon1, real azi1, real s12, real &lat2, real &lon2, real &azi2, real &m12) const
Math::real EllipsoidArea() 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
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
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
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
Math::real Inverse(real lat1, real lon1, real lat2, real lon2, real &s12, real &azi1, real &azi2, real &M12, real &M21) const
Namespace for GeographicLib.