Orbit.hpp   Orbit.hpp 
skipping to change at line 53 skipping to change at line 53
double parentRotObliquity, // = 0.0, double parentRotObliquity, // = 0.0,
double parentRotAscendingnode, // = 0.0 double parentRotAscendingnode, // = 0.0
double parentRotJ2000Longitude // = 0.0 double parentRotJ2000Longitude // = 0.0
); );
// Compute position for a specified Julian date and return coordinat es // Compute position for a specified Julian date and return coordinat es
// given in "dynamical equinox and ecliptic J2000" // given in "dynamical equinox and ecliptic J2000"
// which is the reference frame for VSOP87 // which is the reference frame for VSOP87
// In order to rotate to VSOP87 // In order to rotate to VSOP87
// parentRotObliquity and parentRotAscendingnode must be supplied. // parentRotObliquity and parentRotAscendingnode must be supplied.
void positionAtTimevInVSOP87Coordinates(const double JD, double* v) const; void positionAtTimevInVSOP87Coordinates(const double JDE, double* v) const;
// Original one // Original one
Vec3d positionAtTime(const double JD) const; Vec3d positionAtTime(const double JDE) const;
double getPeriod() const; double getPeriod() const;
double getBoundingRadius() const; double getBoundingRadius() const;
virtual void sample(double, double, int, OrbitSampleProc&) const; virtual void sample(double, double, int, OrbitSampleProc&) const;
private: private:
//! returns eccentric anomaly E for Mean anomaly M //! returns eccentric anomaly E for Mean anomaly M
double eccentricAnomaly(const double M) const; double eccentricAnomaly(const double M) const;
Vec3d positionAtE(const double E) const; Vec3d positionAtE(const double E) const;
double pericenterDistance; double pericenterDistance;
skipping to change at line 93 skipping to change at line 93
double argOfPerhelion, double argOfPerhelion,
double timeAtPerihelion, double timeAtPerihelion,
double orbitGoodDays, double orbitGoodDays,
double meanMotion, // GZ: for parabolic s, this is W/dt in Heafner's lettering double meanMotion, // GZ: for parabolic s, this is W/dt in Heafner's lettering
double parentRotObliquity, // Comets only have parent==sun, no need for these? Oh yes, VSOP/J2000 eq frames! double parentRotObliquity, // Comets only have parent==sun, no need for these? Oh yes, VSOP/J2000 eq frames!
double parentRotAscendingnode, double parentRotAscendingnode,
double parentRotJ2000Longitude double parentRotJ2000Longitude
); );
// Compute the orbit for a specified Julian day and return a "stella rium compliant" function // Compute the orbit for a specified Julian day and return a "stella rium compliant" function
// GZ: new optional variable: updateVelocityVector, true required fo r dust tail orientation! // GZ: new optional variable: updateVelocityVector, true required fo r dust tail orientation!
void positionAtTimevInVSOP87Coordinates(double JD, double* v, bool u pdateVelocityVector=true); void positionAtTimevInVSOP87Coordinates(double JDE, double* v, bool updateVelocityVector=true);
// updating the tails is a bit expensive. try not to overdo it. // updating the tails is a bit expensive. try not to overdo it.
bool getUpdateTails() const { return updateTails; } bool getUpdateTails() const { return updateTails; }
void setUpdateTails(const bool update){ updateTails=update; } void setUpdateTails(const bool update){ updateTails=update; }
//! return speed value [AU/d] last computed by positionAtTimevInVSOP 87Coordinates(JD, v, true) //! return speed value [AU/d] last computed by positionAtTimevInVSOP 87Coordinates(JDE, v, true)
Vec3d getVelocity() const { return rdot; } Vec3d getVelocity() const { return rdot; }
bool objectDateValid(const double JD) const { return (fabs(t0-JD)<or bitGood); } bool objectDateValid(const double JDE) const { return (fabs(t0-JDE)< orbitGood); }
private: private:
const double q; //! perihel distance const double q; //! perihel distance
const double e; //! eccentricity const double e; //! eccentricity
const double i; //! inclination const double i; //! inclination
const double Om; //! longitude of ascending node const double Om; //! longitude of ascending node
const double w; //! argument of perihel const double w; //! argument of perihel
const double t0; //! time of perihel, JDE const double t0; //! time of perihel, JDE
const double n; //! mean motion (for parabolic orbits: W/dt in Heaf ner's presentation) const double n; //! mean motion (for parabolic orbits: W/dt in Heaf ner's presentation)
Vec3d rdot; //! GZ: velocity vector. Caches velocity from last position computation, [AU/d] Vec3d rdot; //! GZ: velocity vector. Caches velocity from last position computation, [AU/d]
double rotateToVsop87[9]; //! Rotation matrix double rotateToVsop87[9]; //! Rotation matrix
skipping to change at line 132 skipping to change at line 132
// orbits can be expensive to compute, with more than 50 periodic terms. // 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 // Celestia may need require position of a Planet more than once per frame; in
// order to avoid redundant calculation, the CachingOrbit class saves the // order to avoid redundant calculation, the CachingOrbit class saves the
// result of the last calculation and uses it if the time matches the cache d // result of the last calculation and uses it if the time matches the cache d
// time. // time.
class CachingOrbit : public Orbit class CachingOrbit : public Orbit
{ {
public: public:
CachingOrbit() : lastTime(1.0e-30) {} //; CachingOrbit() : lastTime(1.0e-30) {} //;
virtual Vec3d computePosition(double jd) const = 0; virtual Vec3d computePosition(double JDE) const = 0;
virtual double getPeriod() const = 0; virtual double getPeriod() const = 0;
virtual double getBoundingRadius() const = 0; virtual double getBoundingRadius() const = 0;
Vec3d positionAtTime(double jd) const; Vec3d positionAtTime(double JDE) const;
virtual void sample(double, double, int, OrbitSampleProc& proc) cons t; virtual void sample(double, double, int, OrbitSampleProc& proc) cons t;
private: private:
mutable Vec3d lastPosition; mutable Vec3d lastPosition;
mutable double lastTime; mutable double lastTime;
}; };
#endif // _ORBIT_HPP_ #endif // _ORBIT_HPP_
 End of changes. 7 change blocks. 
7 lines changed or deleted 7 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/