

Private Member Functions | |
| Point3d | computePosition (double jd) const |
| double | getBoundingRadius () const |
| double | getPeriod () const |
|
|
Implements CachingOrbit. Definition at line 819 of file customorbit.cpp. References auxJSun(), computePlanetCoords(), computePlanetElements(), cos(), degToRad(), distance(), gPlanetElements, PI, and sin(). 00820 {
00821 const int p = 3; //Planet 3
00822 vector<int> pList(1, p);
00823 double t, map;
00824 double dl, dr, dml, ds, dm, da, dhl, s;
00825 double dp;
00826 double x1, x2, x3, x4, x5, x6, x7;
00827 double sx3, cx3, s2x3, c2x3;
00828 double sx5, cx5, s2x5;
00829 double sx6;
00830 double sx7, cx7, s2x7, c2x7, s3x7, c3x7, s4x7, c4x7, c5x7;
00831 double eclLong, eclLat, distance; //heliocentric longitude, latitude, distance
00832
00833 dl = dr = dml = ds = dm = da = dhl = 0.0;
00834
00835 //Calculate the Julian centuries elapsed since 1900
00836 t = (jd - 2415020.0)/36525.0;
00837
00838 computePlanetElements(t, pList);
00839
00840 map = degToRad(gPlanetElements[p][0] - gPlanetElements[p][2]);
00841
00842 //Compute perturbations
00843 s = gPlanetElements[p][3];
00844 auxJSun(t, &x1, &x2, &x3, &x4, &x5, &x6);
00845 x7 = x3-x2;
00846 sx3 = sin(x3);
00847 cx3 = cos(x3);
00848 s2x3 = sin(2*x3);
00849 c2x3 = cos(2*x3);
00850 sx5 = sin(x5);
00851 cx5 = cos(x5);
00852 s2x5 = sin(2*x5);
00853 sx6 = sin(x6);
00854 sx7 = sin(x7);
00855 cx7 = cos(x7);
00856 s2x7 = sin(2*x7);
00857 c2x7 = cos(2*x7);
00858 s3x7 = sin(3*x7);
00859 c3x7 = cos(3*x7);
00860 s4x7 = sin(4*x7);
00861 c4x7 = cos(4*x7);
00862 c5x7 = cos(5*x7);
00863 dml = (3.31364e-1-(1.0281e-2+4.692e-3*x1)*x1)*sx5+
00864 (3.228e-3-(6.4436e-2-2.075e-3*x1)*x1)*cx5-
00865 (3.083e-3+(2.75e-4-4.89e-4*x1)*x1)*s2x5+
00866 2.472e-3*sx6+1.3619e-2*sx7+1.8472e-2*s2x7+6.717e-3*s3x7+
00867 2.775e-3*s4x7+6.417e-3*s2x7*sx3+
00868 (7.275e-3-1.253e-3*x1)*sx7*sx3+
00869 2.439e-3*s3x7*sx3-(3.5681e-2+1.208e-3*x1)*sx7*cx3;
00870 dml += -3.767e-3*c2x7*sx3-(3.3839e-2+1.125e-3*x1)*cx7*sx3-
00871 4.261e-3*s2x7*cx3+
00872 (1.161e-3*x1-6.333e-3)*cx7*cx3+
00873 2.178e-3*cx3-6.675e-3*c2x7*cx3-2.664e-3*c3x7*cx3-
00874 2.572e-3*sx7*s2x3-3.567e-3*s2x7*s2x3+2.094e-3*cx7*c2x3+
00875 3.342e-3*c2x7*c2x3;
00876 dml = degToRad(dml);
00877 ds = (3606+(130-43*x1)*x1)*sx5+(1289-580*x1)*cx5-6764*sx7*sx3-
00878 1110*s2x7*sx3-224*s3x7*sx3-204*sx3+(1284+116*x1)*cx7*sx3+
00879 188*c2x7*sx3+(1460+130*x1)*sx7*cx3+224*s2x7*cx3-817*cx3+
00880 6074*cx3*cx7+992*c2x7*cx3+
00881 508*c3x7*cx3+230*c4x7*cx3+108*c5x7*cx3;
00882 ds += -(956+73*x1)*sx7*s2x3+448*s2x7*s2x3+137*s3x7*s2x3+
00883 (108*x1-997)*cx7*s2x3+480*c2x7*s2x3+148*c3x7*s2x3+
00884 (99*x1-956)*sx7*c2x3+490*s2x7*c2x3+
00885 158*s3x7*c2x3+179*c2x3+(1024+75*x1)*cx7*c2x3-
00886 437*c2x7*c2x3-132*c3x7*c2x3;
00887 ds *= 1e-7;
00888 dp = (7.192e-3-3.147e-3*x1)*sx5-4.344e-3*sx3+
00889 (x1*(1.97e-4*x1-6.75e-4)-2.0428e-2)*cx5+
00890 3.4036e-2*cx7*sx3+(7.269e-3+6.72e-4*x1)*sx7*sx3+
00891 5.614e-3*c2x7*sx3+2.964e-3*c3x7*sx3+3.7761e-2*sx7*cx3+
00892 6.158e-3*s2x7*cx3-
00893 6.603e-3*cx7*cx3-5.356e-3*sx7*s2x3+2.722e-3*s2x7*s2x3+
00894 4.483e-3*cx7*s2x3-2.642e-3*c2x7*s2x3+4.403e-3*sx7*c2x3-
00895 2.536e-3*s2x7*c2x3+5.547e-3*cx7*c2x3-2.689e-3*c2x7*c2x3;
00896 dm = dml-(degToRad(dp)/s);
00897 da = 205*cx7-263*cx5+693*c2x7+312*c3x7+147*c4x7+299*sx7*sx3+
00898 181*c2x7*sx3+204*s2x7*cx3+111*s3x7*cx3-337*cx7*cx3-
00899 111*c2x7*cx3;
00900 da *= 1e-6;
00901
00902 computePlanetCoords(p, map, da, dhl, dl, dm, dml, dr, ds,
00903 eclLong, eclLat, distance);
00904
00905 //Corrections for internal coordinate system
00906 eclLat -= (PI/2);
00907 eclLong += PI;
00908
00909 return Point3d(cos(eclLong) * sin(eclLat) * distance,
00910 cos(eclLat) * distance,
00911 -sin(eclLong) * sin(eclLat) * distance);
00912 };
|
|
|
Implements CachingOrbit. Definition at line 919 of file customorbit.cpp. References BoundingRadiusSlack. 00920 {
00921 return 8.16e+8 * BoundingRadiusSlack;
00922 };
|
|
|
Implements CachingOrbit. Definition at line 914 of file customorbit.cpp. 00915 {
00916 return 4332.66855;
00917 };
|
1.4.1