10#if !defined(GEOGRAPHICLIB_GEODESICEXACT_HPP)
11#define GEOGRAPHICLIB_GEODESICEXACT_HPP 1
21 class GeodesicLineExact;
88 static const unsigned maxit1_ = 20;
90 real tiny_, tol0_, tol1_, tol2_, tolb_, xthresh_;
107 real _a, _f, _f1, _e2, _ep2, _n, _b, _c2, _etol2;
115 real cbet1,
real cbet2,
unsigned outmask,
130 real& domg12,
bool diffp,
real& dlam12)
const;
132 unsigned outmask,
real& s12,
138 real X, tX, tdX, sX, sX1, sXX1, asinhsX, _k2;
171 LATITUDE = 1U<<7 | CAP_NONE,
176 LONGITUDE = 1U<<8 | CAP_H,
183 AZIMUTH = 1U<<9 | CAP_NONE,
188 DISTANCE = 1U<<10 | CAP_E,
195 STANDARD = LATITUDE | LONGITUDE | AZIMUTH | DISTANCE,
201 DISTANCE_IN = 1U<<11 | CAP_E,
206 REDUCEDLENGTH = 1U<<12 | CAP_D,
211 GEODESICSCALE = 1U<<13 | CAP_D,
216 AREA = 1U<<14 | CAP_C4,
221 LONG_UNROLL = 1U<<15,
227 ALL = OUT_ALL| CAP_ALL,
284 real& lat2, real& lon2, real& azi2,
285 real& m12, real& M12, real& M21, real& S12)
288 return GenDirect(lat1, lon1, azi1,
false, s12,
289 LATITUDE | LONGITUDE | AZIMUTH |
290 REDUCEDLENGTH | GEODESICSCALE | AREA,
291 lat2, lon2, azi2, t, m12, M12, M21, S12);
298 real& lat2, real& lon2)
301 return GenDirect(lat1, lon1, azi1,
false, s12,
302 LATITUDE | LONGITUDE,
303 lat2, lon2, t, t, t, t, t, t);
310 real& lat2, real& lon2, real& azi2)
313 return GenDirect(lat1, lon1, azi1,
false, s12,
314 LATITUDE | LONGITUDE | AZIMUTH,
315 lat2, lon2, azi2, t, t, t, t, t);
322 real& lat2, real& lon2, real& azi2, real& m12)
325 return GenDirect(lat1, lon1, azi1,
false, s12,
326 LATITUDE | LONGITUDE | AZIMUTH | REDUCEDLENGTH,
327 lat2, lon2, azi2, t, m12, t, t, t);
334 real& lat2, real& lon2, real& azi2,
335 real& M12, real& M21)
338 return GenDirect(lat1, lon1, azi1,
false, s12,
339 LATITUDE | LONGITUDE | AZIMUTH | GEODESICSCALE,
340 lat2, lon2, azi2, t, t, M12, M21, t);
347 real& lat2, real& lon2, real& azi2,
348 real& m12, real& M12, real& M21)
351 return GenDirect(lat1, lon1, azi1,
false, s12,
352 LATITUDE | LONGITUDE | AZIMUTH |
353 REDUCEDLENGTH | GEODESICSCALE,
354 lat2, lon2, azi2, t, m12, M12, M21, t);
395 void ArcDirect(real lat1, real lon1, real azi1, real a12,
396 real& lat2, real& lon2, real& azi2, real& s12,
397 real& m12, real& M12, real& M21, real& S12)
399 GenDirect(lat1, lon1, azi1,
true, a12,
400 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE |
401 REDUCEDLENGTH | GEODESICSCALE | AREA,
402 lat2, lon2, azi2, s12, m12, M12, M21, S12);
408 void ArcDirect(real lat1, real lon1, real azi1, real a12,
409 real& lat2, real& lon2)
const {
411 GenDirect(lat1, lon1, azi1,
true, a12,
412 LATITUDE | LONGITUDE,
413 lat2, lon2, t, t, t, t, t, t);
419 void ArcDirect(real lat1, real lon1, real azi1, real a12,
420 real& lat2, real& lon2, real& azi2)
const {
422 GenDirect(lat1, lon1, azi1,
true, a12,
423 LATITUDE | LONGITUDE | AZIMUTH,
424 lat2, lon2, azi2, t, t, t, t, t);
430 void ArcDirect(real lat1, real lon1, real azi1, real a12,
431 real& lat2, real& lon2, real& azi2, real& s12)
434 GenDirect(lat1, lon1, azi1,
true, a12,
435 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE,
436 lat2, lon2, azi2, s12, t, t, t, t);
442 void ArcDirect(real lat1, real lon1, real azi1, real a12,
443 real& lat2, real& lon2, real& azi2,
444 real& s12, real& m12)
const {
446 GenDirect(lat1, lon1, azi1,
true, a12,
447 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE |
449 lat2, lon2, azi2, s12, m12, t, t, t);
455 void ArcDirect(real lat1, real lon1, real azi1, real a12,
456 real& lat2, real& lon2, real& azi2, real& s12,
457 real& M12, real& M21)
const {
459 GenDirect(lat1, lon1, azi1,
true, a12,
460 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE |
462 lat2, lon2, azi2, s12, t, M12, M21, t);
468 void ArcDirect(real lat1, real lon1, real azi1, real a12,
469 real& lat2, real& lon2, real& azi2, real& s12,
470 real& m12, real& M12, real& M21)
const {
472 GenDirect(lat1, lon1, azi1,
true, a12,
473 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE |
474 REDUCEDLENGTH | GEODESICSCALE,
475 lat2, lon2, azi2, s12, m12, M12, M21, t);
534 bool arcmode,
real s12_a12,
unsigned outmask,
575 real& s12, real& azi1, real& azi2, real& m12,
576 real& M12, real& M21, real& S12)
const {
577 return GenInverse(lat1, lon1, lat2, lon2,
579 REDUCEDLENGTH | GEODESICSCALE | AREA,
580 s12, azi1, azi2, m12, M12, M21, S12);
589 return GenInverse(lat1, lon1, lat2, lon2,
591 s12, t, t, t, t, t, t);
598 real& azi1, real& azi2)
const {
600 return GenInverse(lat1, lon1, lat2, lon2,
602 t, azi1, azi2, t, t, t, t);
609 real& s12, real& azi1, real& azi2)
612 return GenInverse(lat1, lon1, lat2, lon2,
614 s12, azi1, azi2, t, t, t, t);
621 real& s12, real& azi1, real& azi2, real& m12)
624 return GenInverse(lat1, lon1, lat2, lon2,
625 DISTANCE | AZIMUTH | REDUCEDLENGTH,
626 s12, azi1, azi2, m12, t, t, t);
633 real& s12, real& azi1, real& azi2,
634 real& M12, real& M21)
const {
636 return GenInverse(lat1, lon1, lat2, lon2,
637 DISTANCE | AZIMUTH | GEODESICSCALE,
638 s12, azi1, azi2, t, M12, M21, t);
645 real& s12, real& azi1, real& azi2, real& m12,
646 real& M12, real& M21)
const {
648 return GenInverse(lat1, lon1, lat2, lon2,
650 REDUCEDLENGTH | GEODESICSCALE,
651 s12, azi1, azi2, m12, M12, M21, t);
739 unsigned caps = ALL)
const;
760 unsigned caps = ALL)
const;
783 unsigned caps = ALL)
const;
806 unsigned caps = ALL)
const;
832 bool arcmode,
real s12_a12,
833 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.