// 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_MARS_HH #define _CASTOR_MARS_HH #include "planet.hh" namespace Castor { class Mars : public Planet { public: Mars(); ~Mars(); /*! \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); * \brief Calculate the visible magnitude of object */ 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& value); * \brief Get object information */ void get_info (std::list& 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_equ_sdiam (double JD); * \brief Calcaluate the equatorial semidiameter of object in arc seconds. */ double get_equ_sdiam (double JD); /*! \fn double get_pol_sdiam (double JD) * \brief Calcaluate the polar semidiameter of Jupiter in arc seconds. */ double get_pol_sdiam (double JD); /*! \fn double get_rst (double JD, struct ln_lnlat_posn * observer, struct ln_rst_time * rst); * \brief Calculate the time of rise, set and transit for object. */ int get_rst (double JD, struct ln_lnlat_posn * observer, struct ln_rst_time * rst); /*! \fn void get_helio_coords (double JD, struct ln_helio_posn * position); * \brief Calculate object's heliocentric coordinates */ void get_helio_coords (double JD, struct ln_helio_posn * position); /*! \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); /*! \fn double get_disk (double JD); * \brief Calculate the illuminated fraction of object's disk */ double get_disk (double JD); /*! \fn double get_phase (double JD); * \brief Calculate the phase angle of object. */ double get_phase (double JD); /*! \fn void get_rect_helio (double JD, struct ln_rect_posn * position); * \brief Calculate object rectangular heliocentric coordinates. */ void get_rect_helio (double JD, struct ln_rect_posn * position); /*! \fn set_render_jd (double JD); * \brief Set the cached JD for rendering */ void set_render_jd (double JD); }; } #endif