libnova.h | libnova.h | |||
---|---|---|---|---|
skipping to change at line 18 | skipping to change at line 18 | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License for more details. | GNU General Public License for more details. | |||
You should have received a copy of the GNU General Public License | You should have received a copy of the GNU General Public License | |||
along with this program; if not, write to the Free Software | along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
Copyright (C) 2000 Liam Girdwood <liam@nova-ioe.org> | Copyright (C) 2000 Liam Girdwood <liam@nova-ioe.org> | |||
*/ | */ | |||
/*! \mainpage libnova Astronomical Calculation Library | /*! \mainpage libnova | |||
* Celestial Mechanics and Astronomical Calculation Library | ||||
* | * | |||
* \section intro Introduction | * \section intro Introduction | |||
* libnova is a general purpose, double precision, astronomical calculation library. | * libnova is a general purpose, double precision, celestial mechanics and a stronomical calculation library. | |||
* | * | |||
* The intended audience of libnova is C / C++ programmers, astronomers and anyone else interested in calculating positions of astronomical objects. | * The intended audience of libnova is C / C++ programmers, astronomers and anyone else interested in calculating positions of astronomical objects or celestial mechanics. | |||
* libnova is the calculation engine used by the <A href="http://nova.sf.net ">Nova</A> project and most importantly, is free software. | * libnova is the calculation engine used by the <A href="http://nova.sf.net ">Nova</A> project and most importantly, is free software. | |||
* | * | |||
* \section features Features | * \section features Features | |||
* The current version of libnova can calculate: | * The current version of libnova can calculate: | |||
* | * | |||
* - Aberration | * - Aberration | |||
* - Nutation | * - Nutation | |||
* - Apparent Position | * - Apparent Position | |||
* - Dynamical Time | * - Dynamical Time | |||
* - Julian Day | * - Julian Day | |||
* - Precession | * - Precession | |||
* - Proper Motion | * - Proper Motion | |||
* - Sidereal Time | * - Sidereal Time | |||
* - Solar Coordinates (using VSOP87) | * - Solar Coordinates (using VSOP87) | |||
* - Coordinate Transformations | * - Coordinate Transformations | |||
* - Planetary Positions (Mercury - Neptune using VSOP87) | * - Planetary Positions (Mercury - Neptune using VSOP87) | |||
* - Planetary Magnitude, illuminated disk and phase angle. | * - Planetary Magnitude, illuminated disk and phase angle. | |||
* - Lunar Position (using ELP82), phase angle. | * - Lunar Position (using ELP82), phase angle. | |||
* - Elliptic Motion of bodies (Asteroid + Comet positional and orbit data) | * - Elliptic Motion of bodies (Asteroid + Comet positional and orbit data) | |||
* - Asteroid + Comet magnitudes | * - Asteroid + Comet magnitudes | |||
* - Parabolic Motion of bodies | * - Parabolic Motion of bodies (Comet positional data) | |||
* - Orbit velocities and lengths | * - Orbit velocities and lengths | |||
* - Atmospheric refraction | * - Atmospheric refraction | |||
* - Rise, Set and Transit times. | * - Rise, Set and Transit times. | |||
* - Semidiameters of the Sun, Moon, Planets and asteroids. | * - Semidiameters of the Sun, Moon, Planets and asteroids. | |||
* | * | |||
* \section docs Documentation | * \section docs Documentation | |||
* API documentation for libnova is included in the source. It can also be f ound in this website and an offline tarball is available <A href="http://li bnova.sf.net/libnovadocs.tar.gz">here</A>. | * API documentation for libnova is included in the source. It can also be f ound in this website and an offline tarball is available <A href="http://li bnova.sf.net/libnovadocs.tar.gz">here</A>. | |||
* | * | |||
* \section download Download | * \section download Download | |||
* The latest released version of libnova is 0.5.0 and was released on the 1 3th Oct 2002. | * The latest released version of libnova is 0.6.0 and was released on the 2 6th Jan 2003. | |||
* It is available for download <A href="http://sf.net/project/showfiles.php ?group_id=57697">here.</A> | * It is available for download <A href="http://sf.net/project/showfiles.php ?group_id=57697">here.</A> | |||
* | * | |||
* \section cvs CVS | * \section cvs CVS | |||
* The latest CVS version of libnova is available via CVS <A href="http://sf .net/cvs/?group_id=57697">here.</A> | * The latest CVS version of libnova is available via CVS <A href="http://sf .net/cvs/?group_id=57697">here.</A> | |||
* | * | |||
* \section licence Licence | * \section licence Licence | |||
* libnova is released under the <A href="http://www.gnu.org">GNU</A> LGPL. | * libnova is released under the <A href="http://www.gnu.org">GNU</A> LGPL. | |||
* | * | |||
* \section help Help | * \section help Help | |||
* If you are interested in helping in the future development of libnova, th en please get in touch. | * If you are interested in helping in the future development of libnova, th en please get in touch. | |||
* Currently, we are needing help in the folowing areas. | * Currently, we are needing help in the folowing areas. | |||
* - Documentation. (Not just API reference, but also astronomy info for nov ice users) | * - Documentation. (Not just API reference, but also astronomy info for nov ice users) | |||
* - Programming (in C) astronomical solutions or algorithms. | * - Programming (in C) astronomical solutions or algorithms. | |||
* - Algorithms and Solutions. | * - Algorithms and Solutions. | |||
* - Website. | * - Website and logo. | |||
* | * | |||
* \section contact Contact | * \section contact Contact | |||
* If you would like further information, then please contact me <A href="ma ilto:liam@nova-ioe.org">here</A> | * If you would like further information, then please contact me <A href="ma ilto:liam@nova-ioe.org">here</A> | |||
* | * | |||
* Liam Girdwood | * Liam Girdwood | |||
* | * | |||
* \section thanks Thanks | * \section thanks Thanks | |||
* Thanks to Jean Meeus for most of the algorithms used in this library. | * Thanks to Jean Meeus for most of the algorithms used in this library. | |||
* From his book "Astronomical Algorithms". | * From his book "Astronomical Algorithms". | |||
* | * | |||
skipping to change at line 175 | skipping to change at line 176 | |||
}; | }; | |||
/*! \struct lnh_lnlat_posn | /*! \struct lnh_lnlat_posn | |||
** \brief Ecliptical (or celestial) Latitude and Longitude. | ** \brief Ecliptical (or celestial) Latitude and Longitude. | |||
* | * | |||
* Human readable Ecliptical (or celestial) Longitude and Latitude. | * Human readable Ecliptical (or celestial) Longitude and Latitude. | |||
*/ | */ | |||
struct lnh_lnlat_posn | struct lnh_lnlat_posn | |||
{ | { | |||
struct ln_dms lng; /*!< longitude. Object longitude */ | struct ln_dms lng; /*!< longitude. Object longitude. | |||
Negative East of Greenwich, | ||||
positive West of Greenwich */ | ||||
struct ln_dms lat; /*!< latitude. Object latitude */ | struct ln_dms lat; /*!< latitude. Object latitude */ | |||
}; | }; | |||
/*! \struct ln_equ_posn | /*! \struct ln_equ_posn | |||
** \brief Equatorial Coordinates. | ** \brief Equatorial Coordinates. | |||
* | * | |||
* The Right Ascension and Declination of an object. | * The Right Ascension and Declination of an object. | |||
* | * | |||
* Angles are expressed in degrees. | * Angles are expressed in degrees. | |||
*/ | */ | |||
skipping to change at line 217 | skipping to change at line 220 | |||
/*! \struct ln_lnlat_posn | /*! \struct ln_lnlat_posn | |||
** \brief Ecliptical (or celestial) Longitude and Latitude. | ** \brief Ecliptical (or celestial) Longitude and Latitude. | |||
* | * | |||
* The Ecliptical (or celestial) Latitude and Longitude of and object. | * The Ecliptical (or celestial) Latitude and Longitude of and object. | |||
* | * | |||
* Angles are expressed in degrees. | * Angles are expressed in degrees. | |||
*/ | */ | |||
struct ln_lnlat_posn | struct ln_lnlat_posn | |||
{ | { | |||
double lng; /*!< longitude. Object longitude */ | double lng; /*!< longitude. Object longitude. | |||
Negative East of Greenwinch, | ||||
positive West of Greenwinch */ | ||||
double lat; /*!< latitude. Object latitude */ | double lat; /*!< latitude. Object latitude */ | |||
}; | }; | |||
/*! \struct ln_helio_posn | /*! \struct ln_helio_posn | |||
* \brief Heliocentric position | * \brief Heliocentric position | |||
* | * | |||
* A heliocentric position is an objects position relative to the | * A heliocentric position is an objects position relative to the | |||
* centre of the Sun. | * centre of the Sun. | |||
* | * | |||
* Angles are expressed in degrees. | * Angles are expressed in degrees. | |||
skipping to change at line 618 | skipping to change at line 623 | |||
* \brief Calculate equatorial coordinates from horizontal coordinates | * \brief Calculate equatorial coordinates from horizontal coordinates | |||
* \ingroup transform | * \ingroup transform | |||
*/ | */ | |||
/* Pg 89 */ | /* Pg 89 */ | |||
void get_equ_from_hrz | void get_equ_from_hrz | |||
(struct ln_hrz_posn *object, | (struct ln_hrz_posn *object, | |||
struct ln_lnlat_posn * observer, | struct ln_lnlat_posn * observer, | |||
double JD, | double JD, | |||
struct ln_equ_posn * position); | struct ln_equ_posn * position); | |||
/*! \fn void get_rect_from_helio (struct ln_helio_posn *object, double JD, struct ln_geo_posn * position); | /*! \fn void get_rect_from_helio (struct ln_helio_posn *object, double JD, struct ln_rect_posn * position); | |||
* \brief Calculate geocentric coordinates from heliocentric coordinates | * \brief Calculate geocentric coordinates from heliocentric coordinates | |||
* \ingroup transform | * \ingroup transform | |||
*/ | */ | |||
/* Pg ?? */ | /* Pg ?? */ | |||
void get_rect_from_helio | void get_rect_from_helio | |||
(struct ln_helio_posn *object, | (struct ln_helio_posn *object, | |||
double JD, | double JD, | |||
struct ln_rect_posn * position); | struct ln_rect_posn * position); | |||
/*! \fn void get_ecl_from_rect (struct ln_rect_posn * rect, struct ln_lnlat _posn * posn) | /*! \fn void get_ecl_from_rect (struct ln_rect_posn * rect, struct ln_lnlat _posn * posn) | |||
skipping to change at line 807 | skipping to change at line 812 | |||
struct ln_equ_posn * position); | struct ln_equ_posn * position); | |||
/*! \fn void get_ecl_solar_coords (double JD, struct ln_lnlat_posn * positi on); | /*! \fn void get_ecl_solar_coords (double JD, struct ln_lnlat_posn * positi on); | |||
* \brief Calculate apparent ecliptical coordinates. | * \brief Calculate apparent ecliptical coordinates. | |||
* \ingroup solar | * \ingroup solar | |||
*/ | */ | |||
void get_ecl_solar_coords | void get_ecl_solar_coords | |||
(double JD, | (double JD, | |||
struct ln_lnlat_posn * position); | struct ln_lnlat_posn * position); | |||
/*! \fn void get_geo_solar_coords (double JD, struct ln_geo_posn * position ) | /*! \fn void get_geo_solar_coords (double JD, struct ln_rect_posn * positio n) | |||
* \brief Calculate geocentric coordinates (rectangular) | * \brief Calculate geocentric coordinates (rectangular) | |||
* \ingroup solar | * \ingroup solar | |||
*/ | */ | |||
void get_geo_solar_coords (double JD, struct ln_rect_posn * position); | void get_geo_solar_coords (double JD, struct ln_rect_posn * position); | |||
/*! \fn double get_solar_sdiam (double JD) | /*! \fn double get_solar_sdiam (double JD) | |||
* \brief Calcaluate the semidiameter of the Sun in arc seconds. | * \brief Calcaluate the semidiameter of the Sun in arc seconds. | |||
* \ingroup solar | * \ingroup solar | |||
*/ | */ | |||
double get_solar_sdiam (double JD); | double get_solar_sdiam (double JD); | |||
skipping to change at line 896 | skipping to change at line 901 | |||
double get_mercury_disk (double JD); | double get_mercury_disk (double JD); | |||
/*! \fn double get_mercury_phase (double JD); | /*! \fn double get_mercury_phase (double JD); | |||
* \brief Calculate the phase angle of Mercury (Sun - Mercury - Earth) | * \brief Calculate the phase angle of Mercury (Sun - Mercury - Earth) | |||
* \ingroup mercury | * \ingroup mercury | |||
* \return Phase angle of Mercury (degrees) | * \return Phase angle of Mercury (degrees) | |||
*/ | */ | |||
/* Chapter 41 */ | /* Chapter 41 */ | |||
double get_mercury_phase (double JD); | double get_mercury_phase (double JD); | |||
/*! \fn void get_mercury_rect_helio (double JD, struct ln_rect_posn * posit | ||||
ion) | ||||
* \ingroup mercury | ||||
* \brief Calculate Mercurys rectangular heliocentric coordinates. | ||||
*/ | ||||
void get_mercury_rect_helio (double JD, struct ln_rect_posn * position); | ||||
/*! \defgroup venus Venus | /*! \defgroup venus Venus | |||
* | * | |||
* Functions relating to the planet Venus. | * Functions relating to the planet Venus. | |||
* | * | |||
* All angles are expressed in degrees. | * All angles are expressed in degrees. | |||
*/ | */ | |||
/*! \fn double get_venus_sdiam (double JD) | /*! \fn double get_venus_sdiam (double JD) | |||
* \brief Calcaluate the semidiameter of Venus in arc seconds. | * \brief Calcaluate the semidiameter of Venus in arc seconds. | |||
* \ingroup venus | * \ingroup venus | |||
skipping to change at line 973 | skipping to change at line 984 | |||
double get_venus_disk (double JD); | double get_venus_disk (double JD); | |||
/*! \fn double get_venus_phase (double JD); | /*! \fn double get_venus_phase (double JD); | |||
* \brief Calculate the phase angle of Venus. | * \brief Calculate the phase angle of Venus. | |||
* \ingroup venus | * \ingroup venus | |||
* \return Phase angle of Venus (degrees) | * \return Phase angle of Venus (degrees) | |||
*/ | */ | |||
/* Chapter 41 */ | /* Chapter 41 */ | |||
double get_venus_phase (double JD); | double get_venus_phase (double JD); | |||
/*! \fn void get_venus_rect_helio (double JD, struct ln_rect_posn * positio | ||||
n) | ||||
* \ingroup venus | ||||
* \brief Calculate Venus rectangular heliocentric coordinates. | ||||
*/ | ||||
void get_venus_rect_helio (double JD, struct ln_rect_posn * position); | ||||
/* | /* | |||
** Earth | ** Earth | |||
*/ | */ | |||
/*! \fn void get_earth_helio_coords (double JD, struct ln_helio_posn * posi tion); | /*! \fn void get_earth_helio_coords (double JD, struct ln_helio_posn * posi tion); | |||
* \brief Calculate Earth's heliocentric coordinates | * \brief Calculate Earth's heliocentric coordinates | |||
* \ingroup earth | * \ingroup earth | |||
*/ | */ | |||
/* Chapter 31 Pg 206-207 Equ 31.1 31.2 , 31.3 using VSOP 87 */ | /* Chapter 31 Pg 206-207 Equ 31.1 31.2 , 31.3 using VSOP 87 */ | |||
void get_earth_helio_coords | void get_earth_helio_coords | |||
skipping to change at line 994 | skipping to change at line 1011 | |||
struct ln_helio_posn * position); | struct ln_helio_posn * position); | |||
/*! \fn void get_earth_sun_dist (double JD); | /*! \fn void get_earth_sun_dist (double JD); | |||
* \brief Calculate the distance between Earth and the Sun. | * \brief Calculate the distance between Earth and the Sun. | |||
* \ingroup earth | * \ingroup earth | |||
* \return Distance in AU | * \return Distance in AU | |||
*/ | */ | |||
/* Chapter ?? */ | /* Chapter ?? */ | |||
double get_earth_sun_dist (double JD); | double get_earth_sun_dist (double JD); | |||
/*! \fn void get_earth_rect_helio (double JD, struct ln_rect_posn * positio | ||||
n) | ||||
* \ingroup earth | ||||
* \brief Calculate the Earths rectangular heliocentric coordinates. | ||||
*/ | ||||
void get_earth_rect_helio (double JD, struct ln_rect_posn * position); | ||||
/*! \defgroup mars Mars | /*! \defgroup mars Mars | |||
* | * | |||
* Functions relating to the planet Mars. | * Functions relating to the planet Mars. | |||
* | * | |||
* All angles are expressed in degrees. | * All angles are expressed in degrees. | |||
*/ | */ | |||
/*! \fn double get_mars_sdiam (double JD) | /*! \fn double get_mars_sdiam (double JD) | |||
* \brief Calcaluate the semidiameter of Mars in arc seconds. | * \brief Calcaluate the semidiameter of Mars in arc seconds. | |||
* \ingroup mars | * \ingroup mars | |||
skipping to change at line 1071 | skipping to change at line 1094 | |||
double get_mars_disk (double JD); | double get_mars_disk (double JD); | |||
/*! \fn double get_mars_phase (double JD); | /*! \fn double get_mars_phase (double JD); | |||
* \brief Calculate the phase angle of Mars. | * \brief Calculate the phase angle of Mars. | |||
* \ingroup mars | * \ingroup mars | |||
* \return Phase angle of Mars (degrees) | * \return Phase angle of Mars (degrees) | |||
*/ | */ | |||
/* Chapter 41 */ | /* Chapter 41 */ | |||
double get_mars_phase (double JD); | double get_mars_phase (double JD); | |||
/*! \fn void get_mars_rect_helio (double JD, struct ln_rect_posn * position | ||||
) | ||||
* \ingroup mars | ||||
* \brief Calculate Mars rectangular heliocentric coordinates. | ||||
*/ | ||||
void get_mars_rect_helio (double JD, struct ln_rect_posn * position); | ||||
/*! \defgroup jupiter Jupiter | /*! \defgroup jupiter Jupiter | |||
* | * | |||
* Functions relating to the planet Jupiter. | * Functions relating to the planet Jupiter. | |||
* | * | |||
* All angles are expressed in degrees. | * All angles are expressed in degrees. | |||
*/ | */ | |||
/*! \fn double get_jupiter_equ_sdiam (double JD) | /*! \fn double get_jupiter_equ_sdiam (double JD) | |||
* \brief Calcaluate the eqatorial semidiameter of Jupiter in arc seconds. | * \brief Calcaluate the eqatorial semidiameter of Jupiter in arc seconds. | |||
* \ingroup jupiter | * \ingroup jupiter | |||
skipping to change at line 1153 | skipping to change at line 1182 | |||
double get_jupiter_disk (double JD); | double get_jupiter_disk (double JD); | |||
/*! \fn double get_jupiter_phase (double JD); | /*! \fn double get_jupiter_phase (double JD); | |||
* \brief Calculate the phase angle of Jupiter. | * \brief Calculate the phase angle of Jupiter. | |||
* \ingroup jupiter | * \ingroup jupiter | |||
* \return Phase angle of Jupiter (degrees) | * \return Phase angle of Jupiter (degrees) | |||
*/ | */ | |||
/* Chapter 41 */ | /* Chapter 41 */ | |||
double get_jupiter_phase (double JD); | double get_jupiter_phase (double JD); | |||
/*! \fn void get_jupiter_rect_helio (double JD, struct ln_rect_posn * posit | ||||
ion) | ||||
* \ingroup jupiter | ||||
* \brief Calculate Jupiters rectangular heliocentric coordinates. | ||||
*/ | ||||
void get_jupiter_rect_helio (double JD, struct ln_rect_posn * position); | ||||
/*! \defgroup saturn Saturn | /*! \defgroup saturn Saturn | |||
* | * | |||
* Functions relating to the planet Saturn. | * Functions relating to the planet Saturn. | |||
* | * | |||
* All angles are expressed in degrees. | * All angles are expressed in degrees. | |||
*/ | */ | |||
/*! \fn double get_saturn_equ_sdiam (double JD) | /*! \fn double get_saturn_equ_sdiam (double JD) | |||
* \brief Calcaluate the equatorial semidiameter of Saturn in arc seconds. | * \brief Calcaluate the equatorial semidiameter of Saturn in arc seconds. | |||
* \ingroup saturn | * \ingroup saturn | |||
skipping to change at line 1235 | skipping to change at line 1270 | |||
double get_saturn_disk (double JD); | double get_saturn_disk (double JD); | |||
/*! \fn double get_saturn_phase (double JD); | /*! \fn double get_saturn_phase (double JD); | |||
* \brief Calculate the phase angle of Saturn. | * \brief Calculate the phase angle of Saturn. | |||
* \ingroup saturn | * \ingroup saturn | |||
* \return Phase angle of Saturn (degrees) | * \return Phase angle of Saturn (degrees) | |||
*/ | */ | |||
/* Chapter 41 */ | /* Chapter 41 */ | |||
double get_saturn_phase (double JD); | double get_saturn_phase (double JD); | |||
/*! \fn void get_saturn_rect_helio (double JD, struct ln_rect_posn * positi | ||||
on) | ||||
* \ingroup saturns | ||||
* \brief Calculate Saturns rectangular heliocentric coordinates. | ||||
*/ | ||||
void get_saturn_rect_helio (double JD, struct ln_rect_posn * position); | ||||
/*! \defgroup uranus Uranus | /*! \defgroup uranus Uranus | |||
* | * | |||
* Functions relating to the planet Uranus. | * Functions relating to the planet Uranus. | |||
* | * | |||
* All angles are expressed in degrees. | * All angles are expressed in degrees. | |||
*/ | */ | |||
/*! \fn double get_uranus_sdiam (double JD) | /*! \fn double get_uranus_sdiam (double JD) | |||
* \brief Calcaluate the semidiameter of Uranus in arc seconds. | * \brief Calcaluate the semidiameter of Uranus in arc seconds. | |||
* \ingroup uranus | * \ingroup uranus | |||
skipping to change at line 1311 | skipping to change at line 1352 | |||
double get_uranus_disk (double JD); | double get_uranus_disk (double JD); | |||
/*! \fn double get_uranus_phase (double JD); | /*! \fn double get_uranus_phase (double JD); | |||
* \brief Calculate the phase angle of Uranus. | * \brief Calculate the phase angle of Uranus. | |||
* \ingroup uranus | * \ingroup uranus | |||
* \return Phase angle of Uranus (degrees) | * \return Phase angle of Uranus (degrees) | |||
*/ | */ | |||
/* Chapter 41 */ | /* Chapter 41 */ | |||
double get_uranus_phase (double JD); | double get_uranus_phase (double JD); | |||
/*! \fn void get_uranus_rect_helio (double JD, struct ln_rect_posn * positi | ||||
on) | ||||
* \ingroup uranus | ||||
* \brief Calculate Uranus rectangular heliocentric coordinates. | ||||
*/ | ||||
void get_uranus_rect_helio (double JD, struct ln_rect_posn * position); | ||||
/*! \defgroup neptune Neptune | /*! \defgroup neptune Neptune | |||
* | * | |||
* Functions relating to the planet Neptune. | * Functions relating to the planet Neptune. | |||
* | * | |||
* All angles are expressed in degrees. | * All angles are expressed in degrees. | |||
*/ | */ | |||
/*! \fn double get_neptune_sdiam (double JD) | /*! \fn double get_neptune_sdiam (double JD) | |||
* \brief Calcaluate the semidiameter of Neptune in arc seconds. | * \brief Calcaluate the semidiameter of Neptune in arc seconds. | |||
* \ingroup neptune | * \ingroup neptune | |||
skipping to change at line 1387 | skipping to change at line 1434 | |||
double get_neptune_disk (double JD); | double get_neptune_disk (double JD); | |||
/*! \fn double get_neptune_phase (double JD); | /*! \fn double get_neptune_phase (double JD); | |||
* \brief Calculate the phase angle of Neptune. | * \brief Calculate the phase angle of Neptune. | |||
* \ingroup neptune | * \ingroup neptune | |||
* \return Phase angle of Neptune (degrees) | * \return Phase angle of Neptune (degrees) | |||
*/ | */ | |||
/* Chapter 41 */ | /* Chapter 41 */ | |||
double get_neptune_phase (double JD); | double get_neptune_phase (double JD); | |||
/*! \fn void get_neptune_rect_helio (double JD, struct ln_rect_posn * posit | ||||
ion) | ||||
* \ingroup neptune | ||||
* \brief Calculate Neptunes rectangular heliocentric coordinates. | ||||
*/ | ||||
void get_neptune_rect_helio (double JD, struct ln_rect_posn * position); | ||||
/*! \defgroup pluto Pluto | /*! \defgroup pluto Pluto | |||
* | * | |||
* Functions relating to the planet Pluto. | * Functions relating to the planet Pluto. | |||
* | * | |||
* All angles are expressed in degrees. | * All angles are expressed in degrees. | |||
*/ | */ | |||
/*! \fn double get_pluto_sdiam (double JD) | /*! \fn double get_pluto_sdiam (double JD) | |||
* \brief Calcaluate the semidiameter of Pluto in arc seconds. | * \brief Calcaluate the semidiameter of Pluto in arc seconds. | |||
* \ingroup pluto | * \ingroup pluto | |||
skipping to change at line 1463 | skipping to change at line 1516 | |||
double get_pluto_disk (double JD); | double get_pluto_disk (double JD); | |||
/*! \fn double get_pluto_phase (double JD); | /*! \fn double get_pluto_phase (double JD); | |||
* \brief Calculate the phase angle of Pluto. | * \brief Calculate the phase angle of Pluto. | |||
* \ingroup pluto | * \ingroup pluto | |||
* \return Phase angle of Pluto (degrees). | * \return Phase angle of Pluto (degrees). | |||
*/ | */ | |||
/* Chapter 41 */ | /* Chapter 41 */ | |||
double get_pluto_phase (double JD); | double get_pluto_phase (double JD); | |||
/*! \fn void get_pluto_rect_helio (double JD, struct ln_rect_posn * positio | ||||
n) | ||||
* \ingroup pluto | ||||
* \brief Calculate Plutos rectangular heliocentric coordinates. | ||||
*/ | ||||
void get_pluto_rect_helio (double JD, struct ln_rect_posn * position); | ||||
/*! \defgroup lunar Lunar | /*! \defgroup lunar Lunar | |||
* | * | |||
* Functions relating to the Moon. | * Functions relating to the Moon. | |||
* | * | |||
* All angles are expressed in degrees. | * All angles are expressed in degrees. | |||
*/ | */ | |||
/*! \fn double get_lunar_sdiam (double JD) | /*! \fn double get_lunar_sdiam (double JD) | |||
* \brief Calcaluate the semidiameter of the Moon in arc seconds. | * \brief Calcaluate the semidiameter of the Moon in arc seconds. | |||
* \ingroup lunar | * \ingroup lunar | |||
*/ | */ | |||
double get_lunar_sdiam (double JD); | double get_lunar_sdiam (double JD); | |||
/*! \fn double get_lunar_rst (double JD, struct ln_lnlat_posn * observer, s truct ln_rst_time * rst); | /*! \fn double get_lunar_rst (double JD, struct ln_lnlat_posn * observer, s truct ln_rst_time * rst); | |||
* \brief Calculate the time of rise, set and transit for the Moon. | * \brief Calculate the time of rise, set and transit for the Moon. | |||
* \ingroup lunar | * \ingroup lunar | |||
*/ | */ | |||
int get_lunar_rst (double JD, struct ln_lnlat_posn * observer, struct ln_rs t_time * rst); | int get_lunar_rst (double JD, struct ln_lnlat_posn * observer, struct ln_rs t_time * rst); | |||
/*! \fn void get_lunar_geo_posn (double JD, struct ln_geo_posn * moon, doub le precision); | /*! \fn void get_lunar_geo_posn (double JD, struct ln_rect_posn * moon, dou ble precision); | |||
* \brief Calculate the rectangular geocentric lunar cordinates. | * \brief Calculate the rectangular geocentric lunar cordinates. | |||
* \ingroup lunar | * \ingroup lunar | |||
*/ | */ | |||
/* ELP 2000-82B theory */ | /* ELP 2000-82B theory */ | |||
void get_lunar_geo_posn (double JD, struct ln_rect_posn * moon, double prec ision); | void get_lunar_geo_posn (double JD, struct ln_rect_posn * moon, double prec ision); | |||
/*! \fn void get_lunar_equ_coords (double JD, struct ln_equ_posn * position , double precision); | /*! \fn void get_lunar_equ_coords (double JD, struct ln_equ_posn * position , double precision); | |||
* \brief Calculate lunar equatorial coordinates. | * \brief Calculate lunar equatorial coordinates. | |||
* \ingroup lunar | * \ingroup lunar | |||
*/ | */ | |||
skipping to change at line 1548 | skipping to change at line 1607 | |||
* \ingroup elliptic | * \ingroup elliptic | |||
*/ | */ | |||
double solve_kepler (double e, double M); | double solve_kepler (double e, double M); | |||
/*! \fn double get_ell_mean_anomaly (double n, double delta_JD); | /*! \fn double get_ell_mean_anomaly (double n, double delta_JD); | |||
* \brief Calculate the mean anomaly. | * \brief Calculate the mean anomaly. | |||
* \ingroup elliptic | * \ingroup elliptic | |||
*/ | */ | |||
double get_ell_mean_anomaly (double n, double delta_JD); | double get_ell_mean_anomaly (double n, double delta_JD); | |||
/*! \fn double get_ell_true_anomaly (double n, double delta_JD); | /*! \fn double get_ell_true_anomaly (double e, double E); | |||
* \brief Calculate the true anomaly. | * \brief Calculate the true anomaly. | |||
* \ingroup elliptic | * \ingroup elliptic | |||
*/ | */ | |||
double get_ell_true_anomaly (double e, double E); | double get_ell_true_anomaly (double e, double E); | |||
/*! \fn double get_ell_radius_vector (double a, double e, double E); | /*! \fn double get_ell_radius_vector (double a, double e, double E); | |||
* \brief Calculate the radius vector. | * \brief Calculate the radius vector. | |||
* \ingroup elliptic | * \ingroup elliptic | |||
*/ | */ | |||
double get_ell_radius_vector (double a, double e, double E); | double get_ell_radius_vector (double a, double e, double E); | |||
skipping to change at line 1620 | skipping to change at line 1679 | |||
* \brief Calculate the orbital velocity at aphelion in km/s. | * \brief Calculate the orbital velocity at aphelion in km/s. | |||
*/ | */ | |||
double get_ell_orbit_avel (struct ln_ell_orbit * orbit); | double get_ell_orbit_avel (struct ln_ell_orbit * orbit); | |||
/*! \fn double get_ell_body_phase_angle (double JD, struct ln_ell_orbit * o rbit); | /*! \fn double get_ell_body_phase_angle (double JD, struct ln_ell_orbit * o rbit); | |||
* \ingroup elliptic | * \ingroup elliptic | |||
* \brief Calculate the pase angle of the body. The angle Sun - body - Earth . | * \brief Calculate the pase angle of the body. The angle Sun - body - Earth . | |||
*/ | */ | |||
double get_ell_body_phase_angle (double JD, struct ln_ell_orbit * orbit); | double get_ell_body_phase_angle (double JD, struct ln_ell_orbit * orbit); | |||
/*! \fn double get_ell_body_elong (double JD, struct ln_ell_orbit * orbit); | ||||
* \ingroup elliptic | ||||
* \brief Calculate the bodies elongation to the Sun.. | ||||
*/ | ||||
double get_ell_body_elong (double JD, struct ln_ell_orbit * orbit); | ||||
/*! | /*! | |||
* \fn double get_ell_body_solar_dist (double JD, struct ln_ell_orbit * orbi t) | * \fn double get_ell_body_solar_dist (double JD, struct ln_ell_orbit * orbi t) | |||
* \brief Calculate the distance between a body and the Sun | * \brief Calculate the distance between a body and the Sun | |||
* \ingroup elliptic | * \ingroup elliptic | |||
*/ | */ | |||
double get_ell_body_solar_dist (double JD, struct ln_ell_orbit * orbit); | double get_ell_body_solar_dist (double JD, struct ln_ell_orbit * orbit); | |||
/*! | /*! | |||
* \fn double get_ell_body_earth_dist (double JD, struct ln_ell_orbit * orbi t) | * \fn double get_ell_body_earth_dist (double JD, struct ln_ell_orbit * orbi t) | |||
* \brief Calculate the distance between a body and the Earth | * \brief Calculate the distance between a body and the Earth | |||
skipping to change at line 1672 | skipping to change at line 1737 | |||
* \brief Calculate the true anomaly. | * \brief Calculate the true anomaly. | |||
*/ | */ | |||
double get_par_true_anomaly (double q, double t); | double get_par_true_anomaly (double q, double t); | |||
/*! \fn double get_par_radius_vector (double q, double t); | /*! \fn double get_par_radius_vector (double q, double t); | |||
* \ingroup parabolic | * \ingroup parabolic | |||
* \brief Calculate the radius vector. | * \brief Calculate the radius vector. | |||
*/ | */ | |||
double get_par_radius_vector (double q, double t); | double get_par_radius_vector (double q, double t); | |||
/*! \fn void get_par_geo_rect_posn (struct ln_orbit* orbit, double JD, stru ct ln_rect_posn* posn); | /*! \fn void get_par_geo_rect_posn (struct ln_par_orbit* orbit, double JD, struct ln_rect_posn* posn); | |||
* \ingroup parabolic | * \ingroup parabolic | |||
* \brief Calculate an objects rectangular geocentric position. | * \brief Calculate an objects rectangular geocentric position. | |||
*/ | */ | |||
void get_par_geo_rect_posn (struct ln_par_orbit* orbit, double JD, struct l n_rect_posn* posn); | void get_par_geo_rect_posn (struct ln_par_orbit* orbit, double JD, struct l n_rect_posn* posn); | |||
/*! \fn void get_par_helio_rect_posn (struct ln_par_orbit* orbit, double JD , struct ln_rect_posn* posn); | /*! \fn void get_par_helio_rect_posn (struct ln_par_orbit* orbit, double JD , struct ln_rect_posn* posn); | |||
* \ingroup parabolic | * \ingroup parabolic | |||
* \brief Calculate an objects rectangular heliocentric position. | * \brief Calculate an objects rectangular heliocentric position. | |||
*/ | */ | |||
void get_par_helio_rect_posn (struct ln_par_orbit* orbit, double JD, struct ln_rect_posn* posn); | void get_par_helio_rect_posn (struct ln_par_orbit* orbit, double JD, struct ln_rect_posn* posn); | |||
skipping to change at line 1711 | skipping to change at line 1776 | |||
* \brief Calculate the distance between a body and the Sun. | * \brief Calculate the distance between a body and the Sun. | |||
*/ | */ | |||
double get_par_body_solar_dist (double JD, struct ln_par_orbit * orbit); | double get_par_body_solar_dist (double JD, struct ln_par_orbit * orbit); | |||
/*! \fn double get_par_body_phase_angle (double JD, struct ln_par_orbit * o rbit); | /*! \fn double get_par_body_phase_angle (double JD, struct ln_par_orbit * o rbit); | |||
* \ingroup parabolic | * \ingroup parabolic | |||
* \brief Calculate the pase angle of the body. | * \brief Calculate the pase angle of the body. | |||
*/ | */ | |||
double get_par_body_phase_angle (double JD, struct ln_par_orbit * orbit); | double get_par_body_phase_angle (double JD, struct ln_par_orbit * orbit); | |||
/*! \fn double get_par_body_elong (double JD, struct ln_par_orbit * orbit); | ||||
* \ingroup parabolic | ||||
* \brief Calculate the bodies elongation to the Sun. | ||||
*/ | ||||
double get_par_body_elong (double JD, struct ln_par_orbit * orbit); | ||||
/*! \fn double get_par_body_rst (double JD, struct ln_lnlat_posn * observer , struct ln_par_orbit * orbit, struct ln_rst_time * rst); | /*! \fn double get_par_body_rst (double JD, struct ln_lnlat_posn * observer , struct ln_par_orbit * orbit, struct ln_rst_time * rst); | |||
* \brief Calculate the time of rise, set and transit for a body with a para bolic orbit. | * \brief Calculate the time of rise, set and transit for a body with a para bolic orbit. | |||
* \ingroup parabolic | * \ingroup parabolic | |||
*/ | */ | |||
int get_par_body_rst (double JD, struct ln_lnlat_posn * observer, struct ln _par_orbit * orbit, struct ln_rst_time * rst); | int get_par_body_rst (double JD, struct ln_lnlat_posn * observer, struct ln _par_orbit * orbit, struct ln_rst_time * rst); | |||
/*! \defgroup asteroid Asteroids | /*! \defgroup asteroid Asteroids | |||
* | * | |||
* Functions relating to Asteroids. | * Functions relating to Asteroids. | |||
* | * | |||
skipping to change at line 1803 | skipping to change at line 1874 | |||
* | * | |||
* All angles are expressed in degrees. | * All angles are expressed in degrees. | |||
*/ | */ | |||
/*! \fn double get_object_rst (double JD, struct ln_lnlat_posn * observer, struct ln_equ_posn * object,struct ln_rst_time * rst); | /*! \fn double get_object_rst (double JD, struct ln_lnlat_posn * observer, struct ln_equ_posn * object,struct ln_rst_time * rst); | |||
* \brief Calculate the time of rise, set and transit for an object not orbi ting the Sun. | * \brief Calculate the time of rise, set and transit for an object not orbi ting the Sun. | |||
* \ingroup rst | * \ingroup rst | |||
*/ | */ | |||
int get_object_rst (double JD, struct ln_lnlat_posn * observer, struct ln_e qu_posn * object, struct ln_rst_time * rst); | int get_object_rst (double JD, struct ln_lnlat_posn * observer, struct ln_e qu_posn * object, struct ln_rst_time * rst); | |||
/*! \fn double get_object_next_rst (double JD, struct ln_lnlat_posn * obser | ||||
ver, struct ln_equ_posn * object,struct ln_rst_time * rst); | ||||
* \brief Calculate the time of next rise, set and transit for an object not | ||||
orbiting the Sun. | ||||
* E.g. it's sure, that rise, set and transit will be in <JD, JD+1> range. | ||||
* \ingroup rst | ||||
*/ | ||||
int get_object_next_rst (double JD, struct ln_lnlat_posn * observer, struct | ||||
ln_equ_posn * object, struct ln_rst_time * rst); | ||||
#ifdef __cplusplus | #ifdef __cplusplus | |||
}; | }; | |||
#endif | #endif | |||
#endif | #endif | |||
End of changes. 25 change blocks. | ||||
13 lines changed or deleted | 103 lines changed or added | |||