You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
3.1 KiB
77 lines
3.1 KiB
/***************************************************************************
|
|
kspluto.h - Trinity Desktop Planetarium
|
|
-------------------
|
|
begin : Mon Sep 24 2001
|
|
copyright : (C) 2001 by Jason Harris
|
|
email : kstars@30doradus.org
|
|
***************************************************************************/
|
|
|
|
/***************************************************************************
|
|
* *
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
***************************************************************************/
|
|
|
|
#ifndef KSPLUTO_H
|
|
#define KSPLUTO_H
|
|
|
|
#include "ksasteroid.h"
|
|
|
|
/**@class KSPluto
|
|
*A subclass of KSAsteroid that represents the planet Pluto. Now, we
|
|
*are certainly NOT claiming that Pluto is an asteroid. However, the
|
|
*findPosition() routines of KSPlanet do not work properly for Pluto.
|
|
*We had been using a unique polynomial expansion for Pluto, but even
|
|
*this fails spectacularly for dates much more remote than a few
|
|
*hundred years. We consider it better to instead treat Pluto's
|
|
*orbit much more simply, using elliptical orbital elements as we do
|
|
*for asteroids. In order to improve the long-term accuracy of Pluto's
|
|
*position, we are also including linear approximations of the evolution
|
|
*of each orbital element with time.
|
|
*
|
|
*The orbital element data (including the time-derivatives) come from
|
|
*the NASA/JPL website: http://ssd.jpl.nasa.gov/elem_planets.html
|
|
*
|
|
*@short Provides necessary information about Pluto.
|
|
*@author Jason Harris
|
|
*@version 1.0
|
|
*/
|
|
|
|
class KStarsData;
|
|
class KSPluto : public KSAsteroid {
|
|
public:
|
|
/**Constructor. Calls KSAsteroid constructor with name="Pluto", and fills
|
|
*in orbital element data (which is hard-coded for now).
|
|
*@p kd pointer to the KStarsData object
|
|
*@p fn filename of Pluto's image
|
|
*@p pSize physical diameter of Pluto, in km
|
|
*/
|
|
KSPluto(KStarsData *kd, TQString fn="", double pSize=0);
|
|
|
|
/**Destructor (empty) */
|
|
virtual ~KSPluto();
|
|
|
|
protected:
|
|
/**A custom findPosition() function for Pluto. Computes the values of the
|
|
*orbital elements on the requested date, and calls KSAsteroid::findGeocentricPosition()
|
|
*using those elements.
|
|
*@param num time-dependent values for the desired date
|
|
*@param Earth planet Earth (needed to calculate geocentric coords)
|
|
*@return true if position was successfully calculated.
|
|
*/
|
|
virtual bool findGeocentricPosition( const KSNumbers *num, const KSPlanetBase *Earth=NULL );
|
|
|
|
private:
|
|
//The base orbital elements for J2000 (these don't change with time)
|
|
double a0, e0;
|
|
dms i0, w0, M0, N0;
|
|
|
|
//Rates-of-change for each orbital element
|
|
double a1, e1, i1, w1, M1, N1;
|
|
};
|
|
|
|
#endif
|