20 real& gx, real& gy, real& gz)
const {
21 real slam, clam, M[Geocentric::dim2_];
23 real Wres = W(slam, clam, gx, gy, gz);
24 Geocentric::Rotation(_sphi, _cphi, slam, clam, M);
25 Geocentric::Unrotate(M, gx, gy, gz, gx, gy, gz);
31 real slam, clam, M[Geocentric::dim2_];
33 real Tres = InternalT(slam, clam, 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)
42 real slam, clam, dummy;
44 real T = InternalT(slam, clam, dummy, dummy, dummy,
false,
false);
45 real correction = _corrmult * _correction(slam, clam);
46 return T/_gamma0 + correction;
50 real& Dg01, real& xi, real& eta)
const {
51 if ((_caps & SPHERICAL_ANOMALY) != SPHERICAL_ANOMALY) {
58 deltax, deltay, deltaz,
59 T = InternalT(slam, clam, deltax, deltay, deltaz,
true,
false);
61 real MC[Geocentric::dim2_];
62 Geocentric::Rotation(_spsi, _cpsi, slam, clam, MC);
63 Geocentric::Unrotate(MC, deltax, deltay, deltaz, deltax, deltay, deltaz);
65 Dg01 = - deltaz - 2 * T * _invR;
70 Math::real GravityCircle::W(real slam, real clam,
71 real& gX, real& gY, real& gZ)
const {
72 real Wres = V(slam, clam, gX, gY, gZ) + _frot * _Px / 2;
78 Math::real GravityCircle::V(real slam, real clam,
79 real& GX, real& GY, real& GZ)
const {
80 if ((_caps & GRAVITY) != GRAVITY) {
85 Vres = _gravitational(slam, clam, GX, GY, GZ),
86 f = _GMmodel / _amodel;
94 Math::real GravityCircle::InternalT(real slam, real clam,
95 real& deltaX, real& deltaY, real& deltaZ,
96 bool gradp,
bool correct)
const {
98 if ((_caps & DISTURBANCE) != DISTURBANCE) {
103 if ((_caps & DISTURBING_POTENTIAL) != DISTURBING_POTENTIAL)
109 ? _disturbing(slam, clam, deltaX, deltaY, deltaZ)
110 : _disturbing(slam, clam));
111 T = (T / _amodel - (correct ? _dzonal0 : 0) * _invR) * _GMmodel;
113 real f = _GMmodel / _amodel;
118 real r3 = _GMmodel * _dzonal0 * _invR * _invR * _invR;
119 deltaX += _Px * clam * r3;
120 deltaY += _Px * slam * r3;
Math::real Gravity(real lon, real &gx, real &gy, real &gz) const
Math::real Disturbance(real lon, real &deltax, real &deltay, real &deltaz) const
Namespace for GeographicLib.
void SphericalAnomaly(real lon, real &Dg01, real &xi, real &eta) const
Header for GeographicLib::Geocentric class.
static void sincosd(T x, T &sinx, T &cosx)
Header for GeographicLib::GravityCircle class.
Math::real GeoidHeight(real lon) const