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

IoOrbit Class Reference

Inheritance diagram for IoOrbit:

Inheritance graph
Collaboration diagram for IoOrbit:

Collaboration graph
List of all members.

Private Member Functions

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

Member Function Documentation

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

Implements CachingOrbit.

Definition at line 1498 of file customorbit.cpp.

References B, ComputeGalileanElements(), cos(), degToRad(), JupAscendingNode, JupiterRadius, LPEJ, pfmod(), PI, and sin().

01499     {
01500     //Computation will yield latitude(L), longitude(B) and distance(R) relative to Jupiter
01501     double t;
01502     double l1, l2, l3, l4;
01503     double p1, p2, p3, p4;
01504     double w1, w2, w3, w4;
01505     double gamma, phi, psi, G, Gp;
01506     double sigma, L, B, R;
01507     double T, P;
01508 
01509     // Epoch for Galilean satellites is 1976.0 Aug 10
01510     t = jd - 2443000.5;
01511 
01512     ComputeGalileanElements(t,
01513                             l1, l2, l3, l4,
01514                             p1, p2, p3, p4,
01515                             w1, w2, w3, w4,
01516                             gamma, phi, psi, G, Gp);
01517 
01518     // Calculate periodic terms for longitude
01519     sigma = 0.47259*sin(2*(l1 - l2)) - 0.03478*sin(p3 - p4)
01520           + 0.01081*sin(l2 - 2*l3 + p3) + 7.38e-3*sin(phi)
01521           + 7.13e-3*sin(l2 - 2*l3 + p2) - 6.74e-3*sin(p1 + p3 - 2*LPEJ - 2*G)
01522           + 6.66e-3*sin(l2 - 2*l3 + p4) + 4.45e-3*sin(l1 - p3)
01523           - 3.54e-3*sin(l1 - l2) - 3.17e-3*sin(2*(psi - LPEJ))
01524           + 2.65e-3*sin(l1 - p4) - 1.86e-3*sin(G)
01525           + 1.62e-3*sin(p2 - p3) + 1.58e-3*sin(4*(l1 - l2))
01526           - 1.55e-3*sin(l1 - l3) - 1.38e-3*sin(psi + w3 - 2*LPEJ - 2*G)
01527           - 1.15e-3*sin(2*(l1 - 2*l2 + w2)) + 8.9e-4*sin(p2 - p4)
01528           + 8.5e-4*sin(l1 + p3 - 2*LPEJ - 2*G) + 8.3e-4*sin(w2 - w3)
01529           + 5.3e-4*sin(psi - w2);
01530     sigma = pfmod(sigma, 360.0);
01531     sigma = degToRad(sigma);
01532     L = l1 + sigma;
01533 
01534     // Calculate periodic terms for the tangent of the latitude
01535     B = 6.393e-4*sin(L - w1) + 1.825e-4*sin(L - w2)
01536       + 3.29e-5*sin(L - w3) - 3.11e-5*sin(L - psi)
01537       + 9.3e-6*sin(L - w4) + 7.5e-6*sin(3*L - 4*l2 - 1.9927*sigma + w2)
01538       + 4.6e-6*sin(L + psi - 2*LPEJ - 2*G);
01539     B = atan(B);
01540 
01541     // Calculate the periodic terms for distance
01542     R = -4.1339e-3*cos(2*(l1 - l2)) - 3.87e-5*cos(l1 - p3)
01543       - 2.14e-5*cos(l1 - p4) + 1.7e-5*cos(l1 - l2)
01544       - 1.31e-5*cos(4*(l1 - l2)) + 1.06e-5*cos(l1 - l3)
01545       - 6.6e-6*cos(l1 + p3 - 2*LPEJ - 2*G);
01546     R = 5.90569 * JupiterRadius * (1 + R);
01547 
01548     T = (jd - 2433282.423) / 36525.0;
01549     P = 1.3966626*T + 3.088e-4*T*T;
01550     L += degToRad(P);
01551 
01552     L += JupAscendingNode;
01553 
01554     // Corrections for internal coordinate system
01555     B -= (PI/2);
01556     L += PI;
01557 
01558     return Point3d(cos(L) * sin(B) * R,
01559                    cos(B) * R,
01560                    -sin(L) * sin(B) * R);
01561     };

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

Implements CachingOrbit.

Definition at line 1568 of file customorbit.cpp.

References BoundingRadiusSlack.

01569     {
01570         return 423329 * BoundingRadiusSlack;
01571     };

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

Implements CachingOrbit.

Definition at line 1563 of file customorbit.cpp.

01564     {
01565         return 1.769138;
01566     };


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