10#if !defined(GEOGRAPHICLIB_RHUMB_HPP)
11#define GEOGRAPHICLIB_RHUMB_HPP 1
17#if !defined(GEOGRAPHICLIB_RHUMBAREA_ORDER)
22# define GEOGRAPHICLIB_RHUMBAREA_ORDER \
23 (GEOGRAPHICLIB_PRECISION == 2 ? 6 : \
24 (GEOGRAPHICLIB_PRECISION == 1 ? 4 : 8))
29# pragma warning (push)
30# pragma warning (disable: 4251)
87 real _a, _f, _n, _rm, _c2;
89 std::vector<real> _pP;
96 real operator()(real chi)
const;
105 bool,
real s12,
unsigned outmask,
108 GenDirect(lat1, lon1, azi12, s12, outmask, lat2, lon2, S12);
111 unsigned outmask,
real& s12,
real& azi12,
113 GenInverse(lat1, lon1, lat2, lon2, outmask, s12, azi12, S12);
157 LONG_UNROLL = 1U<<15,
201 void Direct(real lat1, real lon1, real azi12, real s12,
202 real& lat2, real& lon2, real& S12)
const {
203 GenDirect(lat1, lon1, azi12, s12,
204 LATITUDE | LONGITUDE | AREA, lat2, lon2, S12);
210 void Direct(real lat1, real lon1, real azi12, real s12,
211 real& lat2, real& lon2)
const {
213 GenDirect(lat1, lon1, azi12, s12, LATITUDE | LONGITUDE, lat2, lon2, t);
244 unsigned outmask,
real& lat2,
real& lon2,
real& S12)
const;
268 void Inverse(real lat1, real lon1, real lat2, real lon2,
269 real& s12, real& azi12, real& S12)
const {
270 GenInverse(lat1, lon1, lat2, lon2,
271 DISTANCE | AZIMUTH | AREA, s12, azi12, S12);
277 void Inverse(real lat1, real lon1, real lat2, real lon2,
278 real& s12, real& azi12)
const {
280 GenInverse(lat1, lon1, lat2, lon2, DISTANCE | AZIMUTH, s12, azi12, t);
327 RhumbLine Line(real lat1, real lon1, real azi12)
const;
353 return 2 *
real(Math::td) * _c2;
361 static const Rhumb& WGS84();
387 real _lat1, _lon1, _azi12, _salp, _calp, _mu1, _psi1;
412 LATITUDE = Rhumb::LATITUDE,
417 LONGITUDE = Rhumb::LONGITUDE,
422 AZIMUTH = Rhumb::AZIMUTH,
427 DISTANCE = Rhumb::DISTANCE,
437 LONG_UNROLL = Rhumb::LONG_UNROLL,
467 void Position(real s12, real& lat2, real& lon2, real& S12)
const {
468 GenPosition(s12, LATITUDE | LONGITUDE | AREA, lat2, lon2, S12);
475 void Position(real s12, real& lat2, real& lon2)
const {
477 GenPosition(s12, LATITUDE | LONGITUDE, lat2, lon2, t);
508 void GenPosition(
real s12,
unsigned outmask,
546# pragma warning (pop)
Header for GeographicLib::Constants class.
#define GEOGRAPHICLIB_EXPORT
Header for the GeographicLib::DAuxLatitude class.
GeographicLib::Math::real real
#define GEOGRAPHICLIB_RHUMBAREA_ORDER
An accurate representation of angles.
Conversions between auxiliary latitudes.
Divided differences of auxiliary latitudes.
Find a sequence of points on a single rhumb line.
void Position(real s12, real &lat2, real &lon2) const
void Position(real s12, real &lat2, real &lon2, real &S12) const
RhumbLine(const RhumbLine &)=default
Math::real EquatorialRadius() const
Math::real Latitude() const
Math::real Azimuth() const
Math::real Flattening() const
Math::real Longitude() const
Solve of the direct and inverse rhumb problems.
Math::real Flattening() const
void Direct(real lat1, real lon1, real azi12, real s12, real &lat2, real &lon2, real &S12) const
void Inverse(real lat1, real lon1, real lat2, real lon2, real &s12, real &azi12, real &S12) const
void Inverse(real lat1, real lon1, real lat2, real lon2, real &s12, real &azi12) const
void Direct(real lat1, real lon1, real azi12, real s12, real &lat2, real &lon2) const
Math::real EquatorialRadius() const
Math::real EllipsoidArea() const
Namespace for GeographicLib.