12 namespace GeographicLib {
17 : eps1_(real(0.01) * sqrt(numeric_limits<real>::epsilon()))
18 , tiny_(sqrt(numeric_limits<real>::min()))
22 : eps1_(real(0.01) * sqrt(numeric_limits<real>::epsilon()))
23 , tiny_(sqrt(numeric_limits<real>::min()))
25 {
Reset(lat0, lon0); }
28 _meridian = _earth.
Line(lat0, lon0, real(0),
35 _sbet0 = (1 - f) * sin(phi);
41 real& azi, real& rk)
const {
45 real sig12, s12, azi1, azi2;
47 sig12 = _earth.
Inverse(lat, -abs(dlon), lat, abs(dlon), s12, azi1, azi2);
48 if (sig12 < 100 * tiny_)
53 real da = (azi2 - azi1)/2;
54 if (abs(dlon) <= 90) {
73 t, t, t, t, t, t, rk, t);
77 calp0 = cos(alp0), salp0 = sin(alp0),
78 sbet1 = lat >=0 ? calp0 : -calp0,
79 cbet1 = abs(dlon) <= 90 ? abs(salp0) : -abs(salp0),
80 sbet01 = sbet1 * _cbet0 - cbet1 * _sbet0,
81 cbet01 = cbet1 * _cbet0 + sbet1 * _sbet0,
85 t, t, t, y, t, t, t, t);
89 real& azi, real& rk)
const {
94 _meridian.
Position(y, lat1, lon1, azi0);
95 _earth.
Direct(lat1, lon1, azi0 + 90, x, lat, lon, azi, rk, t);
static T AngNormalize(T x)
CassiniSoldner(const Geodesic &earth=Geodesic::WGS84())
Math::real LatitudeOrigin() const
Header for GeographicLib::CassiniSoldner class.
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
GeodesicLine Line(real lat1, real lon1, real azi1, unsigned caps=ALL) const
void Forward(real lat, real lon, real &x, real &y, real &azi, real &rk) 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
Math::real Position(real s12, real &lat2, real &lon2, real &azi2, real &m12, real &M12, real &M21, real &S12) const
static void norm(T &x, T &y)
void Reverse(real x, real y, real &lat, real &lon, real &azi, real &rk) const
Math::real GenPosition(bool arcmode, real s12_a12, unsigned outmask, real &lat2, real &lon2, real &azi2, real &s12, real &m12, real &M12, real &M21, real &S12) const
static T AngDiff(T x, T y)
Math::real Flattening() const
void Reset(real lat0, real lon0)
Math::real LongitudeOrigin() const