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

TitanOrbit Class Reference

Inheritance diagram for TitanOrbit:

Inheritance graph
Collaboration diagram for TitanOrbit:

Collaboration graph
List of all members.

Private Member Functions

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

Member Function Documentation

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

Implements CachingOrbit.

Definition at line 2185 of file customorbit.cpp.

References ComputeSaturnianElements(), cosD(), OuterSaturnMoonParams(), radToDeg(), SaturnMoonPosition(), sinD(), sqrt(), and square().

02186     {
02187         // Computation will yield latitude(L), longitude(B) and distance(R)
02188         // relative to Saturn.
02189         double t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11;
02190         double W0, W1, W2, W3, W4, W5, W6, W7, W8;
02191 
02192         ComputeSaturnianElements(jd,
02193                                  t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11,
02194                                  W0, W1, W2, W3, W4, W5, W6, W7, W8);
02195         double e1 = 0.05589 - 0.000346 * t7;
02196 
02197         double L = 261.1582 + 22.57697855 * t4 + 0.074025 * sinD(W3);
02198         double i_ = 27.45141 + 0.295999 * cosD(W3);
02199         double Om_ = 168.66925 + 0.628808 * sinD(W3);
02200         double a1 = sinD(W7) * sinD(Om_ - W8);
02201         double a2 = cosD(W7) * sinD(i_) - sinD(W7) * cosD(i_) * cosD(Om_ - W8);
02202         double g0 = 102.8623;
02203         double psi = radToDeg(atan2(a1, a2));
02204         double s = sqrt(square(a1) + square(a2));
02205         double g = W4 - Om_ - psi;
02206 
02207         // Three successive approximations will always be enough
02208         double om;
02209         for (int n = 0; n < 3; n++)
02210         {
02211             om = W4 + 0.37515 * (sinD(2 * g) - sinD(2 * g0));
02212             g = om - Om_ - psi;
02213         }
02214 
02215         double e_ = 0.029092 + 0.00019048 * (cosD(2 * g) - cosD(2 * g0));
02216         double q = 2 * (W5 - om);
02217         double b1 = sinD(i_) * sinD(Om_ - W8);
02218         double b2 = cosD(W7) * sinD(i_) * cosD(Om_ - W8) - sinD(W7) * cosD(i_);
02219         double theta = radToDeg(atan2(b1, b2)) + W8;
02220         double e = e_ + 0.002778797 * e_ * cosD(q);
02221         double p = om + 0.159215 * sinD(q);
02222         double u = 2 * W5 - 2 * theta + psi;
02223         double h = 0.9375 * square(e_) * sinD(q) + 0.1875 * square(s) * sinD(2 * (W5 - theta));
02224         double lam_ = L - 0.254744 * (e1 * sinD(W6) + 0.75 * square(e1) * sinD(2 * W6) + h);
02225         double i = i_ + 0.031843 * s * cosD(u);
02226         double Om = Om_ + (0.031843 * s * sinD(u)) / sinD(i_);
02227         double a = 20.216193;
02228 
02229         double lam, gam, r, w;
02230         OuterSaturnMoonParams(a, e, i, Om, lam_ - p, lam_,
02231                               lam, gam, r, w);
02232 
02233         return SaturnMoonPosition(lam, gam, w, r);
02234     };

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

Implements CachingOrbit.

Definition at line 2241 of file customorbit.cpp.

References BoundingRadiusSlack.

02242     {
02243         return 1260000 * BoundingRadiusSlack;
02244     };

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

Implements CachingOrbit.

Definition at line 2236 of file customorbit.cpp.

02237     {
02238         return 15.94544758;
02239     };


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