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

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/