

Private Member Functions | |
| Point3d | computePosition (double jd) const |
| double | getBoundingRadius () const |
| double | getPeriod () const |
|
|
Implements CachingOrbit. Definition at line 1757 of file customorbit.cpp. References B, ComputeGalileanElements(), cos(), degToRad(), JupAscendingNode, JupiterRadius, LPEJ, pfmod(), PI, and sin(). 01758 {
01759 //Computation will yield latitude(L), longitude(B) and distance(R) relative to Jupiter
01760 double t;
01761 double l1, l2, l3, l4;
01762 double p1, p2, p3, p4;
01763 double w1, w2, w3, w4;
01764 double gamma, phi, psi, G, Gp;
01765 double sigma, L, B, R;
01766 double T, P;
01767
01768 //Epoch for Galilean satellites is 1976 Aug 10
01769 t = jd - 2443000.5;
01770
01771 ComputeGalileanElements(t,
01772 l1, l2, l3, l4,
01773 p1, p2, p3, p4,
01774 w1, w2, w3, w4,
01775 gamma, phi, psi, G, Gp);
01776
01777 //Calculate periodic terms for longitude
01778 sigma =
01779 0.84287*sin(l4 - p4)
01780 + 0.03431*sin(p4 - p3)
01781 - 0.03305*sin(2*(psi - LPEJ))
01782 - 0.03211*sin(G)
01783 - 0.01862*sin(l4 - p3)
01784 + 0.01186*sin(psi - w4)
01785 + 6.23e-3*sin(l4 + p4 - 2*G - 2*LPEJ)
01786 + 3.87e-3*sin(2*(l4 - p4))
01787 - 2.84e-3*sin(5*Gp - 2*G + 0.9115)
01788 - 2.34e-3*sin(2*(psi - p4))
01789 - 2.23e-3*sin(l3 - l4)
01790 - 2.08e-3*sin(l4 - LPEJ)
01791 + 1.78e-3*sin(psi + w4 - 2*p4)
01792 + 1.34e-3*sin(p4 - LPEJ)
01793 + 1.25e-3*sin(2*(l4 - G - LPEJ))
01794 - 1.17e-3*sin(2*G)
01795 - 1.12e-3*sin(2*(l3 - l4))
01796 + 1.07e-3*sin(3*l3 - 7*l4 + 4*p4)
01797 + 1.02e-3*sin(l4 - G - LPEJ)
01798 + 9.6e-4*sin(2*l4 - psi - w4)
01799 + 8.7e-4*sin(2*(psi - w4))
01800 - 8.5e-4*sin(3*l3 - 7*l4 + p3 + 3*p4)
01801 + 8.5e-4*sin(l3 - 2*l4 + p4)
01802 - 8.1e-4*sin(2*(l4 - psi))
01803 + 7.1e-4*sin(l4 + p4 - 2*LPEJ - 3*G)
01804 + 6.1e-4*sin(l1 - l4)
01805 - 5.6e-4*sin(psi - w3)
01806 - 5.4e-4*sin(l3 - 2*l4 + p3)
01807 + 5.1e-4*sin(l2 - l4)
01808 + 4.2e-4*sin(2*(psi - G - LPEJ))
01809 + 3.9e-4*sin(2*(p4 - w4))
01810 + 3.6e-4*sin(psi + LPEJ - p4 - w4)
01811 + 3.5e-4*sin(2*Gp - G + 3.2877)
01812 - 3.5e-4*sin(l4 - p4 + 2*LPEJ - 2*psi)
01813 - 3.2e-4*sin(l4 + p4 - 2*LPEJ - G)
01814 + 3.0e-4*sin(2*Gp - 2*G + 2.6032)
01815 + 2.9e-4*sin(3*l3 - 7*l4 + 2*p3 + 2*p4)
01816 + 2.8e-4*sin(l4 - p4 + 2*psi - 2*LPEJ)
01817 - 2.8e-4*sin(2*(l4 - w4))
01818 - 2.7e-4*sin(p3 - p4 + w3 - w4)
01819 - 2.6e-4*sin(5*Gp - 3*G + 3.2877)
01820 + 2.5e-4*sin(w4 - w3)
01821 - 2.5e-4*sin(l2 - 3*l3 + 2*l4)
01822 - 2.3e-4*sin(3*(l3 - l4))
01823 + 2.1e-4*sin(2*l4 - 2*LPEJ - 3*G)
01824 - 2.1e-4*sin(2*l3 - 3*l4 + p4)
01825 + 1.9e-4*sin(l4 - p4 - G)
01826 - 1.9e-4*sin(2*l4 - p3 - p4)
01827 - 1.8e-4*sin(l4 - p4 + G)
01828 - 1.6e-4*sin(l4 + p3 - 2*LPEJ - 2*G);
01829 sigma = pfmod(sigma, 360.0);
01830 sigma = degToRad(sigma);
01831 L = l4 + sigma;
01832
01833 //Calculate periodic terms for the tangent of the latitude
01834 B =
01835 - 7.6579e-3 * sin(L - psi)
01836 + 4.4134e-3 * sin(L - w4)
01837 - 5.112e-4 * sin(L - w3)
01838 + 7.73e-5 * sin(L + psi - 2*LPEJ - 2*G)
01839 + 1.04e-5 * sin(L - psi + G)
01840 - 1.02e-5 * sin(L - psi - G)
01841 + 8.8e-6 * sin(L + psi - 2*LPEJ - 3*G)
01842 - 3.8e-6 * sin(L + psi - 2*LPEJ - G);
01843 B = atan(B);
01844
01845 //Calculate the periodic terms for distance
01846 R =
01847 - 7.3546e-3 * cos(l4 - p4)
01848 + 1.621e-4 * cos(l4 - p3)
01849 + 9.74e-5 * cos(l3 - l4)
01850 - 5.43e-5 * cos(l4 + p4 - 2*LPEJ - 2*G)
01851 - 2.71e-5 * cos(2*(l4 - p4))
01852 + 1.82e-5 * cos(l4 - LPEJ)
01853 + 1.77e-5 * cos(2*(l3 - l4))
01854 - 1.67e-5 * cos(2*l4 - psi - w4)
01855 + 1.67e-5 * cos(psi - w4)
01856 - 1.55e-5 * cos(2*(l4 - LPEJ - G))
01857 + 1.42e-5 * cos(2*(l4 - psi))
01858 + 1.05e-5 * cos(l1 - l4)
01859 + 9.2e-6 * cos(l2 - l4)
01860 - 8.9e-6 * cos(l4 - LPEJ -G)
01861 - 6.2e-6 * cos(l4 + p4 - 2*LPEJ - 3*G)
01862 + 4.8e-6 * cos(2*(l4 - w4));
01863
01864 R = 26.36273 * JupiterRadius * (1 + R);
01865
01866 T = (jd - 2433282.423) / 36525.0;
01867 P = 1.3966626*T + 3.088e-4*T*T;
01868 L += degToRad(P);
01869
01870 L += JupAscendingNode;
01871
01872 //Corrections for internal coordinate system
01873 B -= (PI/2);
01874 L += PI;
01875
01876 return Point3d(cos(L) * sin(B) * R,
01877 cos(B) * R,
01878 -sin(L) * sin(B) * R);
01879 };
|
|
|
Implements CachingOrbit. Definition at line 1886 of file customorbit.cpp. References BoundingRadiusSlack. 01887 {
01888 return 1890000 * BoundingRadiusSlack;
01889 };
|
|
|
Implements CachingOrbit. Definition at line 1881 of file customorbit.cpp. 01882 {
01883 return 16.689018;
01884 };
|
1.4.1