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

EuropaOrbit Class Reference

Inheritance diagram for EuropaOrbit:

Inheritance graph
Collaboration diagram for EuropaOrbit:

Collaboration graph
List of all members.

Private Member Functions

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

Member Function Documentation

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

Implements CachingOrbit.

Definition at line 1576 of file customorbit.cpp.

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

01577     {
01578     // Computation will yield latitude(L), longitude(B) and distance(R) relative to Jupiter
01579     double t;
01580     double l1, l2, l3, l4;
01581     double p1, p2, p3, p4;
01582     double w1, w2, w3, w4;
01583     double gamma, phi, psi, G, Gp;
01584     double sigma, L, B, R;
01585     double T, P;
01586 
01587     // Epoch for Galilean satellites is 1976 Aug 10
01588     t = jd - 2443000.5;
01589 
01590     ComputeGalileanElements(t,
01591                             l1, l2, l3, l4,
01592                             p1, p2, p3, p4,
01593                             w1, w2, w3, w4,
01594                             gamma, phi, psi, G, Gp);
01595 
01596     // Calculate periodic terms for longitude
01597     sigma = 1.06476*sin(2*(l2 - l3)) + 0.04256*sin(l1 - 2*l2 + p3)
01598           + 0.03581*sin(l2 - p3) + 0.02395*sin(l1 - 2*l2 + p4)
01599           + 0.01984*sin(l2 - p4) - 0.01778*sin(phi)
01600           + 0.01654*sin(l2 - p2) + 0.01334*sin(l2 - 2*l3 + p2)
01601           + 0.01294*sin(p3 - p4) - 0.01142*sin(l2 - l3)
01602           - 0.01057*sin(G) - 7.75e-3*sin(2*(psi - LPEJ))
01603           + 5.24e-3*sin(2*(l1 - l2)) - 4.6e-3*sin(l1 - l3)
01604           + 3.16e-3*sin(psi - 2*G + w3 - 2*LPEJ) - 2.03e-3*sin(p1 + p3 - 2*LPEJ - 2*G)
01605           + 1.46e-3*sin(psi - w3) - 1.45e-3*sin(2*G)
01606           + 1.25e-3*sin(psi - w4) - 1.15e-3*sin(l1 - 2*l3 + p3)
01607           - 9.4e-4*sin(2*(l2 - w2)) + 8.6e-4*sin(2*(l1 - 2*l2 + w2))
01608           - 8.6e-4*sin(5*Gp - 2*G + 0.9115) - 7.8e-4*sin(l2 - l4)
01609           - 6.4e-4*sin(3*l3 - 7*l4 + 4*p4) + 6.4e-4*sin(p1 - p4)
01610           - 6.3e-4*sin(l1 - 2*l3 + p4) + 5.8e-4*sin(w3 - w4)
01611           + 5.6e-4*sin(2*(psi - LPEJ - G)) + 5.6e-4*sin(2*(l2 - l4))
01612           + 5.5e-4*sin(2*(l1 - l3)) + 5.2e-4*sin(3*l3 - 7*l4 + p3 +3*p4)
01613           - 4.3e-4*sin(l1 - p3) + 4.1e-4*sin(5*(l2 - l3))
01614           + 4.1e-4*sin(p4 - LPEJ) + 3.2e-4*sin(w2 - w3)
01615           + 3.2e-4*sin(2*(l3 - G - LPEJ));
01616     sigma = pfmod(sigma, 360.0);
01617     sigma = degToRad(sigma);
01618     L = l2 + sigma;
01619 
01620     // Calculate periodic terms for the tangent of the latitude
01621     B = 8.1004e-3*sin(L - w2) + 4.512e-4*sin(L - w3)
01622       - 3.284e-4*sin(L - psi) + 1.160e-4*sin(L - w4)
01623       + 2.72e-5*sin(l1 - 2*l3 + 1.0146*sigma + w2) - 1.44e-5*sin(L - w1)
01624       + 1.43e-5*sin(L + psi - 2*LPEJ - 2*G) + 3.5e-6*sin(L - psi + G)
01625       - 2.8e-6*sin(l1 - 2*l3 + 1.0146*sigma + w3);
01626     B = atan(B);
01627 
01628     // Calculate the periodic terms for distance
01629     R = 9.3848e-3*cos(l1 - l2) - 3.116e-4*cos(l2 - p3)
01630       - 1.744e-4*cos(l2 - p4) - 1.442e-4*cos(l2 - p2)
01631       + 5.53e-5*cos(l2 - l3) + 5.23e-5*cos(l1 - l3)
01632       - 2.9e-5*cos(2*(l1 - l2)) + 1.64e-5*cos(2*(l2 - w2))
01633       + 1.07e-5*cos(l1 - 2*l3 + p3) - 1.02e-5*cos(l2 - p1)
01634       - 9.1e-6*cos(2*(l1 - l3));
01635     R = 9.39657 * JupiterRadius * (1 + R);
01636 
01637     T = (jd - 2433282.423) / 36525.0;
01638     P = 1.3966626*T + 3.088e-4*T*T;
01639     L += degToRad(P);
01640 
01641     L += JupAscendingNode;
01642 
01643     // Corrections for internal coordinate system
01644     B -= (PI/2);
01645     L += PI;
01646 
01647     return Point3d(cos(L) * sin(B) * R,
01648                    cos(B) * R,
01649                    -sin(L) * sin(B) * R);
01650     };

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

Implements CachingOrbit.

Definition at line 1657 of file customorbit.cpp.

References BoundingRadiusSlack.

01658     {
01659         return 678000 * BoundingRadiusSlack;
01660     };

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

Implements CachingOrbit.

Definition at line 1652 of file customorbit.cpp.

01653     {
01654         return 3.5511810791;
01655     };


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