10 #if !defined(GEOGRAPHICLIB_GEODESICEXACT_HPP)
11 #define GEOGRAPHICLIB_GEODESICEXACT_HPP 1
16 #if !defined(GEOGRAPHICLIB_GEODESICEXACT_ORDER)
20 # define GEOGRAPHICLIB_GEODESICEXACT_ORDER 30
25 class GeodesicLineExact;
85 static const int nC4x_ = (nC4_ * (nC4_ + 1)) / 2;
86 static const unsigned maxit1_ = 20;
106 real _a, _f, _f1, _e2, _ep2,
_n, _b, _c2, _etol2;
113 real cbet1,
real cbet2,
unsigned outmask,
128 real& domg12,
bool diffp,
real& dlam12)
const;
130 unsigned outmask,
real& s12,
144 return ldexp(
real(hi), 52) + lo;
169 LATITUDE = 1
U<<7 | CAP_NONE,
174 LONGITUDE = 1
U<<8 | CAP_H,
181 AZIMUTH = 1
U<<9 | CAP_NONE,
186 DISTANCE = 1
U<<10 | CAP_E,
192 DISTANCE_IN = 1
U<<11 | CAP_E,
197 REDUCEDLENGTH = 1
U<<12 | CAP_D,
202 GEODESICSCALE = 1
U<<13 | CAP_D,
207 AREA = 1
U<<14 | CAP_C4,
212 LONG_UNROLL = 1
U<<15,
218 ALL = OUT_ALL| CAP_ALL,
279 return GenDirect(lat1, lon1, azi1,
false, s12,
280 LATITUDE | LONGITUDE | AZIMUTH |
281 REDUCEDLENGTH | GEODESICSCALE | AREA,
282 lat2, lon2, azi2,
t, m12, M12, M21, S12);
292 return GenDirect(lat1, lon1, azi1,
false, s12,
293 LATITUDE | LONGITUDE,
294 lat2, lon2,
t,
t,
t,
t,
t,
t);
304 return GenDirect(lat1, lon1, azi1,
false, s12,
305 LATITUDE | LONGITUDE | AZIMUTH,
306 lat2, lon2, azi2,
t,
t,
t,
t,
t);
316 return GenDirect(lat1, lon1, azi1,
false, s12,
317 LATITUDE | LONGITUDE | AZIMUTH | REDUCEDLENGTH,
318 lat2, lon2, azi2,
t, m12,
t,
t,
t);
329 return GenDirect(lat1, lon1, azi1,
false, s12,
330 LATITUDE | LONGITUDE | AZIMUTH | GEODESICSCALE,
331 lat2, lon2, azi2,
t,
t, M12, M21,
t);
342 return GenDirect(lat1, lon1, azi1,
false, s12,
343 LATITUDE | LONGITUDE | AZIMUTH |
344 REDUCEDLENGTH | GEODESICSCALE,
345 lat2, lon2, azi2,
t, m12, M12, M21,
t);
390 GenDirect(lat1, lon1, azi1,
true, a12,
391 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE |
392 REDUCEDLENGTH | GEODESICSCALE | AREA,
393 lat2, lon2, azi2, s12, m12, M12, M21, S12);
402 GenDirect(lat1, lon1, azi1,
true, a12,
403 LATITUDE | LONGITUDE,
404 lat2, lon2,
t,
t,
t,
t,
t,
t);
413 GenDirect(lat1, lon1, azi1,
true, a12,
414 LATITUDE | LONGITUDE | AZIMUTH,
415 lat2, lon2, azi2,
t,
t,
t,
t,
t);
425 GenDirect(lat1, lon1, azi1,
true, a12,
426 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE,
427 lat2, lon2, azi2, s12,
t,
t,
t,
t);
437 GenDirect(lat1, lon1, azi1,
true, a12,
438 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE |
440 lat2, lon2, azi2, s12, m12,
t,
t,
t);
450 GenDirect(lat1, lon1, azi1,
true, a12,
451 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE |
453 lat2, lon2, azi2, s12,
t, M12, M21,
t);
463 GenDirect(lat1, lon1, azi1,
true, a12,
464 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE |
465 REDUCEDLENGTH | GEODESICSCALE,
466 lat2, lon2, azi2, s12, m12, M12, M21,
t);
525 bool arcmode,
real s12_a12,
unsigned outmask,
568 return GenInverse(lat1, lon1, lat2, lon2,
570 REDUCEDLENGTH | GEODESICSCALE | AREA,
571 s12, azi1, azi2, m12, M12, M21, S12);
580 return GenInverse(lat1, lon1, lat2, lon2,
591 return GenInverse(lat1, lon1, lat2, lon2,
593 t, azi1, azi2,
t,
t,
t,
t);
603 return GenInverse(lat1, lon1, lat2, lon2,
605 s12, azi1, azi2,
t,
t,
t,
t);
615 return GenInverse(lat1, lon1, lat2, lon2,
616 DISTANCE | AZIMUTH | REDUCEDLENGTH,
617 s12, azi1, azi2, m12,
t,
t,
t);
627 return GenInverse(lat1, lon1, lat2, lon2,
628 DISTANCE | AZIMUTH | GEODESICSCALE,
629 s12, azi1, azi2,
t, M12, M21,
t);
639 return GenInverse(lat1, lon1, lat2, lon2,
641 REDUCEDLENGTH | GEODESICSCALE,
642 s12, azi1, azi2, m12, M12, M21,
t);
730 unsigned caps = ALL)
const;
751 unsigned caps = ALL)
const;
774 unsigned caps = ALL)
const;
797 unsigned caps = ALL)
const;
823 bool arcmode,
real s12_a12,
824 unsigned caps = ALL)
const;
863 #endif // GEOGRAPHICLIB_GEODESICEXACT_HPP