// 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.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
// Copyright 2003 Liam Girdwood
#ifndef _CASTOR_ASTEROID_HH
#define _CASTOR_ASTEROID_HH
#include "near_object.hh"
namespace Castor
{
class Asteroid : public NearObject
{
public:
Asteroid();
Asteroid(Glib::ustring& name, Glib::ustring& id, struct ln_ell_orbit& orbit,
double H, double A, double G);
~Asteroid();
/*! \fn void get_posn(double& ra, double& dec);
* \brief Get object Right Ascension and Declination
*/
void get_equ_posn(double JD, double& ra, double& dec);
/*! \fn void get_hrz_posn (double JD, ln_lnlat_posn* observer, ln_hrz_posn* posn);
* \brief Get object horizontal position
*/
void get_hrz_posn (double JD, ln_lnlat_posn* observer, ln_hrz_posn* posn);
/*! \fn void get_rst_time (double JD, ln_lnlat_posn* observer, ln_rst_time* time);
* \brief Get object rise, transit and set time.
*/
void get_rst_time (double JD, ln_lnlat_posn* observer, ln_rst_time* time);
/*! \fn double get_mag(double JD) = 0;
* \brief Get object Magnitude
*/
double get_mag(double JD);
/*! \fn void get_id(std::string& id);
* \brief Get object identification number.
*/
void get_id(std::string& id);
/*! \fn void get_name(std::string& name);
* \brief Get object name.
*/
void get_name(std::string& name);
/*! \fn virtual void get_info (std::list<Glib::ustring>& value);
* \brief Get object information
*/
void get_info (std::list<Glib::ustring>& value);
/*! \fn void render(double x, double y, double mag_max, Gnome::Canvas::Group& group);
* \brief Render object
*/
void render(double x, double y, double mag_max, Gnome::Canvas::Group& group, bool bright, double ppd = 0);
/*! \fn double get_earth_dist (double JD);
* \brief Calculate the distance between object and the Earth.
*/
double get_earth_dist (double JD);
/*! \fn double get_sun_dist (double JD);
* \brief Calculate the distance between object and the Sun.
*/
double get_sun_dist (double JD);
void set_render_jd (double JD);
/*! \fn double get_sdiam_km ()
* \brief Calcaluate the semidiameter of an asteroid in km.
*/
double get_sdiam_km ();
/*! \fn double get_sdiam_arc (double JD);
* \brief Calcaluate the semidiameter of an asteroid in arc seconds.
*/
double get_sdiam_arc (double JD);
private:
struct ln_ell_orbit m_orbit;
double m_H;
double m_A;
double m_G;
Glib::ustring m_name;
};
}
#endif
syntax highlighted by Code2HTML, v. 0.9.1