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

CachingOrbit Class Reference

#include <orbit.h>

Inheritance diagram for CachingOrbit:

Inheritance graph
Collaboration diagram for CachingOrbit:

Collaboration graph
List of all members.

Public Member Functions

 CachingOrbit ()
virtual Point3d computePosition (double jd) const =0
virtual double getBoundingRadius () const =0
virtual double getPeriod () const =0
Point3d positionAtTime (double jd) const
virtual void sample (double, double, int, OrbitSampleProc &proc) const

Private Attributes

Point3d lastPosition
double lastTime

Detailed Description

Custom orbit classes should be derived from CachingOrbit. The custom orbits can be expensive to compute, with more than 50 periodic terms. Celestia may need require position of a planet more than once per frame; in order to avoid redundant calculation, the CachingOrbit class saves the result of the last calculation and uses it if the time matches the cached time.

Definition at line 76 of file orbit.h.


Constructor & Destructor Documentation

CachingOrbit::CachingOrbit  )  [inline]
 

Definition at line 79 of file orbit.h.

References lastTime.

00079 : lastTime(1.0e-30) {};


Member Function Documentation

virtual Point3d CachingOrbit::computePosition double  jd  )  const [pure virtual]
 

Implemented in MercuryOrbit, VenusOrbit, EarthOrbit, LunarOrbit, MarsOrbit, JupiterOrbit, SaturnOrbit, UranusOrbit, NeptuneOrbit, PlutoOrbit, PhobosOrbit, DeimosOrbit, IoOrbit, EuropaOrbit, GanymedeOrbit, CallistoOrbit, MimasOrbit, EnceladusOrbit, TethysOrbit, DioneOrbit, RheaOrbit, TitanOrbit, HyperionOrbit, IapetusOrbit, PhoebeOrbit, UranianSatelliteOrbit, TritonOrbit, JPLEphOrbit, SampledOrbit, and VSOP87Orbit.

Referenced by positionAtTime().

virtual double CachingOrbit::getBoundingRadius  )  const [pure virtual]
 

Implements Orbit.

Implemented in MercuryOrbit, VenusOrbit, EarthOrbit, LunarOrbit, MarsOrbit, JupiterOrbit, SaturnOrbit, UranusOrbit, NeptuneOrbit, PlutoOrbit, PhobosOrbit, DeimosOrbit, IoOrbit, EuropaOrbit, GanymedeOrbit, CallistoOrbit, MimasOrbit, EnceladusOrbit, TethysOrbit, DioneOrbit, RheaOrbit, TitanOrbit, HyperionOrbit, IapetusOrbit, PhoebeOrbit, UranianSatelliteOrbit, TritonOrbit, JPLEphOrbit, SampledOrbit, and VSOP87Orbit.

virtual double CachingOrbit::getPeriod  )  const [pure virtual]
 

Implements Orbit.

Implemented in MercuryOrbit, VenusOrbit, EarthOrbit, LunarOrbit, MarsOrbit, JupiterOrbit, SaturnOrbit, UranusOrbit, NeptuneOrbit, PlutoOrbit, PhobosOrbit, DeimosOrbit, IoOrbit, EuropaOrbit, GanymedeOrbit, CallistoOrbit, MimasOrbit, EnceladusOrbit, TethysOrbit, DioneOrbit, RheaOrbit, TitanOrbit, HyperionOrbit, IapetusOrbit, PhoebeOrbit, UranianSatelliteOrbit, TritonOrbit, JPLEphOrbit, SampledOrbit, and VSOP87Orbit.

Point3d CachingOrbit::positionAtTime double  jd  )  const [virtual]
 

Implements Orbit.

Definition at line 232 of file orbit.cpp.

References computePosition(), lastPosition, and lastTime.

Referenced by SampledOrbit::sample(), and sample().

00233 {
00234     if (jd != lastTime)
00235     {
00236         lastTime = jd;
00237         lastPosition = computePosition(jd);
00238     }
00239     return lastPosition;
00240 }

void CachingOrbit::sample double  ,
double  ,
int  ,
OrbitSampleProc proc
const [virtual]
 

Implements Orbit.

Reimplemented in SampledOrbit.

Definition at line 243 of file orbit.cpp.

References positionAtTime().

00245 {
00246     double dt = t / (double) nSamples;
00247     for (int i = 0; i < nSamples; i++)
00248         proc.sample(start + dt * i, positionAtTime(start + dt * i));
00249 }


Member Data Documentation

Point3d CachingOrbit::lastPosition [mutable, private]
 

Definition at line 90 of file orbit.h.

Referenced by positionAtTime().

double CachingOrbit::lastTime [mutable, private]
 

Definition at line 91 of file orbit.h.

Referenced by CachingOrbit(), and positionAtTime().


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