

Private Member Functions | |
| Point3d | computePosition (double jd) const |
| double | getBoundingRadius () const |
| double | getPeriod () const |
|
|
Implements CachingOrbit. Definition at line 1665 of file customorbit.cpp. References B, ComputeGalileanElements(), cos(), degToRad(), JupAscendingNode, JupiterRadius, LPEJ, pfmod(), PI, and sin(). 01666 {
01667 //Computation will yield latitude(L), longitude(B) and distance(R) relative to Jupiter
01668 double t;
01669 double l1, l2, l3, l4;
01670 double p1, p2, p3, p4;
01671 double w1, w2, w3, w4;
01672 double gamma, phi, psi, G, Gp;
01673 double sigma, L, B, R;
01674 double T, P;
01675
01676 //Epoch for Galilean satellites is 1976 Aug 10
01677 t = jd - 2443000.5;
01678
01679 ComputeGalileanElements(t,
01680 l1, l2, l3, l4,
01681 p1, p2, p3, p4,
01682 w1, w2, w3, w4,
01683 gamma, phi, psi, G, Gp);
01684
01685 //Calculate periodic terms for longitude
01686 sigma = 0.1649*sin(l3 - p3) + 0.09081*sin(l3 - p4)
01687 - 0.06907*sin(l2 - l3) + 0.03784*sin(p3 - p4)
01688 + 0.01846*sin(2*(l3 - l4)) - 0.01340*sin(G)
01689 - 0.01014*sin(2*(psi - LPEJ)) + 7.04e-3*sin(l2 - 2*l3 + p3)
01690 - 6.2e-3*sin(l2 - 2*l3 + p2) - 5.41e-3*sin(l3 - l4)
01691 + 3.81e-3*sin(l2 - 2*l3 + p4) + 2.35e-3*sin(psi - w3)
01692 + 1.98e-3*sin(psi - w4) + 1.76e-3*sin(phi)
01693 + 1.3e-3*sin(3*(l3 - l4)) + 1.25e-3*sin(l1 - l3)
01694 - 1.19e-3*sin(5*Gp - 2*G + 0.9115) + 1.09e-3*sin(l1 - l2)
01695 - 1.0e-3*sin(3*l3 - 7*l4 + 4*p4) + 9.1e-4*sin(w3 - w4)
01696 + 8.0e-4*sin(3*l3 - 7*l4 + p3 + 3*p4) - 7.5e-4*sin(2*l2 - 3*l3 + p3)
01697 + 7.2e-4*sin(p1 + p3 - 2*LPEJ - 2*G) + 6.9e-4*sin(p4 - LPEJ)
01698 - 5.8e-4*sin(2*l3 - 3*l4 + p4) - 5.7e-4*sin(l3 - 2*l4 + p4)
01699 + 5.6e-4*sin(l3 + p3 - 2*LPEJ - 2*G) - 5.2e-4*sin(l2 - 2*l3 + p1)
01700 - 5.0e-4*sin(p2 - p3) + 4.8e-4*sin(l3 - 2*l4 + p3)
01701 - 4.5e-4*sin(2*l2 - 3*l3 + p4) - 4.1e-4*sin(p2 - p4)
01702 - 3.8e-4*sin(2*G) - 3.7e-4*sin(p3 - p4 + w3 - w4)
01703 - 3.2e-4*sin(3*l3 - 7*l4 + 2*p3 + 2*p4) + 3.0e-4*sin(4*(l3 - l4))
01704 + 2.9e-4*sin(l3 + p4 - 2*LPEJ - 2*G) - 2.8e-4*sin(w3 + psi - 2*LPEJ - 2*G)
01705 + 2.6e-4*sin(l3 - LPEJ - G) + 2.4e-4*sin(l2 - 3*l3 + 2*l4)
01706 + 2.1e-4*sin(2*(l3 - LPEJ - G)) - 2.1e-4*sin(l3 - p2)
01707 + 1.7e-4*sin(l3 - p3);
01708 sigma = pfmod(sigma, 360.0);
01709 sigma = degToRad(sigma);
01710 L = l3 + sigma;
01711
01712 //Calculate periodic terms for the tangent of the latitude
01713 B = 3.2402e-3*sin(L - w3) - 1.6911e-3*sin(L - psi)
01714 + 6.847e-4*sin(L - w4) - 2.797e-4*sin(L - w2)
01715 + 3.21e-5*sin(L + psi - 2*LPEJ - 2*G) + 5.1e-6*sin(L - psi + G)
01716 - 4.5e-6*sin(L - psi - G) - 4.5e-6*sin(L + psi - 2*LPEJ)
01717 + 3.7e-6*sin(L + psi - 2*LPEJ - 3*G) + 3.0e-6*sin(2*l2 - 3*L + 4.03*sigma + w2)
01718 - 2.1e-6*sin(2*l2 - 3*L + 4.03*sigma + w3);
01719 B = atan(B);
01720
01721 //Calculate the periodic terms for distance
01722 R = -1.4388e-3*cos(l3 - p3) - 7.919e-4*cos(l3 - p4)
01723 + 6.342e-4*cos(l2 - l3) - 1.761e-4*cos(2*(l3 - l4))
01724 + 2.94e-5*cos(l3 - l4) - 1.56e-5*cos(3*(l3 - l4))
01725 + 1.56e-5*cos(l1 - l3) - 1.53e-5*cos(l1 - l2)
01726 + 7.0e-6*cos(2*l2 - 3*l3 + p3) - 5.1e-6*cos(l3 + p3 - 2*LPEJ - 2*G);
01727 R = 14.98832 * JupiterRadius * (1 + R);
01728
01729 T = (jd - 2433282.423) / 36525.0;
01730 P = 1.3966626*T + 3.088e-4*T*T;
01731 L += degToRad(P);
01732
01733 L += JupAscendingNode;
01734
01735 //Corrections for internal coordinate system
01736 B -= (PI/2);
01737 L += PI;
01738
01739 return Point3d(cos(L) * sin(B) * R,
01740 cos(B) * R,
01741 -sin(L) * sin(B) * R);
01742 };
|
|
|
Implements CachingOrbit. Definition at line 1749 of file customorbit.cpp. References BoundingRadiusSlack. 01750 {
01751 return 1070000 * BoundingRadiusSlack;
01752 };
|
|
|
Implements CachingOrbit. Definition at line 1744 of file customorbit.cpp. 01745 {
01746 return 7.154553;
01747 };
|
1.4.1