Go to the documentation of this file.
61 virtual void Update_JPL(
double new_date=-1.0e30)
const;
62 virtual void Update_SOFA(
double new_date=-1.0e30)
const;
95 double semi_major_axis_au_per_cent=0.0);
97 double eccentricity_per_cent=0.0);
99 double inclination_per_cent=0.0,
102 double mean_longitude_per_cent=0.0,
105 double perihelion_lon_per_cent=0.0,
108 double ascending_node_lon_per_cent=0.0,
110 virtual void SetExtraTerms(
double b,
double c,
double s,
double f);
146 double value_derivative_,
149 double perihelion_long_deg,
153 double EccentricAnomoly(
double& M,
double& e,
double &En,
double& del_E)
const;
197 double E_tol = 1.0e-6 ;
443 return value + value_derivative_*time;
CEPlanetAlgo Algorithm(void) const
virtual void SetSemiMajorAxis_AU(double semi_major_axis_au, double semi_major_axis_au_per_cent=0.0)
Set the semi-major axis (in AU) and it's derivative.
virtual void SetInclination(double inclination, double inclination_per_cent=0.0, CEAngleType angle_type=CEAngleType::DEGREES)
Set the inclination angle of the planets orbit.
std::vector< double > PositionICRS_Obs(const CEDate &date) const
Get the observed position on a given date.
void SetMeanRadius_m(double new_radius)
static CEPlanet Uranus()
Returns an object representing Uranus.
virtual void SetPerihelionLongitude(double perihelion_lon, double perihelion_lon_per_cent=0.0, CEAngleType angle_type=CEAngleType::DEGREES)
Set the longitude at perihelion.
CESkyCoordType
The following enum specifies what coordinates this object represents.
RA, Dec (referenced at the center of the Earth)
void copy_members(const CEPlanet &other)
Copy data members from another CEPlanet object.
CEPlanet & operator=(const CEPlanet &other)
Copy assignment operator.
static CEPlanet Mercury()
Returns an object representing Mercury.
static CEPlanet Pluto()
Returns an object representing Pluto.
static CEPlanet Mars()
Returns an object representing Mars.
static CEPlanet EMBarycenter()
Returns an object representing the Earth-Moon barycenter.
static CEPlanet Neptune()
Returns an object representing Neptune.
double c()
speed of light (meters/second)
double sofa_planet_id_
Sofa planet id (note: 3.5 implies the earth-center which uses a different method than the other plane...
double albedo_
Albedo (0 -> 1)
double perihelion_lon_deg_
w - Longitude of perihelion (radians)
void SetAlgorithm(const CEPlanetAlgo &new_algo)
Set the desired planet computation algorithm.
Use methods included in sofa software.
double cached_jd_
Julian date of the current coordinates.
double GetXICRS()
Return X distance from solar system barycenter (AU)
virtual void SetReference(CEPlanet *reference)
Set the reference object for computing more accurate RA,Dec values.
std::vector< double > vel_icrs_
XYZ velocity (AU/day) relative to solar system barycenter.
virtual ~CEPlanet()
Destructor.
static CEPlanet Earth()
Returns an object representing Earth.
virtual CESkyCoord ObservedCoords(const CEDate &date, const CEObserver &observer) const
Get the observed coordinates for a given observer/date.
void SetSofaID(const double &new_id)
Set the sofa planet id (note, only values from 1-8 are acceptable)
void free_members(void)
Free allocated memory.
std::vector< double > VelocityICRS(void) const
Vector of velocities relative to solar system barycenter (AU/day)
double ascending_node_lon_deg_per_cent_
double EccentricAnomoly(double &M, double &e, double &En, double &del_E) const
Recursive method for computing the eccentric anomoly.
virtual void SetMeanLongitude(double mean_longitude, double mean_longitude_per_cent=0.0, CEAngleType angle_type=CEAngleType::DEGREES)
Set the mean longitude.
Use Keplerian algorithm outlined by JPL.
double ComputeElement(double value, double value_derivative_, double time) const
Compute current value of a given element.
virtual double YCoordinate_Rad(double new_date=-1.0e30) const
static CEAngle Rad(const double &angle)
Return angle constructed from a radians angle.
void UpdatePosition(const double &jd) const
Recomputes the spatial position for a planet based on chosen algorithm.
virtual void UpdateCoordinates(double new_date=-1.0e30) const
Recomputes the coordinates of the planet if the date has changed from the last time the coordinates w...
double inclination_deg_
I - inclination in radians.
static CEPlanet Venus()
Returns an object representing Venus.
double semi_major_axis_au_per_cent_
virtual double YCoordinate_Deg(double new_date=-1.0e30) const
double radius_m_
Radius (in meters)
double perihelion_long_deg_per_cent_
double GetVxICRS()
X velocity relative to solar system barycenter (AU/day)
double GetYICRS()
Y distance from solar system barycenter (AU)
void SetAlbedo(double new_albedo)
double semi_major_axis_au_
a - Semi major axis in Astronomical Units (AU)
double eccentricity_
e - Eccentricity
static CEPlanet Saturn()
Returns an object representing Saturn.
CEPlanet()
Default constructor.
double eccentricity_per_cent_
void SetMass_kg(double new_mass)
double mean_longitude_deg_per_cent_
virtual void Update_JPL(double new_date=-1.0e30) const
Recomputes the coordinates of the planet based on the date using the keplerian method outlined by JPL...
virtual void Update_SOFA(double new_date=-1.0e30) const
Recomputes the coordinates of the planet based on the date using the methods included in the sofa pac...
double MeanAnomaly(double mean_longitude_deg, double perihelion_long_deg, double T=0.0) const
Computes the mean anomaly.
double mass_kg_
Mass (kilograms)
void init_members(void)
Initialize data members.
std::vector< double > PositionICRS(void) const
Z distance from solar system barycenter (AU)
CEPlanetAlgo algorithm_type_
virtual void SetTolerance(double tol=1.0e-6)
Set the tolerance for the eccentric anomoly recursive formula.
virtual double XCoordinate_Rad(double new_date=-1.0e30) const
double GetVyICRS()
Y velocity relative to solar system barycenter (AU/day)
virtual double EarthDist_AU(const CEDate &date)
Return the distance to Earth for this planet at a given UTC date.
static CEPlanet Jupiter()
Returns an object representing Jupiter.
virtual double XCoordinate_Deg(double new_date=-1.0e30) const
static CEAngle Deg(const double &angle)
Return angle (radians) constructed from a degree angle.
virtual void SetAscendingNodeLongitude(double ascending_node_lon, double ascending_node_lon_per_cent=0.0, CEAngleType angle_type=CEAngleType::DEGREES)
Set the longitude of the ascending node.
double ascending_node_lon_deg_
Omega - Longitude of ascending node (radians)
double inclination_deg_per_cent_
double GetVzICRS()
Z velocity relative to solar system barycenter (AU/day)
std::vector< double > pos_icrs_
XYZ position (AU) relative to solar system barycenter.
double mean_longitude_deg_
L - Mean longitude (radians)
virtual CEAngle XCoord(const CEDate &jd=CppEphem::julian_date_J2000()) const
Return x coordinate at given Julian date.
virtual CEAngle YCoord(const CEDate &jd=CppEphem::julian_date_J2000()) const
Return y coordinate at given Julian date.
double GetZICRS()
Z distance from solar system barycenter (AU)
virtual void SetExtraTerms(double b, double c, double s, double f)
virtual void SetEccentricity(double eccentricity, double eccentricity_per_cent=0.0)
Set the eccentricity.