10 #if !defined(GEOGRAPHICLIB_GEODESIC_HPP)
11 #define GEOGRAPHICLIB_GEODESIC_HPP 1
15 #if !defined(GEOGRAPHICLIB_GEODESIC_ORDER)
20 # define GEOGRAPHICLIB_GEODESIC_ORDER \
21 (GEOGRAPHICLIB_PRECISION == 2 ? 6 : \
22 (GEOGRAPHICLIB_PRECISION == 1 ? 3 : \
23 (GEOGRAPHICLIB_PRECISION == 3 ? 7 : 8)))
182 static const int nA3x_ = nA3_;
184 static const int nC3x_ = (nC3_ * (nC3_ - 1)) / 2;
186 static const int nC4x_ = (nC4_ * (nC4_ + 1)) / 2;
190 static const unsigned maxit1_ = 20;
207 static real SinCosSeries(
bool sinp,
211 real _a, _f, _f1, _e2, _ep2,
_n, _b, _c2, _etol2;
212 real _A3x[nA3x_], _C3x[nC3x_], _C4x[nC4x_];
217 real cbet1,
real cbet2,
unsigned outmask,
232 bool diffp,
real& dlam12,
real Ca[])
const;
234 unsigned outmask,
real& s12,
274 LATITUDE = 1
U<<7 | CAP_NONE,
279 LONGITUDE = 1
U<<8 | CAP_C3,
286 AZIMUTH = 1
U<<9 | CAP_NONE,
291 DISTANCE = 1
U<<10 | CAP_C1,
297 DISTANCE_IN = 1
U<<11 | CAP_C1 | CAP_C1p,
302 REDUCEDLENGTH = 1
U<<12 | CAP_C1 | CAP_C2,
307 GEODESICSCALE = 1
U<<13 | CAP_C1 | CAP_C2,
312 AREA = 1
U<<14 | CAP_C4,
317 LONG_UNROLL = 1
U<<15,
323 ALL = OUT_ALL| CAP_ALL,
384 return GenDirect(lat1, lon1, azi1,
false, s12,
385 LATITUDE | LONGITUDE | AZIMUTH |
386 REDUCEDLENGTH | GEODESICSCALE | AREA,
387 lat2, lon2, azi2,
t, m12, M12, M21, S12);
397 return GenDirect(lat1, lon1, azi1,
false, s12,
398 LATITUDE | LONGITUDE,
399 lat2, lon2,
t,
t,
t,
t,
t,
t);
409 return GenDirect(lat1, lon1, azi1,
false, s12,
410 LATITUDE | LONGITUDE | AZIMUTH,
411 lat2, lon2, azi2,
t,
t,
t,
t,
t);
421 return GenDirect(lat1, lon1, azi1,
false, s12,
422 LATITUDE | LONGITUDE | AZIMUTH | REDUCEDLENGTH,
423 lat2, lon2, azi2,
t, m12,
t,
t,
t);
434 return GenDirect(lat1, lon1, azi1,
false, s12,
435 LATITUDE | LONGITUDE | AZIMUTH | GEODESICSCALE,
436 lat2, lon2, azi2,
t,
t, M12, M21,
t);
447 return GenDirect(lat1, lon1, azi1,
false, s12,
448 LATITUDE | LONGITUDE | AZIMUTH |
449 REDUCEDLENGTH | GEODESICSCALE,
450 lat2, lon2, azi2,
t, m12, M12, M21,
t);
495 GenDirect(lat1, lon1, azi1,
true, a12,
496 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE |
497 REDUCEDLENGTH | GEODESICSCALE | AREA,
498 lat2, lon2, azi2, s12, m12, M12, M21, S12);
507 GenDirect(lat1, lon1, azi1,
true, a12,
508 LATITUDE | LONGITUDE,
509 lat2, lon2,
t,
t,
t,
t,
t,
t);
518 GenDirect(lat1, lon1, azi1,
true, a12,
519 LATITUDE | LONGITUDE | AZIMUTH,
520 lat2, lon2, azi2,
t,
t,
t,
t,
t);
530 GenDirect(lat1, lon1, azi1,
true, a12,
531 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE,
532 lat2, lon2, azi2, s12,
t,
t,
t,
t);
542 GenDirect(lat1, lon1, azi1,
true, a12,
543 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE |
545 lat2, lon2, azi2, s12, m12,
t,
t,
t);
555 GenDirect(lat1, lon1, azi1,
true, a12,
556 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE |
558 lat2, lon2, azi2, s12,
t, M12, M21,
t);
568 GenDirect(lat1, lon1, azi1,
true, a12,
569 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE |
570 REDUCEDLENGTH | GEODESICSCALE,
571 lat2, lon2, azi2, s12, m12, M12, M21,
t);
630 bool arcmode,
real s12_a12,
unsigned outmask,
677 return GenInverse(lat1, lon1, lat2, lon2,
679 REDUCEDLENGTH | GEODESICSCALE | AREA,
680 s12, azi1, azi2, m12, M12, M21, S12);
689 return GenInverse(lat1, lon1, lat2, lon2,
700 return GenInverse(lat1, lon1, lat2, lon2,
702 t, azi1, azi2,
t,
t,
t,
t);
712 return GenInverse(lat1, lon1, lat2, lon2,
714 s12, azi1, azi2,
t,
t,
t,
t);
724 return GenInverse(lat1, lon1, lat2, lon2,
725 DISTANCE | AZIMUTH | REDUCEDLENGTH,
726 s12, azi1, azi2, m12,
t,
t,
t);
736 return GenInverse(lat1, lon1, lat2, lon2,
737 DISTANCE | AZIMUTH | GEODESICSCALE,
738 s12, azi1, azi2,
t, M12, M21,
t);
748 return GenInverse(lat1, lon1, lat2, lon2,
750 REDUCEDLENGTH | GEODESICSCALE,
751 s12, azi1, azi2, m12, M12, M21,
t);
859 unsigned caps = ALL)
const;
882 unsigned caps = ALL)
const;
905 unsigned caps = ALL)
const;
931 bool arcmode,
real s12_a12,
932 unsigned caps = ALL)
const;
971 #endif // GEOGRAPHICLIB_GEODESIC_HPP