10 #if !defined(GEOGRAPHICLIB_GEODESICLINEEXACT_HPP)
11 #define GEOGRAPHICLIB_GEODESICLINEEXACT_HPP 1
39 static const int nC4_ = GeodesicExact::nC4_;
42 real _lat1, _lon1, _azi1;
43 real _a, _f, _b, _c2, _f1, _e2, _salp0, _calp0, _k2,
44 _salp1, _calp1, _ssig1, _csig1, _dn1, _stau1, _ctau1,
45 _somg1, _comg1, _cchi1,
46 _aA4, _bB41, _eE0, _dD0, _hH0, _eE1, _dD1, _hH1;
54 real azi1, real salp1, real calp1,
58 real azi1, real salp1, real calp1,
59 unsigned caps,
bool arcmode, real s13_a13);
62 CAP_NONE = GeodesicExact::CAP_NONE,
63 CAP_E = GeodesicExact::CAP_E,
64 CAP_D = GeodesicExact::CAP_D,
65 CAP_H = GeodesicExact::CAP_H,
66 CAP_C4 = GeodesicExact::CAP_C4,
67 CAP_ALL = GeodesicExact::CAP_ALL,
68 CAP_MASK = GeodesicExact::CAP_MASK,
69 OUT_ALL = GeodesicExact::OUT_ALL,
70 OUT_MASK = GeodesicExact::OUT_MASK,
195 unsigned caps = ALL);
251 real& lat2, real& lon2, real& azi2,
252 real& m12, real& M12, real& M21,
255 return GenPosition(
false, s12,
256 LATITUDE | LONGITUDE | AZIMUTH |
257 REDUCEDLENGTH | GEODESICSCALE | AREA,
258 lat2, lon2, azi2, t, m12, M12, M21, S12);
266 return GenPosition(
false, s12,
267 LATITUDE | LONGITUDE,
268 lat2, lon2, t, t, t, t, t, t);
277 return GenPosition(
false, s12,
278 LATITUDE | LONGITUDE | AZIMUTH,
279 lat2, lon2, azi2, t, t, t, t, t);
286 real& azi2, real& m12)
const {
288 return GenPosition(
false, s12,
289 LATITUDE | LONGITUDE |
290 AZIMUTH | REDUCEDLENGTH,
291 lat2, lon2, azi2, t, m12, t, t, t);
298 real& azi2, real& M12, real& M21)
301 return GenPosition(
false, s12,
302 LATITUDE | LONGITUDE |
303 AZIMUTH | GEODESICSCALE,
304 lat2, lon2, azi2, t, t, M12, M21, t);
311 real& lat2, real& lon2, real& azi2,
312 real& m12, real& M12, real& M21)
315 return GenPosition(
false, s12,
316 LATITUDE | LONGITUDE | AZIMUTH |
317 REDUCEDLENGTH | GEODESICSCALE,
318 lat2, lon2, azi2, t, m12, M12, M21, t);
364 real& s12, real& m12, real& M12, real& M21,
366 GenPosition(
true, a12,
367 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE |
368 REDUCEDLENGTH | GEODESICSCALE | AREA,
369 lat2, lon2, azi2, s12, m12, M12, M21, S12);
378 GenPosition(
true, a12,
379 LATITUDE | LONGITUDE,
380 lat2, lon2, t, t, t, t, t, t);
387 real& lat2, real& lon2, real& azi2)
390 GenPosition(
true, a12,
391 LATITUDE | LONGITUDE | AZIMUTH,
392 lat2, lon2, azi2, t, t, t, t, t);
401 GenPosition(
true, a12,
402 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE,
403 lat2, lon2, azi2, s12, t, t, t, t);
410 real& s12, real& m12)
const {
412 GenPosition(
true, a12,
413 LATITUDE | LONGITUDE | AZIMUTH |
414 DISTANCE | REDUCEDLENGTH,
415 lat2, lon2, azi2, s12, m12, t, t, t);
422 real& s12, real& M12, real& M21)
425 GenPosition(
true, a12,
426 LATITUDE | LONGITUDE | AZIMUTH |
427 DISTANCE | GEODESICSCALE,
428 lat2, lon2, azi2, s12, t, M12, M21, t);
435 real& s12, real& m12, real& M12, real& M21)
438 GenPosition(
true, a12,
439 LATITUDE | LONGITUDE | AZIMUTH |
440 DISTANCE | REDUCEDLENGTH | GEODESICSCALE,
441 lat2, lon2, azi2, s12, m12, M12, M21, t);
507 Math::real GenPosition(
bool arcmode,
real s12_a12,
unsigned outmask,
526 void SetDistance(
real s13);
537 void SetArc(
real a13);
550 void GenSetDistance(
bool arcmode,
real s13_a13);
559 bool Init()
const {
return _caps != 0U; }
586 {
if (Init()) { sazi1 = _salp1; cazi1 = _calp1; } }
604 {
if (Init()) { sazi0 = _salp0; cazi0 = _calp0; } }
646 return (_caps & testcaps) == testcaps;
657 {
return Init() ? (arcmode ? _a13 : _s13) :
Math::NaN(); }
Header for GeographicLib::Constants class.
#define GEOGRAPHICLIB_EXPORT
Header for GeographicLib::EllipticFunction class.
GeographicLib::Math::real real
Header for GeographicLib::GeodesicExact class.
Elliptic integrals and functions.
Exact geodesic calculations.
Math::real Flattening() const
void ArcPosition(real a12, real &lat2, real &lon2, real &azi2) const
void ArcPosition(real a12, real &lat2, real &lon2, real &azi2, real &s12) const
void EquatorialAzimuth(real &sazi0, real &cazi0) const
Math::real Longitude() const
Math::real EquatorialArc() const
Math::real Position(real s12, real &lat2, real &lon2, real &azi2, real &m12, real &M12, real &M21, real &S12) const
unsigned Capabilities() const
void ArcPosition(real a12, real &lat2, real &lon2, real &azi2, real &s12, real &m12, real &M12, real &M21, real &S12) const
void ArcPosition(real a12, real &lat2, real &lon2, real &azi2, real &s12, real &M12, real &M21) const
Math::real Latitude() const
Math::real EquatorialAzimuth() const
void ArcPosition(real a12, real &lat2, real &lon2) const
Math::real Position(real s12, real &lat2, real &lon2, real &azi2, real &M12, real &M21) const
Math::real Azimuth() const
Math::real GenDistance(bool arcmode) const
Math::real Distance() const
Math::real Position(real s12, real &lat2, real &lon2, real &azi2, real &m12, real &M12, real &M21) const
Math::real Position(real s12, real &lat2, real &lon2) const
void ArcPosition(real a12, real &lat2, real &lon2, real &azi2, real &s12, real &m12) const
bool Capabilities(unsigned testcaps) const
void ArcPosition(real a12, real &lat2, real &lon2, real &azi2, real &s12, real &m12, real &M12, real &M21) const
void Azimuth(real &sazi1, real &cazi1) const
Math::real EquatorialRadius() const
Math::real Position(real s12, real &lat2, real &lon2, real &azi2) const
Math::real Position(real s12, real &lat2, real &lon2, real &azi2, real &m12) const
static T atan2d(T y, T x)
Namespace for GeographicLib.