

Private Member Functions | |
| Point3d | computePosition (double jd) const |
| double | getBoundingRadius () const |
| double | getPeriod () const |
|
|
Implements CachingOrbit. Definition at line 2185 of file customorbit.cpp. References ComputeSaturnianElements(), cosD(), OuterSaturnMoonParams(), radToDeg(), SaturnMoonPosition(), sinD(), sqrt(), and square(). 02186 {
02187 // Computation will yield latitude(L), longitude(B) and distance(R)
02188 // relative to Saturn.
02189 double t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11;
02190 double W0, W1, W2, W3, W4, W5, W6, W7, W8;
02191
02192 ComputeSaturnianElements(jd,
02193 t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11,
02194 W0, W1, W2, W3, W4, W5, W6, W7, W8);
02195 double e1 = 0.05589 - 0.000346 * t7;
02196
02197 double L = 261.1582 + 22.57697855 * t4 + 0.074025 * sinD(W3);
02198 double i_ = 27.45141 + 0.295999 * cosD(W3);
02199 double Om_ = 168.66925 + 0.628808 * sinD(W3);
02200 double a1 = sinD(W7) * sinD(Om_ - W8);
02201 double a2 = cosD(W7) * sinD(i_) - sinD(W7) * cosD(i_) * cosD(Om_ - W8);
02202 double g0 = 102.8623;
02203 double psi = radToDeg(atan2(a1, a2));
02204 double s = sqrt(square(a1) + square(a2));
02205 double g = W4 - Om_ - psi;
02206
02207 // Three successive approximations will always be enough
02208 double om;
02209 for (int n = 0; n < 3; n++)
02210 {
02211 om = W4 + 0.37515 * (sinD(2 * g) - sinD(2 * g0));
02212 g = om - Om_ - psi;
02213 }
02214
02215 double e_ = 0.029092 + 0.00019048 * (cosD(2 * g) - cosD(2 * g0));
02216 double q = 2 * (W5 - om);
02217 double b1 = sinD(i_) * sinD(Om_ - W8);
02218 double b2 = cosD(W7) * sinD(i_) * cosD(Om_ - W8) - sinD(W7) * cosD(i_);
02219 double theta = radToDeg(atan2(b1, b2)) + W8;
02220 double e = e_ + 0.002778797 * e_ * cosD(q);
02221 double p = om + 0.159215 * sinD(q);
02222 double u = 2 * W5 - 2 * theta + psi;
02223 double h = 0.9375 * square(e_) * sinD(q) + 0.1875 * square(s) * sinD(2 * (W5 - theta));
02224 double lam_ = L - 0.254744 * (e1 * sinD(W6) + 0.75 * square(e1) * sinD(2 * W6) + h);
02225 double i = i_ + 0.031843 * s * cosD(u);
02226 double Om = Om_ + (0.031843 * s * sinD(u)) / sinD(i_);
02227 double a = 20.216193;
02228
02229 double lam, gam, r, w;
02230 OuterSaturnMoonParams(a, e, i, Om, lam_ - p, lam_,
02231 lam, gam, r, w);
02232
02233 return SaturnMoonPosition(lam, gam, w, r);
02234 };
|
|
|
Implements CachingOrbit. Definition at line 2241 of file customorbit.cpp. References BoundingRadiusSlack. 02242 {
02243 return 1260000 * BoundingRadiusSlack;
02244 };
|
|
|
Implements CachingOrbit. Definition at line 2236 of file customorbit.cpp. 02237 {
02238 return 15.94544758;
02239 };
|
1.4.1