Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

JupiterOrbit Class Reference

Inheritance diagram for JupiterOrbit:

Inheritance graph
Collaboration diagram for JupiterOrbit:

Collaboration graph
List of all members.

Private Member Functions

Point3d computePosition (double jd) const
double getBoundingRadius () const
double getPeriod () const

Member Function Documentation

Point3d JupiterOrbit::computePosition double  jd  )  const [inline, private, virtual]
 

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     };

double JupiterOrbit::getBoundingRadius  )  const [inline, private, virtual]
 

Implements CachingOrbit.

Definition at line 919 of file customorbit.cpp.

References BoundingRadiusSlack.

00920     {
00921         return 8.16e+8 * BoundingRadiusSlack;
00922     };

double JupiterOrbit::getPeriod  )  const [inline, private, virtual]
 

Implements CachingOrbit.

Definition at line 914 of file customorbit.cpp.

00915     {
00916         return 4332.66855;
00917     };


The documentation for this class was generated from the following file:
Generated on Sat Jan 14 22:33:23 2006 for Celestia by  doxygen 1.4.1