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

GanymedeOrbit Class Reference

Inheritance diagram for GanymedeOrbit:

Inheritance graph
Collaboration diagram for GanymedeOrbit:

Collaboration graph
List of all members.

Private Member Functions

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

Member Function Documentation

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

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

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

Implements CachingOrbit.

Definition at line 1749 of file customorbit.cpp.

References BoundingRadiusSlack.

01750     {
01751         return 1070000 * BoundingRadiusSlack;
01752     };

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

Implements CachingOrbit.

Definition at line 1744 of file customorbit.cpp.

01745     {
01746         return 7.154553;
01747     };


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