

Private Member Functions | |
| Point3d | computePosition (double jd) const |
| double | getBoundingRadius () const |
| double | getPeriod () const |
|
|
Implements CachingOrbit. Definition at line 1576 of file customorbit.cpp. References B, ComputeGalileanElements(), cos(), degToRad(), JupAscendingNode, JupiterRadius, LPEJ, pfmod(), PI, and sin(). 01577 {
01578 // Computation will yield latitude(L), longitude(B) and distance(R) relative to Jupiter
01579 double t;
01580 double l1, l2, l3, l4;
01581 double p1, p2, p3, p4;
01582 double w1, w2, w3, w4;
01583 double gamma, phi, psi, G, Gp;
01584 double sigma, L, B, R;
01585 double T, P;
01586
01587 // Epoch for Galilean satellites is 1976 Aug 10
01588 t = jd - 2443000.5;
01589
01590 ComputeGalileanElements(t,
01591 l1, l2, l3, l4,
01592 p1, p2, p3, p4,
01593 w1, w2, w3, w4,
01594 gamma, phi, psi, G, Gp);
01595
01596 // Calculate periodic terms for longitude
01597 sigma = 1.06476*sin(2*(l2 - l3)) + 0.04256*sin(l1 - 2*l2 + p3)
01598 + 0.03581*sin(l2 - p3) + 0.02395*sin(l1 - 2*l2 + p4)
01599 + 0.01984*sin(l2 - p4) - 0.01778*sin(phi)
01600 + 0.01654*sin(l2 - p2) + 0.01334*sin(l2 - 2*l3 + p2)
01601 + 0.01294*sin(p3 - p4) - 0.01142*sin(l2 - l3)
01602 - 0.01057*sin(G) - 7.75e-3*sin(2*(psi - LPEJ))
01603 + 5.24e-3*sin(2*(l1 - l2)) - 4.6e-3*sin(l1 - l3)
01604 + 3.16e-3*sin(psi - 2*G + w3 - 2*LPEJ) - 2.03e-3*sin(p1 + p3 - 2*LPEJ - 2*G)
01605 + 1.46e-3*sin(psi - w3) - 1.45e-3*sin(2*G)
01606 + 1.25e-3*sin(psi - w4) - 1.15e-3*sin(l1 - 2*l3 + p3)
01607 - 9.4e-4*sin(2*(l2 - w2)) + 8.6e-4*sin(2*(l1 - 2*l2 + w2))
01608 - 8.6e-4*sin(5*Gp - 2*G + 0.9115) - 7.8e-4*sin(l2 - l4)
01609 - 6.4e-4*sin(3*l3 - 7*l4 + 4*p4) + 6.4e-4*sin(p1 - p4)
01610 - 6.3e-4*sin(l1 - 2*l3 + p4) + 5.8e-4*sin(w3 - w4)
01611 + 5.6e-4*sin(2*(psi - LPEJ - G)) + 5.6e-4*sin(2*(l2 - l4))
01612 + 5.5e-4*sin(2*(l1 - l3)) + 5.2e-4*sin(3*l3 - 7*l4 + p3 +3*p4)
01613 - 4.3e-4*sin(l1 - p3) + 4.1e-4*sin(5*(l2 - l3))
01614 + 4.1e-4*sin(p4 - LPEJ) + 3.2e-4*sin(w2 - w3)
01615 + 3.2e-4*sin(2*(l3 - G - LPEJ));
01616 sigma = pfmod(sigma, 360.0);
01617 sigma = degToRad(sigma);
01618 L = l2 + sigma;
01619
01620 // Calculate periodic terms for the tangent of the latitude
01621 B = 8.1004e-3*sin(L - w2) + 4.512e-4*sin(L - w3)
01622 - 3.284e-4*sin(L - psi) + 1.160e-4*sin(L - w4)
01623 + 2.72e-5*sin(l1 - 2*l3 + 1.0146*sigma + w2) - 1.44e-5*sin(L - w1)
01624 + 1.43e-5*sin(L + psi - 2*LPEJ - 2*G) + 3.5e-6*sin(L - psi + G)
01625 - 2.8e-6*sin(l1 - 2*l3 + 1.0146*sigma + w3);
01626 B = atan(B);
01627
01628 // Calculate the periodic terms for distance
01629 R = 9.3848e-3*cos(l1 - l2) - 3.116e-4*cos(l2 - p3)
01630 - 1.744e-4*cos(l2 - p4) - 1.442e-4*cos(l2 - p2)
01631 + 5.53e-5*cos(l2 - l3) + 5.23e-5*cos(l1 - l3)
01632 - 2.9e-5*cos(2*(l1 - l2)) + 1.64e-5*cos(2*(l2 - w2))
01633 + 1.07e-5*cos(l1 - 2*l3 + p3) - 1.02e-5*cos(l2 - p1)
01634 - 9.1e-6*cos(2*(l1 - l3));
01635 R = 9.39657 * JupiterRadius * (1 + R);
01636
01637 T = (jd - 2433282.423) / 36525.0;
01638 P = 1.3966626*T + 3.088e-4*T*T;
01639 L += degToRad(P);
01640
01641 L += JupAscendingNode;
01642
01643 // Corrections for internal coordinate system
01644 B -= (PI/2);
01645 L += PI;
01646
01647 return Point3d(cos(L) * sin(B) * R,
01648 cos(B) * R,
01649 -sin(L) * sin(B) * R);
01650 };
|
|
|
Implements CachingOrbit. Definition at line 1657 of file customorbit.cpp. References BoundingRadiusSlack. 01658 {
01659 return 678000 * BoundingRadiusSlack;
01660 };
|
|
|
Implements CachingOrbit. Definition at line 1652 of file customorbit.cpp. 01653 {
01654 return 3.5511810791;
01655 };
|
1.4.1