15 namespace GeographicLib {
21 real clam, slam, M[Geocentric::dim2_];
22 CircularEngine::cossin(lon, clam, slam);
23 real Wres = W(clam, slam, gx, gy, gz);
24 Geocentric::Rotation(_sphi, _cphi, slam, clam, M);
25 Geocentric::Unrotate(M, gx, gy, gz, gx, gy, gz);
30 real& deltaz)
const throw() {
31 real clam, slam, M[Geocentric::dim2_];
32 CircularEngine::cossin(lon, clam, slam);
33 real Tres = InternalT(clam, slam, deltax, deltay, deltaz,
true,
true);
34 Geocentric::Rotation(_sphi, _cphi, slam, clam, M);
35 Geocentric::Unrotate(M, deltax, deltay, deltaz, deltax, deltay, deltaz);
40 if ((_caps & GEOID_HEIGHT) != GEOID_HEIGHT)
41 return Math::NaN<real>();
42 real clam, slam, dummy;
43 CircularEngine::cossin(lon, clam, slam);
44 real T = InternalT(clam, slam, dummy, dummy, dummy,
false,
false);
45 real correction = _corrmult * _correction(clam, slam);
46 return T/_gamma0 + correction;
50 real& Dg01, real& xi, real& eta)
52 if ((_caps & SPHERICAL_ANOMALY) != SPHERICAL_ANOMALY) {
53 Dg01 = xi = eta = Math::NaN<real>();
57 CircularEngine::cossin(lon, clam, slam);
59 deltax, deltay, deltaz,
60 T = InternalT(clam, slam, deltax, deltay, deltaz,
true,
false);
62 real MC[Geocentric::dim2_];
63 Geocentric::Rotation(_spsi, _cpsi, slam, clam, MC);
64 Geocentric::Unrotate(MC, deltax, deltay, deltaz, deltax, deltay, deltaz);
66 Dg01 = - deltaz - 2 * T * _invR;
67 xi = -(deltay/_gamma) / Math::degree<real>();
68 eta = -(deltax/_gamma) / Math::degree<real>();
73 real Wres = V(clam, slam, gX, gY, gZ) + _frot * _Px / 2;
82 if ((_caps & GRAVITY) != GRAVITY) {
83 GX = GY = GZ = Math::NaN<real>();
84 return Math::NaN<real>();
87 Vres = _gravitational(clam, slam, GX, GY, GZ),
88 f = _GMmodel / _amodel;
98 bool gradp,
bool correct)
const throw() {
100 if ((_caps & DISTURBANCE) != DISTURBANCE) {
101 deltaX = deltaY = deltaZ = Math::NaN<real>();
102 return Math::NaN<real>();
105 if ((_caps & DISTURBING_POTENTIAL) != DISTURBING_POTENTIAL)
106 return Math::NaN<real>();
111 ? _disturbing(clam, slam, deltaX, deltaY, deltaZ)
112 : _disturbing(clam, slam));
113 T = (T / _amodel - (correct ? _dzonal0 : 0) * _invR) * _GMmodel;
115 real f = _GMmodel / _amodel;
120 real r3 = _GMmodel * _dzonal0 * _invR * _invR * _invR;
121 deltaX += _Px * clam * r3;
122 deltaY += _Px * slam * r3;
GeographicLib::Math::real real
void SphericalAnomaly(real lon, real &Dg01, real &xi, real &eta) const
Math::real Disturbance(real lon, real &deltax, real &deltay, real &deltaz) const
Math::real Gravity(real lon, real &gx, real &gy, real &gz) const
Header for GeographicLib::Geocentric class.
Math::real GeoidHeight(real lon) const
Header for GeographicLib::GravityCircle class.