libnova.h | libnova.h | |||
---|---|---|---|---|
skipping to change at line 19 | skipping to change at line 19 | |||
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@gnova.org> | Copyright (C) 2000 Liam Girdwood <liam@gnova.org> | |||
*/ | */ | |||
/*! \mainpage libnova | /*! \mainpage libnova | |||
* \image html libnova-logo.jpg | ||||
* Celestial Mechanics and Astronomical Calculation Library | * Celestial Mechanics and Astronomical Calculation Library | |||
* | * | |||
* \section intro Introduction | * \section intro Introduction | |||
* libnova is a general purpose, double precision, celestial mechanics and a stronomical 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 or celestial mechanics. | * 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: | |||
skipping to change at line 51 | skipping to change at line 52 | |||
* - 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 (Comet positional data) | * - 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. | |||
* - Angular separation of bodies | * - Angular separation of bodies | |||
* - Hyperbolic motion of bodies | ||||
* | * | |||
* \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.9.0 and was released on the 2 5th Jan 2004. | * The latest released version of libnova is 0.10.0 and was released on the 1st June 2004. | |||
* 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 and logo. | * - Website and logo. | |||
* | * | |||
* \section contact Contact | * \section contact Contact | |||
* If you would like further information, then please contact me <A href="ma ilto:liam@gnova.org">here</A> | * If you would like further information, then please contact me <A href="ma ilto:liam@gnova.org">here</A> | |||
* Note: Email address has recently changed. | ||||
* | * | |||
* 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". | |||
* | * | |||
* Thanks to Michelle Chapront-Touze and Jean Chapront for publishing | * Thanks to Michelle Chapront-Touze and Jean Chapront for publishing | |||
* the Lunar Solution ELP 2000-82B. | * the Lunar Solution ELP 2000-82B. | |||
* | * | |||
* Thanks to Messrs. Bretagnon and Francou for publishing planetary | * Thanks to Messrs. Bretagnon and Francou for publishing planetary | |||
* solution VSOP87. | * solution VSOP87. | |||
* | * | |||
* Also thanks to Sourceforge for hosting this project. <A href="http://sour ceforge.net"> <IMG src="http://sourceforge.net/sflogo.php?group_id=57697&am p;type=5" width="210" height="62" border="0" alt="SourceForge Logo"></A> | * Also thanks to Sourceforge for hosting this project. <A href="http://sour ceforge.net"> <IMG src="http://sourceforge.net/sflogo.php?group_id=57697&am p;type=5" width="210" height="62" border="0" alt="SourceForge Logo"></A> | |||
*/ | */ | |||
#ifndef LN_LIBNOVA_H | #ifndef _LN_LIBNOVA_H | |||
#define LN_LIBNOVA_H | #define _LN_LIBNOVA_H | |||
#ifdef __cplusplus | ||||
extern "C" { | ||||
#endif | ||||
#include <time.h> | ||||
/* define some usefull constants if they are not already defined */ | ||||
#ifndef M_PI_2 | ||||
#define M_PI_2 1.5707963267948966192313216916398 | ||||
#define M_PI_4 0.78539816339744830961566084581988 | ||||
#define M_PI 3.1415926535897932384626433832795 | ||||
#endif | ||||
/*! | ||||
** Date | ||||
* \struct ln_date | ||||
* \brief Human readable Date and time used by libnova | ||||
* | ||||
* This is the Human readable (easy printf) date format used | ||||
* by libnova. | ||||
*/ | ||||
struct ln_date | ||||
{ | ||||
int years; /*!< Years. All values are valid */ | ||||
int months; /*!< Months. Valid values : 1 (January) - 12 | ||||
(December) */ | ||||
int days; /*!< Days. Valid values 1 - 28,29,30,31 Depends on m | ||||
onth.*/ | ||||
int hours; /*!< Hours. Valid values 0 - 23. */ | ||||
int minutes; /*!< Minutes. Valid values 0 - 59. */ | ||||
double seconds; /*!< Seconds. Valid values 0 - 59.99999.... */ | ||||
}; | ||||
/*! \struct ln_dms | ||||
** \brief Degrees, minutes and seconds. | ||||
* | ||||
* Human readable Angle in degrees, minutes and seconds | ||||
*/ | ||||
struct ln_dms | ||||
{ | ||||
int sign; /*!< Sign. 0 for positive, anything else is | ||||
negative */ | ||||
int degrees; /*!< Degrees. Valid > 0 */ | ||||
int minutes; /*!< Minutes. Valid 0 - 59 */ | ||||
double seconds; /*!< Seconds. Valid 0 - 59.9999... */ | ||||
}; | ||||
/*! \struct ln_hms | ||||
** \brief Hours, minutes and seconds. | ||||
* | ||||
* Human readable Angle in hours, minutes and seconds | ||||
*/ | ||||
struct ln_hms | ||||
{ | ||||
int hours; /*!< Hours. Valid 0 - 23 */ | ||||
int minutes; /*!< Minutes. Valid 0 - 59 */ | ||||
double seconds; /*!< Seconds. Valid 0 - 59.9999... */ | ||||
}; | ||||
/*! \struct lnh_equ_posn | ||||
** \brief Right Acsension and Declination. | ||||
* | ||||
* Human readable Equatorial Coordinates. | ||||
*/ | ||||
struct lnh_equ_posn | ||||
{ | ||||
struct ln_hms ra; /*!< RA. Object right ascension.*/ | ||||
struct ln_dms dec; /*!< DEC. Object declination */ | ||||
}; | ||||
/*! \struct lnh_hrz_posn | ||||
** \brief Azimuth and Altitude. | ||||
* | ||||
* Human readable Horizontal Coordinates. | ||||
*/ | ||||
struct lnh_hrz_posn | ||||
{ | ||||
struct ln_dms az; /*!< AZ. Object azimuth. */ | ||||
struct ln_dms alt; /*!< ALT. Object altitude. */ | ||||
}; | ||||
/*! \struct lnh_lnlat_posn | ||||
** \brief Ecliptical (or celestial) Latitude and Longitude. | ||||
* | ||||
* Human readable Ecliptical (or celestial) Longitude and Latitude. | ||||
*/ | ||||
struct lnh_lnlat_posn | ||||
{ | ||||
struct ln_dms lng; /*!< longitude. Object longitude.*/ | ||||
struct ln_dms lat; /*!< latitude. Object latitude */ | ||||
}; | ||||
/*! \struct ln_equ_posn | ||||
** \brief Equatorial Coordinates. | ||||
* | ||||
* The Right Ascension and Declination of an object. | ||||
* | ||||
* Angles are expressed in degrees. | ||||
*/ | ||||
struct ln_equ_posn | ||||
{ | ||||
double ra; /*!< RA. Object right ascension.*/ | ||||
double dec; /*!< DEC. Object declination */ | ||||
}; | ||||
/*! \struct ln_hrz_posn | ||||
** \brief Horizontal Coordinates. | ||||
* | ||||
* The Azimuth and Altitude of an object. | ||||
* | ||||
* Angles are expressed in degrees. | ||||
*/ | ||||
struct ln_hrz_posn | ||||
{ | ||||
double az; /*!< AZ. Object azimuth. <p> | ||||
0 deg = South, 90 deg = West, 180 deg = Nord, 270 deg = Ea | ||||
st */ | ||||
double alt; /*!< ALT. Object altitude. <p> 0 deg = horizon, 90 d | ||||
eg = zenit, -90 deg = nadir */ | ||||
}; | ||||
/*! \struct ln_lnlat_posn | ||||
** \brief Ecliptical (or celestial) Longitude and Latitude. | ||||
* | ||||
* The Ecliptical (or celestial) Latitude and Longitude of and object. | ||||
* | ||||
* Angles are expressed in degrees. | ||||
*/ | ||||
struct ln_lnlat_posn | ||||
{ | ||||
double lng; /*!< longitude. Object longitude. */ | ||||
double lat; /*!< latitude. Object latitude */ | ||||
}; | ||||
/*! \struct ln_helio_posn | ||||
* \brief Heliocentric position | ||||
* | ||||
* A heliocentric position is an objects position relative to the | ||||
* centre of the Sun. | ||||
* | ||||
* Angles are expressed in degrees. | ||||
* Radius vector is in AU. | ||||
*/ | ||||
struct ln_helio_posn | ||||
{ | ||||
double L; /*!< Heliocentric longitude */ | ||||
double B; /*!< Heliocentric latitude */ | ||||
double R; /*!< Heliocentric radius vector */ | ||||
}; | ||||
/*! \struct ln_rect_posn | ||||
* \brief Rectangular coordinates | ||||
* | ||||
* Rectangular Coordinates of a body. These coordinates can be either | ||||
* geocentric or heliocentric. | ||||
* | ||||
* A heliocentric position is an objects position relative to the | ||||
* centre of the Sun. | ||||
* A geocentric position is an objects position relative to the centre | ||||
* of the Earth. | ||||
* | ||||
* Position is in units of AU for planets and in units of km | ||||
* for the Moon. | ||||
*/ | ||||
struct ln_rect_posn | ||||
{ | ||||
double X; /*!< Rectangular X coordinate */ | ||||
double Y; /*!< Rectangular Y coordinate */ | ||||
double Z; /*!< Rectangular Z coordinate */ | ||||
}; | ||||
/*! | ||||
* \struct ln_ell_orbit | ||||
* \brief Elliptic Orbital elements | ||||
* | ||||
* TODO. | ||||
* Angles are expressed in degrees. | ||||
*/ | ||||
struct ln_ell_orbit | ||||
{ | ||||
double a; /*!< Semi major axis, in AU */ | ||||
double e; /*!< Eccentricity */ | ||||
double i; /*!< Inclination in degrees */ | ||||
double w; /*!< Argument of perihelion in degrees */ | ||||
double omega; /*!< Longitude of ascending node in degrees*/ | ||||
double n; /*!< Mean motion, in degrees/day */ | ||||
double JD; /*!< Time of last passage in Perihelion, in julian d | ||||
ay*/ | ||||
}; | ||||
/*! | ||||
* \struct ln_par_orbit | ||||
* \brief Parabolic Orbital elements | ||||
* | ||||
* TODO. | ||||
* Angles are expressed in degrees. | ||||
*/ | ||||
struct ln_par_orbit | ||||
{ | ||||
double q; /*!< Perihelion distance in AU */ | ||||
double i; /*!< Inclination in degrees */ | ||||
double w; /*!< Argument of perihelion in degrees */ | ||||
double omega; /*!< Longitude of ascending node in degrees*/ | ||||
double JD; /*!< Time of last passage in Perihelion, in julian d | ||||
ay */ | ||||
}; | ||||
/*! | ||||
* \struct ln_rst_time | ||||
* \brief Rise, Set and Transit times. | ||||
* | ||||
* Contains the Rise, Set and transit times for a body. | ||||
* | ||||
* Angles are expressed in degrees. | ||||
*/ | ||||
struct ln_rst_time | ||||
{ | ||||
double rise; /*!< Rise time in JD */ | ||||
double set; /*!< Set time in JD */ | ||||
double transit; /*!< Transit time in JD */ | ||||
}; | ||||
/*! | ||||
* \struct ln_nutation | ||||
* \brief Nutation in longitude, ecliptic and obliquity. | ||||
* | ||||
* Contains Nutation in longitude, obliquity and ecliptic obliquity. | ||||
* | ||||
* Angles are expressed in degrees. | ||||
*/ | ||||
struct ln_nutation | ||||
{ | ||||
double longitude; /*!< Nutation in longitude */ | ||||
double obliquity; /*!< Nutation in obliquity */ | ||||
double ecliptic; /*!< Obliquity of the ecliptic */ | ||||
}; | ||||
/*! \defgroup version Libnova library version information | ||||
*/ | ||||
/*! \fn const char * get_ln_version (void) | ||||
* \brief Library Version Number | ||||
* \ingroup version | ||||
*/ | ||||
const char * get_ln_version (void); | ||||
/*! \defgroup calendar General Calendar Functions | ||||
*/ | ||||
/*! \fn double get_julian_day (struct ln_date * date) | ||||
* \ingroup calendar | ||||
* \brief Calculate the julian day from date. | ||||
*/ | ||||
double get_julian_day (struct ln_date * date); | ||||
/*! \fn void get_date (double JD, struct ln_date * date) | ||||
* \ingroup calendar | ||||
* \brief Calculate the date from the julian day. | ||||
*/ | ||||
void get_date (double JD, struct ln_date * date); | ||||
/*! \fn void get_local_date (double JD, struct ln_date * date) | ||||
* \ingroup calender | ||||
* \brief Calculate the local date from the Julian day | ||||
*/ | ||||
void get_local_date (double JD, struct ln_date * date); | ||||
/*! \fn unsigned int get_day_of_week (struct ln_date * date) | ||||
* \ingroup calendar | ||||
* \brief Calculate day of the week. | ||||
*/ | ||||
unsigned int get_day_of_week (struct ln_date *date); | ||||
/*! \fn double get_julian_from_sys () | ||||
* \brief Calculate julian day from system time. | ||||
* \ingroup calendar | ||||
*/ | ||||
double get_julian_from_sys (); | ||||
/*! \fn void get_ln_date_from_sys (struct ln_date * date) | ||||
* \brief Calculate date from system date | ||||
* \ingroup calendar | ||||
*/ | ||||
void get_ln_date_from_sys (struct ln_date * date); | ||||
/*! \fn double get_julian_from_timet (time_t * time) | ||||
* \brief Calculate julian day from time_t | ||||
* \ingroup calendar | ||||
*/ | ||||
double get_julian_from_timet (time_t * in_time); | ||||
/*! \fn void get_timet_from_julian (double JD, time_t * time) | ||||
* \brief Calculate time_t from julian day | ||||
* \ingroup calendar | ||||
*/ | ||||
void get_timet_from_julian (double JD, time_t * in_time); | ||||
/*! \fn double get_julian_local_date(struct ln_date* date) | ||||
* \brief Calculate Julian day from local date | ||||
* \ingroup calendar | ||||
*/ | ||||
double get_julian_local_date(struct ln_date* date); | ||||
/*! \fn int get_date_from_mpc (struct ln_date* date, char* mpc_date) | ||||
* \brief Calculate the local date from the a MPC packed date. | ||||
* \ingroup calendar | ||||
*/ | ||||
int get_date_from_mpc (struct ln_date* date, char* mpc_date); | ||||
/*! \fn double get_julian_from_mpc (char* mpc_date) | ||||
* \brief Calculate the julian day from the a MPC packed date. | ||||
* \ingroup calendar | ||||
*/ | ||||
double get_julian_from_mpc (char* mpc_date); | ||||
/*! \defgroup misc Misc Functions | ||||
*/ | ||||
/*! \fn double get_dec_location(char * s) | ||||
* \ingroup misc | ||||
* \brief Obtains Latitude, Longitude, RA or Declination from a string. | ||||
*/ | ||||
double get_dec_location(char *s); | ||||
/*! \fn char * get_humanr_location(double location) | ||||
* \ingroup misc | ||||
* \brief Obtains a human readable location in the form: dd | ||||
*/ | ||||
char *get_humanr_location(double location); | ||||
/*! | ||||
* \defgroup dynamical Dynamical Time | ||||
* | ||||
* TODO | ||||
*/ | ||||
/*! \fn double get_dynamical_time_diff (double JD) | ||||
* \ingroup dynamical | ||||
* \brief Calculate approximate dynamical time difference from julian day in | ||||
seconds | ||||
*/ | ||||
double get_dynamical_time_diff (double JD); | ||||
/*! \fn double get_jde (double JD) | ||||
* \brief Calculate julian ephemeris day (JDE) | ||||
* \ingroup dynamical | ||||
*/ | ||||
double get_jde (double JD); | ||||
/*! \defgroup sidereal Sidereal Time | ||||
* | ||||
* TODO | ||||
*/ | ||||
/*! \fn double get_mean_sidereal_time (double JD) | ||||
* \brief Calculate mean sidereal time from date. | ||||
* \ingroup sidereal | ||||
*/ | ||||
double get_mean_sidereal_time (double JD); | ||||
/*! \fn get_apparent_sidereal_time (double JD) | ||||
* \brief Calculate apparent sidereal time from date. | ||||
* \ingroup sidereal | ||||
*/ | ||||
double get_apparent_sidereal_time (double JD); | ||||
/*! \defgroup misc Misc. Functions | ||||
* | ||||
* Misc functions. | ||||
*/ | ||||
/* | ||||
* \fn double get_rect_distance (struct ln_rect_posn * a, struct ln_rect_pos | ||||
n * b) | ||||
* \ingroup misc | ||||
*/ | ||||
double get_rect_distance (struct ln_rect_posn * a, struct ln_rect_posn * b) | ||||
; | ||||
/*! \defgroup conversion General Conversion Functions | ||||
* | ||||
* Conversion from one libnova type to another. | ||||
*/ | ||||
/*! \fn double rad_to_deg (double radians) | ||||
* \brief radians to degrees | ||||
* \ingroup conversion | ||||
*/ | ||||
double rad_to_deg (double radians); | ||||
/*! \fn double deg_to_rad (double radians) | ||||
* \brief degrees to radians | ||||
* \ingroup conversion | ||||
*/ | ||||
double deg_to_rad (double degrees); | ||||
/*! \fn double hms_to_deg (struct ln_hms * hms) | ||||
* \brief hours to degrees | ||||
* \ingroup conversion | ||||
*/ | ||||
double hms_to_deg (struct ln_hms * hms); | ||||
/*! \fn void deg_to_hms (double degrees, struct ln_hms * hms) | ||||
* \brief degrees to hours | ||||
* \ingroup conversion | ||||
*/ | ||||
void deg_to_hms (double degrees, struct ln_hms * hms); | ||||
/*! \fn double hms_to_rad (struct ln_hms * hms) | ||||
* \brief hours to radians. | ||||
* \ingroup conversion | ||||
*/ | ||||
double hms_to_rad (struct ln_hms * hms); | ||||
/*! \fn void deg_to_hms (double radians, struct ln_hms * hms) | ||||
* \brief radians to hours | ||||
* \ingroup conversion | ||||
*/ | ||||
void rad_to_hms (double radians, struct ln_hms * hms); | ||||
/*! \fn double dms_to_deg (struct ln_dms * dms) | ||||
* \brief dms to degrees | ||||
* \ingroup conversion | ||||
*/ | ||||
double dms_to_deg (struct ln_dms * dms); | ||||
/*! \fn void deg_to_dms (double degrees, struct ln_dms * dms) | ||||
* \brief degrees to dms | ||||
* \ingroup conversion | ||||
*/ | ||||
void deg_to_dms (double degrees, struct ln_dms * dms); | ||||
/*! \fn double dms_to_rad (struct ln_dms * dms) | ||||
* \brief dms to radians | ||||
* \ingroup conversion | ||||
*/ | ||||
double dms_to_rad (struct ln_dms * dms); | ||||
/*! \fn void rad_to_dms (double radians, struct ln_dms * dms) | ||||
* \brief radians to dms | ||||
* \ingroup conversion | ||||
*/ | ||||
void rad_to_dms (double radians, struct ln_dms * dms); | ||||
/*! \fn void hequ_to_equ (struct lnh_equ_posn * hpos, struct ln_equ_posn * | ||||
pos) | ||||
* \brief human readable equatorial position to double equatorial position | ||||
* \ingroup conversion | ||||
*/ | ||||
void hequ_to_equ (struct lnh_equ_posn * hpos, struct ln_equ_posn * pos); | ||||
/*! \fn void equ_to_hequ (struct ln_equ_posn * pos, struct lnh_equ_posn * h | ||||
pos) | ||||
* \brief human double equatorial position to human readable equatorial posi | ||||
tion | ||||
* \ingroup conversion | ||||
*/ | ||||
void equ_to_hequ (struct ln_equ_posn * pos, struct lnh_equ_posn * hpos); | ||||
/*! \fn void hhrz_to_hrz (struct lnh_hrz_posn * hpos, struct ln_hrz_posn * | ||||
pos) | ||||
* \brief human readable horizontal position to double horizontal position | ||||
* \ingroup conversion | ||||
*/ | ||||
void hhrz_to_hrz (struct lnh_hrz_posn * hpos, struct ln_hrz_posn * pos); | ||||
/*! \fn void hrz_to_hhrz (struct ln_hrz_posn * pos, struct lnh_hrz_posn * h | ||||
pos) | ||||
* \brief double horizontal position to human readable horizontal position | ||||
* \ingroup conversion | ||||
*/ | ||||
void hrz_to_hhrz (struct ln_hrz_posn * pos, struct lnh_hrz_posn * hpos); | ||||
/*! \fn const char * hrz_to_nswe (struct ln_hrz_posn * pos); | ||||
* \brief returns direction of given azimut - like N,S,W,E,NSW,... | ||||
* \ingroup conversion | ||||
*/ | ||||
const char * hrz_to_nswe (struct ln_hrz_posn * pos); | ||||
/*! \fn void hlnlat_to_lnlat (struct lnh_lnlat_posn * hpos, struct ln_lnlat | ||||
_posn * pos) | ||||
* \brief human readable long/lat position to double long/lat position | ||||
* \ingroup conversion | ||||
*/ | ||||
void hlnlat_to_lnlat (struct lnh_lnlat_posn * hpos, struct ln_lnlat_posn * | ||||
pos); | ||||
/*! \fn void lnlat_to_hlnlat (struct ln_lnlat_posn * pos, struct lnh_lnlat_ | ||||
posn * hpos) | ||||
* \brief double long/lat position to human readable long/lat position | ||||
* \ingroup conversion | ||||
*/ | ||||
void lnlat_to_hlnlat (struct ln_lnlat_posn * pos, struct lnh_lnlat_posn * h | ||||
pos); | ||||
/*! \fn void add_secs_hms (struct ln_hms * hms, double seconds) | ||||
* \brief add seconds to hms | ||||
* \ingroup conversion | ||||
*/ | ||||
void add_secs_hms (struct ln_hms * hms, double seconds); | ||||
/*! \fn void add_hms (struct ln_hms * source, struct ln_hms * dest) | ||||
* \brief add hms to hms | ||||
* \ingroup conversion | ||||
*/ | ||||
void add_hms (struct ln_hms * source, struct ln_hms * dest); | ||||
/*! \fn void range_degrees (double angle) | ||||
* \brief puts a large angle in the correct range 0 - 360 degrees | ||||
* \ingroup conversion | ||||
*/ | ||||
double range_degrees (double angle); | ||||
/*! \fn void range_radians (double angle) | ||||
* \brief puts a large angle in the correct range 0 - 2PI radians | ||||
* \ingroup conversion | ||||
*/ | ||||
double range_radians (double angle); | ||||
double range_radians2 (double angle); | ||||
/* | ||||
* \fn double get_light_time (double dist) | ||||
* \brief Convert units of AU into light days. | ||||
* \ingroup conversion | ||||
*/ | ||||
double get_light_time (double dist); | ||||
/*! \defgroup transform Transformation of Coordinates | ||||
* | ||||
* Transformations from one coordinate system to another. | ||||
*/ | ||||
/*! \fn void get_hrz_from_equ (struct ln_equ_posn * object, struct ln_lnlat | ||||
_posn * observer, double JD, struct ln_hrz_posn *position); | ||||
* \brief Calculate horizontal coordinates from equatorial coordinates | ||||
* \ingroup transform | ||||
*/ | ||||
/* Use get_mean_sidereal_time, get_hrz_from_equ_siderealtime */ | ||||
void get_hrz_from_equ | ||||
(struct ln_equ_posn * object, | ||||
struct ln_lnlat_posn * observer, | ||||
double JD, struct ln_hrz_posn *position); | ||||
/*! \fn void get_hrz_from_equ_sidereal_time (struct ln_equ_posn * object, s | ||||
truct ln_lnlat_posn * observer, double sidereal_time, struct ln_hrz_posn *p | ||||
osition); | ||||
* \brief Calculate horizontal coordinates from equatorial coordinates, | ||||
* using mean sidereal time. | ||||
* \ingroup transform | ||||
*/ | ||||
/* Equ 12.5,12.6 pg 88 */ | ||||
void get_hrz_from_equ_sidereal_time | ||||
(struct ln_equ_posn * object, | ||||
struct ln_lnlat_posn * observer, | ||||
double sidereal, struct ln_hrz_posn *position); | ||||
/*! \fn void get_equ_from_ecl (struct ln_lnlat_posn * object, double JD, st | ||||
ruct ln_equ_posn * position); | ||||
* \brief Calculate equatorial coordinates from ecliptical coordinates | ||||
* \ingroup transform | ||||
*/ | ||||
/* Equ 12.3, 12.4 pg 89 */ | ||||
void get_equ_from_ecl | ||||
(struct ln_lnlat_posn * object, | ||||
double JD, | ||||
struct ln_equ_posn * position); | ||||
/*! \fn void get_ecl_from_equ (struct ln_equ_posn * object, double JD, stru | ||||
ct ln_lnlat_posn * position); | ||||
* \brief Calculate ecliptical cordinates from equatorial coordinates | ||||
* \ingroup transform | ||||
*/ | ||||
/* Equ 12.1, 12.2 Pg 88 */ | ||||
void get_ecl_from_equ | ||||
(struct ln_equ_posn * object, | ||||
double JD, | ||||
struct ln_lnlat_posn * position); | ||||
/*! \fn void get_equ_from_hrz (struct ln_hrz_posn *object, struct ln_lnlat_ | ||||
posn * observer, double JD, struct ln_equ_posn * position); | ||||
* \brief Calculate equatorial coordinates from horizontal coordinates | ||||
* \ingroup transform | ||||
*/ | ||||
/* Pg 89 */ | ||||
void get_equ_from_hrz | ||||
(struct ln_hrz_posn *object, | ||||
struct ln_lnlat_posn * observer, | ||||
double JD, | ||||
struct ln_equ_posn * position); | ||||
/*! \fn void get_rect_from_helio (struct ln_helio_posn *object, struct ln_r | ||||
ect_posn * position); | ||||
* \brief Calculate geocentric coordinates from heliocentric coordinates | ||||
* \ingroup transform | ||||
*/ | ||||
/* Pg ?? */ | ||||
void get_rect_from_helio | ||||
(struct ln_helio_posn *object, | ||||
struct ln_rect_posn * position); | ||||
/*! \fn void get_ecl_from_rect (struct ln_rect_posn * rect, struct ln_lnlat | ||||
_posn * posn) | ||||
* \ingroup transform | ||||
* Transform an objects rectangular coordinates into ecliptical coordinates. | ||||
*/ | ||||
/* Equ 33.2 | ||||
*/ | ||||
void get_ecl_from_rect (struct ln_rect_posn * rect, struct ln_lnlat_posn * | ||||
posn); | ||||
/*! \defgroup VSOP87 VSOP87 Theory | ||||
* | ||||
* Thanks to Messrs. Bretagnon and Francou for publishing planetary | ||||
* solution VSOP87. | ||||
*/ | ||||
/*! \fn void vsop87_to_fk5 (struct ln_helio_posn * position, double JD); | ||||
* \ingroup VSOP87 | ||||
* \brief Transform from VSOP87 to FK5 reference system. | ||||
*/ | ||||
/* equation 31.3 Pg 207 */ | ||||
/* JD Julian Day */ | ||||
void vsop87_to_fk5 (struct ln_helio_posn * position, double JD); | ||||
/*! \defgroup earth Earth | ||||
* | ||||
* Functions relating to the planet Earth. | ||||
* | ||||
* All angles are expressed in degrees. | ||||
*/ | ||||
/*! \fn void get_earth_centre_dist (float height, double latitude, double * | ||||
p_sin_o, double * p_cos_o); | ||||
* \ingroup earth | ||||
* \brief Calculate Earth globe centre distance. | ||||
*/ | ||||
void get_earth_centre_dist (float height, double latitude, double * p_sin_o | ||||
, double * p_cos_o); | ||||
/*! \defgroup nutation Nutation | ||||
* | ||||
* Nutation is a period oscillation of the Earths rotational axis around it' | ||||
s | ||||
* mean position. | ||||
* | ||||
* All angles are expressed in degrees. | ||||
*/ | ||||
/*! \fn void get_nutation (double JD, struct ln_nutation * nutation); | ||||
* \ingroup nutation | ||||
* \brief Calculate nutation. | ||||
*/ | ||||
void get_nutation (double JD, struct ln_nutation * nutation); | ||||
/*! \defgroup apparent Apparent position of a Star | ||||
* | ||||
* The apparent position of a star is it's position as seen from | ||||
* the centre of the Earth. | ||||
* | ||||
* All angles are expressed in degrees. | ||||
*/ | ||||
/*! \fn void get_apparent_posn (struct ln_equ_posn * mean_position, struct | ||||
ln_equ_posn * proper_motion, double JD, struct ln_equ_posn * position); | ||||
* \brief Calculate the apparent position of a star. | ||||
* \ingroup apparent | ||||
*/ | ||||
void get_apparent_posn | ||||
(struct ln_equ_posn * mean_position, | ||||
struct ln_equ_posn * proper_motion, | ||||
double JD, | ||||
struct ln_equ_posn * position); | ||||
/*! \defgroup precession Precession. | ||||
* | ||||
* Precession is the changing direction of the Earth's rotational axis over | ||||
time and | ||||
* is due to the gravitational influence of the Sun and the Moon. | ||||
* | ||||
* All angles are expressed in degrees. | ||||
*/ | ||||
/*! \fn void get_equ_prec (struct ln_equ_posn * mean_position, double JD, s | ||||
truct ln_equ_posn * position); | ||||
* \brief Calculate the effects of precession on equatorial coordinates. | ||||
* \ingroup precession | ||||
*/ | ||||
/* Equ 20.2, 20.3, 20.4 pg 126 */ | ||||
void get_equ_prec | ||||
(struct ln_equ_posn * mean_position, | ||||
double JD, | ||||
struct ln_equ_posn * position); | ||||
/*! \fn void get_ecl_prec (struct ln_lnlat_posn * mean_position, double JD, | ||||
struct ln_lnlat_posn * position); | ||||
* \brief Calculate the effects of precession on ecliptical coordinates. | ||||
* \ingroup precession | ||||
*/ | ||||
/* Equ 20.5, 20.6 pg 128 */ | ||||
void get_ecl_prec | ||||
(struct ln_lnlat_posn * mean_position, | ||||
double JD, | ||||
struct ln_lnlat_posn * position); | ||||
/*! \defgroup motion Proper Motion. | ||||
* Proper motion is the motion in space of a star between 2 epochs. It has c | ||||
omponents | ||||
* in right ascension and in declination. | ||||
* | ||||
* All angles are expressed in degrees. | ||||
*/ | ||||
/*! \fn void get_equ_pm (struct ln_equ_posn * mean_position, struct ln_equ_ | ||||
posn * proper_motion, double JD, struct ln_equ_posn * position); | ||||
* \brief Calculate the proper motion of a star. | ||||
* \ingroup motion | ||||
*/ | ||||
/* Equ 20.2, 20.3, 20.4 pg 126 */ | ||||
void get_equ_pm | ||||
(struct ln_equ_posn * mean_position, | ||||
struct ln_equ_posn * proper_motion, | ||||
double JD, | ||||
struct ln_equ_posn * position); | ||||
/*! \defgroup aberration Aberration | ||||
* | ||||
* Aberration: need a description. | ||||
* | ||||
* All angles are expressed in degrees. | ||||
*/ | ||||
/*! \fn void get_equ_aber (struct ln_equ_posn * mean_position, double JD, s | ||||
truct ln_equ_posn * position); | ||||
* \brief Calculate equatorial coordinates with the effects of aberration. | ||||
* \ingroup aberration | ||||
*/ | ||||
/* Equ 22.1, 22.3, 22.4 and Ron-Vondrak expression */ | ||||
void get_equ_aber | ||||
(struct ln_equ_posn * mean_position, | ||||
double JD, | ||||
struct ln_equ_posn * position); | ||||
/*! \fn void get_ecl_aber (struct ln_lnlat_posn * mean_position, double JD, | ||||
struct ln_lnlat_posn * position); | ||||
* \brief Calculate ecliptical coordinates with the effects of aberration. | ||||
* \ingroup aberration | ||||
*/ | ||||
/* Equ 22.1, 22.2 pg 139 */ | ||||
void get_ecl_aber | ||||
(struct ln_lnlat_posn * mean_position, | ||||
double JD, | ||||
struct ln_lnlat_posn * position); | ||||
/*! \defgroup solar Solar. | ||||
* | ||||
* Calculate solar ecliptical/equatorial coordinates for a given julian date | ||||
. | ||||
* Accuracy 0.01 arc second error - uses VSOP87 solution. | ||||
* | ||||
* All angles are expressed in degrees. | ||||
*/ | ||||
#define SOLAR_STANDART_HORIZONT -0.8333 | ||||
#define CIVIL_HORIZONT -6.0 | ||||
#define NAUTIC_HORIZONT -12.0 | ||||
#define ASTRONOMICAL_HORIZONT -18.0 | ||||
/*! \fn double get_solar_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 Sun. | ||||
* \ingroup solar | ||||
*/ | ||||
int get_solar_rst_horizont (double JD, struct ln_lnlat_posn * observer, dou | ||||
ble horizont, struct ln_rst_time * rst); | ||||
/*! \fn double get_solar_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 Sun. | ||||
* \ingroup solar | ||||
*/ | ||||
int get_solar_rst (double JD, struct ln_lnlat_posn * observer, struct ln_rs | ||||
t_time * rst); | ||||
/*! \fn void get_geom_solar_coords (double JD, struct ln_helio_posn * posit | ||||
ion); | ||||
* \brief Calculate solar geometric coordinates. | ||||
* \ingroup solar | ||||
*/ | ||||
void get_geom_solar_coords | ||||
(double JD, | ||||
struct ln_helio_posn * position); | ||||
/*! \fn void get_equ_solar_coords (double JD, struct ln_equ_posn * position | ||||
); | ||||
* \brief Calculate apparent equatorial coordinates. | ||||
* \ingroup solar | ||||
*/ | ||||
void get_equ_solar_coords | ||||
(double JD, | ||||
struct ln_equ_posn * position); | ||||
/*! \fn void get_ecl_solar_coords (double JD, struct ln_lnlat_posn * positi | ||||
on); | ||||
* \brief Calculate apparent ecliptical coordinates. | ||||
* \ingroup solar | ||||
*/ | ||||
void get_ecl_solar_coords | ||||
(double JD, | ||||
struct ln_lnlat_posn * position); | ||||
/*! \fn void get_geo_solar_coords (double JD, struct ln_rect_posn * positio | ||||
n) | ||||
* \brief Calculate geocentric coordinates (rectangular) | ||||
* \ingroup solar | ||||
*/ | ||||
void get_geo_solar_coords (double JD, struct ln_rect_posn * position); | ||||
/*! \fn double get_solar_sdiam (double JD) | ||||
* \brief Calcaluate the semidiameter of the Sun in arc seconds. | ||||
* \ingroup solar | ||||
*/ | ||||
double get_solar_sdiam (double JD); | ||||
/*! \defgroup mercury Mercury | ||||
* | ||||
* Functions relating to the planet Mercury. | ||||
* | ||||
* All angles are expressed in degrees. | ||||
*/ | ||||
/*! \fn double get_mercury_sdiam (double JD) | ||||
* \brief Calcaluate the semidiameter of Mercury in arc seconds. | ||||
* \ingroup mercury | ||||
*/ | ||||
double get_mercury_sdiam (double JD); | ||||
/*! \fn double get_mercury_rst (double JD, struct ln_lnlat_posn * observer, | ||||
struct ln_rst_time * rst); | ||||
* \brief Calculate the time of rise, set and transit for Mercury. | ||||
* \ingroup mercury | ||||
*/ | ||||
int get_mercury_rst (double JD, struct ln_lnlat_posn * observer, struct ln_ | ||||
rst_time * rst); | ||||
/*! \fn void get_mercury_helio_coords (double JD, struct ln_helio_posn * po | ||||
sition); | ||||
* \brief Calculate Mercury's heliocentric coordinates | ||||
* \ingroup mercury | ||||
*/ | ||||
/* Chapter 31 Pg 206-207 Equ 31.1 31.2 , 31.3 using VSOP 87 */ | ||||
void get_mercury_helio_coords | ||||
(double JD, | ||||
struct ln_helio_posn * position); | ||||
/*! \fn void get_mercury_equ_coords (double JD, struct ln_equ_posn * positi | ||||
on); | ||||
* \brief Calculate Mercury's equatorial coordinates | ||||
* \ingroup mercury | ||||
*/ | ||||
/* Chapter 31 Pg 206-207 Equ 31.1 31.2 , 31.3 using VSOP 87 */ | ||||
void get_mercury_equ_coords | ||||
(double JD, | ||||
struct ln_equ_posn * position); | ||||
/*! \fn double get_mercury_earth_dist (double JD); | ||||
* \brief Calculate the distance between Mercury and the Earth. | ||||
* \ingroup mercury | ||||
* \return Distance in AU | ||||
*/ | ||||
/* Chapter ?? */ | ||||
double get_mercury_earth_dist (double JD); | ||||
/*! \fn double get_mercury_sun_dist (double JD); | ||||
* \brief Calculate the distance between Mercury and the Sun in AU | ||||
* \ingroup mercury | ||||
* \return Distance in AU | ||||
*/ | ||||
/* Chapter ?? */ | ||||
double get_mercury_sun_dist (double JD); | ||||
/*! \fn double get_mercury_magnitude (double JD); | ||||
* \brief Calculate the visible magnitude of Mercury | ||||
* \ingroup mercury | ||||
* \return Visible magnitude of Mercury | ||||
*/ | ||||
/* Chapter ?? */ | ||||
double get_mercury_magnitude (double JD); | ||||
/*! \fn double get_mercury_disk (double JD); | ||||
* \brief Calculate the illuminated fraction of Mercury's disk | ||||
* \ingroup mercury | ||||
* \return Illuminated fraction of mercurys disk | ||||
*/ | ||||
/* Chapter 41 */ | ||||
double get_mercury_disk (double JD); | ||||
/*! \fn double get_mercury_phase (double JD); | ||||
* \brief Calculate the phase angle of Mercury (Sun - Mercury - Earth) | ||||
* \ingroup mercury | ||||
* \return Phase angle of Mercury (degrees) | ||||
*/ | ||||
/* Chapter 41 */ | ||||
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 | ||||
* | ||||
* Functions relating to the planet Venus. | ||||
* | ||||
* All angles are expressed in degrees. | ||||
*/ | ||||
/*! \fn double get_venus_sdiam (double JD) | ||||
* \brief Calcaluate the semidiameter of Venus in arc seconds. | ||||
* \ingroup venus | ||||
*/ | ||||
double get_venus_sdiam (double JD); | ||||
/*! \fn double get_venus_rst (double JD, struct ln_lnlat_posn * observer, s | ||||
truct ln_rst_time * rst); | ||||
* \brief Calculate the time of rise, set and transit for Venus. | ||||
* \ingroup venus | ||||
*/ | ||||
int get_venus_rst (double JD, struct ln_lnlat_posn * observer, struct ln_rs | ||||
t_time * rst); | ||||
/*! \fn void get_venus_helio_coords (double JD, struct ln_helio_posn * posi | ||||
tion); | ||||
* \brief Calvulate Venus heliocentric coordinates | ||||
* \ingroup venus | ||||
*/ | ||||
/* Chapter 31 Pg 206-207 Equ 31.1 31.2 , 31.3 using VSOP 87 */ | ||||
void get_venus_helio_coords | ||||
(double JD, | ||||
struct ln_helio_posn * position); | ||||
/*! \fn void get_venus_equ_coords (double JD, struct ln_equ_posn * position | ||||
); | ||||
* \brief Calculate Venus equatorial coordinates | ||||
* \ingroup venus | ||||
*/ | ||||
/* Chapter 31 Pg 206-207 Equ 31.1 31.2 , 31.3 using VSOP 87 */ | ||||
void get_venus_equ_coords | ||||
(double JD, | ||||
struct ln_equ_posn * position); | ||||
/*! \fn double get_venus_earth_dist (double JD); | ||||
* \brief Calculate the distance between Venus and the Earth. | ||||
* \ingroup venus | ||||
* \return Distance in AU | ||||
*/ | ||||
/* Chapter ?? */ | ||||
double get_venus_earth_dist (double JD); | ||||
/*! \fn double get_venus_sun_dist (double JD); | ||||
* \brief Calculate the distance between Venus and the Sun. | ||||
* \ingroup venus | ||||
* \return Distance in AU | ||||
*/ | ||||
/* Chapter ?? */ | ||||
double get_venus_sun_dist (double JD); | ||||
/*! \fn double get_venus_magnitude (double JD); | ||||
* \brief Calculate the visible magnitude of Venus | ||||
* \ingroup venus | ||||
* \return Visible magnitude of Venus | ||||
*/ | ||||
/* Chapter ?? */ | ||||
double get_venus_magnitude (double JD); | ||||
/*! \fn double get_venus_disk (double JD); | ||||
* \brief Calculate the illuminated fraction of Venus disk | ||||
* \ingroup venus | ||||
* \return Illuminated fraction of Venus disk | ||||
*/ | ||||
/* Chapter 41 */ | ||||
double get_venus_disk (double JD); | ||||
/*! \fn double get_venus_phase (double JD); | ||||
* \brief Calculate the phase angle of Venus. | ||||
* \ingroup venus | ||||
* \return Phase angle of Venus (degrees) | ||||
*/ | ||||
/* Chapter 41 */ | ||||
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 | ||||
*/ | ||||
/*! \fn void get_earth_helio_coords (double JD, struct ln_helio_posn * posi | ||||
tion); | ||||
* \brief Calculate Earth's heliocentric coordinates | ||||
* \ingroup earth | ||||
*/ | ||||
/* Chapter 31 Pg 206-207 Equ 31.1 31.2 , 31.3 using VSOP 87 */ | ||||
void get_earth_helio_coords | ||||
(double JD, | ||||
struct ln_helio_posn * position); | ||||
/*! \fn void get_earth_sun_dist (double JD); | ||||
* \brief Calculate the distance between Earth and the Sun. | ||||
* \ingroup earth | ||||
* \return Distance in AU | ||||
*/ | ||||
/* Chapter ?? */ | ||||
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 | ||||
* | ||||
* Functions relating to the planet Mars. | ||||
* | ||||
* All angles are expressed in degrees. | ||||
*/ | ||||
/*! \fn double get_mars_sdiam (double JD) | ||||
* \brief Calcaluate the semidiameter of Mars in arc seconds. | ||||
* \ingroup mars | ||||
*/ | ||||
double get_mars_sdiam (double JD); | ||||
/*! \fn double get_mars_rst (double JD, struct ln_lnlat_posn * observer, st | ||||
ruct ln_rst_time * rst); | ||||
* \brief Calculate the time of rise, set and transit for Mars. | ||||
* \ingroup mars | ||||
*/ | ||||
int get_mars_rst (double JD, struct ln_lnlat_posn * observer, struct ln_rst | ||||
_time * rst); | ||||
/*! \fn void get_mars_helio_coords (double JD, struct ln_helio_posn * posit | ||||
ion); | ||||
* \brief Calculate Mars heliocentric coordinates | ||||
* \ingroup mars | ||||
*/ | ||||
/* Chapter 31 Pg 206-207 Equ 31.1 31.2 , 31.3 using VSOP 87 */ | ||||
void get_mars_helio_coords | ||||
(double JD, | ||||
struct ln_helio_posn * position); | ||||
/*! \fn void get_mars_equ_coords (double JD, struct ln_equ_posn * position) | ||||
; | ||||
* \brief Calculate Mars equatorial coordinates | ||||
* \ingroup mars | ||||
*/ | ||||
/* Chapter 31 Pg 206-207 Equ 31.1 31.2 , 31.3 using VSOP 87 */ | ||||
void get_mars_equ_coords | ||||
(double JD, | ||||
struct ln_equ_posn * position); | ||||
/*! \fn double get_mars_earth_dist (double JD); | ||||
* \brief Calculate the distance between Mars and the Earth. | ||||
* \ingroup mars | ||||
* \return Distance in AU | ||||
*/ | ||||
/* Chapter ?? */ | ||||
double get_mars_earth_dist (double JD); | ||||
/*! \fn double get_mars_sun_dist (double JD); | ||||
* \brief Calculate the distance between Mars and the Sun. | ||||
* \ingroup mars | ||||
* \return Distance in AU | ||||
*/ | ||||
/* Chapter ?? */ | ||||
double get_mars_sun_dist (double JD); | ||||
/*! \fn double get_mars_magnitude (double JD); | ||||
* \brief Calculate the visible magnitude of Mars | ||||
* \ingroup mars | ||||
* \return Visible magnitude of Mars | ||||
*/ | ||||
/* Chapter ?? */ | ||||
double get_mars_magnitude (double JD); | ||||
/*! \fn double get_mars_disk (double JD); | ||||
* \brief Calculate the illuminated fraction of Mars disk | ||||
* \ingroup mars | ||||
* \return Illuminated fraction of Mars disk | ||||
*/ | ||||
/* Chapter 41 */ | ||||
double get_mars_disk (double JD); | ||||
/*! \fn double get_mars_phase (double JD); | ||||
* \brief Calculate the phase angle of Mars. | ||||
* \ingroup mars | ||||
* \return Phase angle of Mars (degrees) | ||||
*/ | ||||
/* Chapter 41 */ | ||||
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 | ||||
* | ||||
* Functions relating to the planet Jupiter. | ||||
* | ||||
* All angles are expressed in degrees. | ||||
*/ | ||||
/*! \fn double get_jupiter_equ_sdiam (double JD) | ||||
* \brief Calcaluate the eqatorial semidiameter of Jupiter in arc seconds. | ||||
* \ingroup jupiter | ||||
*/ | ||||
double get_jupiter_equ_sdiam (double JD); | ||||
/*! \fn double get_jupiter_pol_sdiam (double JD) | ||||
* \brief Calcaluate the polar semidiameter of Jupiter in arc seconds. | ||||
* \ingroup jupiter | ||||
*/ | ||||
double get_jupiter_pol_sdiam (double JD); | ||||
/*! \fn double get_jupiter_rst (double JD, struct ln_lnlat_posn * observer, | ||||
struct ln_rst_time * rst); | ||||
* \brief Calculate the time of rise, set and transit for Jupiter. | ||||
* \ingroup jupiter | ||||
*/ | ||||
int get_jupiter_rst (double JD, struct ln_lnlat_posn * observer, struct ln_ | ||||
rst_time * rst); | ||||
/*! \fn void get_jupiter_helio_coords (double JD, struct ln_helio_posn * po | ||||
sition); | ||||
* \brief Calculate Jupiter's heliocentric coordinates | ||||
* \ingroup jupiter | ||||
*/ | ||||
/* Chapter 31 Pg 206-207 Equ 31.1 31.2 , 31.3 using VSOP 87 */ | ||||
void get_jupiter_helio_coords | ||||
(double JD, struct ln_helio_posn * position); | ||||
/*! \fn void get_jupiter_equ_coords (double JD, struct ln_equ_posn * positi | ||||
on); | ||||
* \brief Calculate Jupiter's equatorial coordinates. | ||||
* \ingroup jupiter | ||||
*/ | ||||
/* Chapter 31 Pg 206-207 Equ 31.1 31.2 , 31.3 using VSOP 87 */ | ||||
void get_jupiter_equ_coords | ||||
(double JD, | ||||
struct ln_equ_posn * position); | ||||
/*! \fn double get_jupiter_earth_dist (double JD); | ||||
* \brief Calculate the distance between Jupiter and the Earth. | ||||
* \ingroup jupiter | ||||
* \return Distance in AU | ||||
*/ | ||||
/* Chapter ?? */ | ||||
double get_jupiter_earth_dist (double JD); | ||||
/*! \fn double get_jupiter_sun_dist (double JD); | ||||
* \brief Calculate the distance between Jupiter and the Sun. | ||||
* \ingroup jupiter | ||||
* \return Distance in AU | ||||
*/ | ||||
/* Chapter ?? */ | ||||
double get_jupiter_sun_dist (double JD); | ||||
/*! \fn double get_jupiter_magnitude (double JD); | ||||
* \brief Calculate the visible magnitude of Jupiter | ||||
* \ingroup jupiter | ||||
* \return Visible magnitude of Jupiter | ||||
*/ | ||||
/* Chapter ?? */ | ||||
double get_jupiter_magnitude (double JD); | ||||
/*! \fn double get_jupiter_disk (double JD); | ||||
* \brief Calculate the illuminated fraction of Jupiter's disk | ||||
* \ingroup jupiter | ||||
* \return Illuminated fraction of Jupiter's disk | ||||
*/ | ||||
/* Chapter 41 */ | ||||
double get_jupiter_disk (double JD); | ||||
/*! \fn double get_jupiter_phase (double JD); | ||||
* \brief Calculate the phase angle of Jupiter. | ||||
* \ingroup jupiter | ||||
* \return Phase angle of Jupiter (degrees) | ||||
*/ | ||||
/* Chapter 41 */ | ||||
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 | ||||
* | ||||
* Functions relating to the planet Saturn. | ||||
* | ||||
* All angles are expressed in degrees. | ||||
*/ | ||||
/*! \fn double get_saturn_equ_sdiam (double JD) | ||||
* \brief Calcaluate the equatorial semidiameter of Saturn in arc seconds. | ||||
* \ingroup saturn | ||||
*/ | ||||
double get_saturn_equ_sdiam (double JD); | ||||
/*! \fn double get_saturn_pol_sdiam (double JD) | ||||
* \brief Calcaluate the polar semidiameter of Saturn in arc seconds. | ||||
* \ingroup saturn | ||||
*/ | ||||
double get_saturn_pol_sdiam (double JD); | ||||
/*! \fn double get_saturn_rst (double JD, struct ln_lnlat_posn * observer, | ||||
struct ln_rst_time * rst); | ||||
* \brief Calculate the time of rise, set and transit for Saturn. | ||||
* \ingroup saturn | ||||
*/ | ||||
int get_saturn_rst (double JD, struct ln_lnlat_posn * observer, struct ln_r | ||||
st_time * rst); | ||||
/*! \fn void get_saturn_helio_coords (double JD, struct ln_helio_posn * pos | ||||
ition); | ||||
* \brief Calculate Saturn's heliocentric coordinates. | ||||
* \ingroup saturn | ||||
*/ | ||||
/* Chapter 31 Pg 206-207 Equ 31.1 31.2 , 31.3 using VSOP 87 */ | ||||
void get_saturn_helio_coords | ||||
(double JD, struct ln_helio_posn * position); | ||||
/*! \fn void get_saturn_equ_coords (double JD, struct ln_equ_posn * positio | ||||
n); | ||||
* \brief Calculate Saturn's equatorial coordinates. | ||||
* \ingroup saturn | ||||
*/ | ||||
/* Chapter 31 Pg 206-207 Equ 31.1 31.2 , 31.3 using VSOP 87 */ | ||||
void get_saturn_equ_coords | ||||
(double JD, | ||||
struct ln_equ_posn * position); | ||||
/*! \fn double get_saturn_earth_dist (double JD); | ||||
* \brief Calculate the distance between Saturn and the Earth. | ||||
* \ingroup saturn | ||||
* \return Distance in AU | ||||
*/ | ||||
/* Chapter ?? */ | ||||
double get_saturn_earth_dist (double JD); | ||||
/*! \fn double get_saturn_sun_dist (double JD); | ||||
* \brief Calculate the distance between Saturn and the Sun. | ||||
* \ingroup saturn | ||||
* \return Distance in AU | ||||
*/ | ||||
/* Chapter ?? */ | ||||
double get_saturn_sun_dist (double JD); | ||||
/*! \fn double get_saturn_magnitude (double JD); | ||||
* \brief Calculate the visible magnitude of Saturn | ||||
* \ingroup saturn | ||||
* \return Visible magnitude of Saturn | ||||
*/ | ||||
/* Chapter ?? */ | ||||
double get_saturn_magnitude (double JD); | ||||
/*! \fn double get_saturn_disk (double JD); | ||||
* \brief Calculate the illuminated fraction of Saturn's disk | ||||
* \ingroup saturn | ||||
* \return Illuminated fraction of Saturn's disk | ||||
*/ | ||||
/* Chapter 41 */ | ||||
double get_saturn_disk (double JD); | ||||
/*! \fn double get_saturn_phase (double JD); | ||||
* \brief Calculate the phase angle of Saturn. | ||||
* \ingroup saturn | ||||
* \return Phase angle of Saturn (degrees) | ||||
*/ | ||||
/* Chapter 41 */ | ||||
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 | ||||
* | ||||
* Functions relating to the planet Uranus. | ||||
* | ||||
* All angles are expressed in degrees. | ||||
*/ | ||||
/*! \fn double get_uranus_sdiam (double JD) | ||||
* \brief Calcaluate the semidiameter of Uranus in arc seconds. | ||||
* \ingroup uranus | ||||
*/ | ||||
double get_uranus_sdiam (double JD); | ||||
/*! \fn double get_uranus_rst (double JD, struct ln_lnlat_posn * observer, | ||||
struct ln_rst_time * rst); | ||||
* \brief Calculate the time of rise, set and transit for Uranus. | ||||
* \ingroup uranus | ||||
*/ | ||||
int get_uranus_rst (double JD, struct ln_lnlat_posn * observer, struct ln_r | ||||
st_time * rst); | ||||
/*! \fn void get_uranus_helio_coords (double JD, struct ln_helio_posn * pos | ||||
ition); | ||||
* \brief Calculate Uranus heliocentric coordinates | ||||
* \ingroup uranus | ||||
*/ | ||||
/* Chapter 31 Pg 206-207 Equ 31.1 31.2 , 31.3 using VSOP 87 */ | ||||
void get_uranus_helio_coords | ||||
(double JD, struct ln_helio_posn * position); | ||||
/*! \fn void get_uranus_equ_coords (double JD, struct ln_equ_posn * positio | ||||
n); | ||||
* \brief Calculate Uranus equatorial coordinates. | ||||
* \ingroup uranus | ||||
*/ | ||||
/* Chapter 31 Pg 206-207 Equ 31.1 31.2 , 31.3 using VSOP 87 */ | ||||
void get_uranus_equ_coords | ||||
(double JD, | ||||
struct ln_equ_posn * position); | ||||
/*! \fn double get_uranus_earth_dist (double JD); | ||||
* \brief Calculate the distance between Uranus and the Earth. | ||||
* \ingroup uranus | ||||
* \return Distance in AU | ||||
*/ | ||||
/* Chapter ?? */ | ||||
double get_uranus_earth_dist (double JD); | ||||
/*! \fn double get_uranus_sun_dist (double JD); | ||||
* \brief Calculate the distance between Uranus and the Sun. | ||||
* \ingroup uranus | ||||
* \return Distance in AU | ||||
*/ | ||||
/* Chapter ?? */ | ||||
double get_uranus_sun_dist (double JD); | ||||
/*! \fn double get_uranus_magnitude (double JD); | ||||
* \brief Calculate the visible magnitude of Uranus | ||||
* \ingroup uranus | ||||
* \return Visible magnitude of Uranus | ||||
*/ | ||||
/* Chapter ?? */ | ||||
double get_uranus_magnitude (double JD); | ||||
/*! \fn double get_uranus_disk (double JD); | ||||
* \brief Calculate the illuminated fraction of Uranus's disk | ||||
* \ingroup uranus | ||||
* \return Illuminated fraction of Uranus disk | ||||
*/ | ||||
/* Chapter 41 */ | ||||
double get_uranus_disk (double JD); | ||||
/*! \fn double get_uranus_phase (double JD); | ||||
* \brief Calculate the phase angle of Uranus. | ||||
* \ingroup uranus | ||||
* \return Phase angle of Uranus (degrees) | ||||
*/ | ||||
/* Chapter 41 */ | ||||
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 | ||||
* | ||||
* Functions relating to the planet Neptune. | ||||
* | ||||
* All angles are expressed in degrees. | ||||
*/ | ||||
/*! \fn double get_neptune_sdiam (double JD) | ||||
* \brief Calcaluate the semidiameter of Neptune in arc seconds. | ||||
* \ingroup neptune | ||||
*/ | ||||
double get_neptune_sdiam (double JD); | ||||
/*! \fn double get_neptune_rst (double JD, struct ln_lnlat_posn * observer, | ||||
struct ln_rst_time * rst); | ||||
* \brief Calculate the time of rise, set and transit for Neptune. | ||||
* \ingroup neptune | ||||
*/ | ||||
int get_neptune_rst (double JD, struct ln_lnlat_posn * observer, struct ln_ | ||||
rst_time * rst); | ||||
/*! \fn void get_neptune_helio_coords (double JD, struct ln_helio_posn * po | ||||
sition); | ||||
* \brief Calculate Neptune's heliocentric coordinates. | ||||
* \ingroup neptune | ||||
*/ | ||||
/* Chapter 31 Pg 206-207 Equ 31.1 31.2 , 31.3 using VSOP 87 */ | ||||
void get_neptune_helio_coords | ||||
(double JD, struct ln_helio_posn * position); | ||||
/*! \fn void get_neptune_equ_coords (double JD, struct ln_equ_posn * positi | ||||
on); | ||||
* \brief Calculate Neptune's equatorial coordinates. | ||||
* \ingroup neptune | ||||
*/ | ||||
/* Chapter 31 Pg 206-207 Equ 31.1 31.2 , 31.3 using VSOP 87 */ | ||||
void get_neptune_equ_coords | ||||
(double JD, | ||||
struct ln_equ_posn * position); | ||||
/*! \fn double get_neptune_earth_dist (double JD); | ||||
* \brief Calculate the distance between Neptune and the Earth. | ||||
* \ingroup neptune | ||||
* \return Distance in AU | ||||
*/ | ||||
/* Chapter ?? */ | ||||
double get_neptune_earth_dist (double JD); | ||||
/*! \fn double get_neptune_sun_dist (double JD); | ||||
* \brief Calculate the distance between Neptune and the Sun. | ||||
* \ingroup neptune | ||||
* \return Distance in AU | ||||
*/ | ||||
/* Chapter ?? */ | ||||
double get_neptune_sun_dist (double JD); | ||||
/*! \fn double get_neptune_magnitude (double JD); | ||||
* \brief Calculate the visible magnitude of Neptune. | ||||
* \ingroup neptune | ||||
* \return Visisble magnitude of Neptune. | ||||
*/ | ||||
/* Chapter ?? */ | ||||
double get_neptune_magnitude (double JD); | ||||
/*! \fn double get_neptune_disk (double JD); | ||||
* \brief Calculate the illuminated fraction of Neptune's disk. | ||||
* \ingroup neptune | ||||
* \return Illuminated fraction of Neptune's disk. | ||||
*/ | ||||
/* Chapter 41 */ | ||||
double get_neptune_disk (double JD); | ||||
/*! \fn double get_neptune_phase (double JD); | ||||
* \brief Calculate the phase angle of Neptune. | ||||
* \ingroup neptune | ||||
* \return Phase angle of Neptune (degrees) | ||||
*/ | ||||
/* Chapter 41 */ | ||||
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 | ||||
* | ||||
* Functions relating to the planet Pluto. | ||||
* | ||||
* All angles are expressed in degrees. | ||||
*/ | ||||
/*! \fn double get_pluto_sdiam (double JD) | ||||
* \brief Calcaluate the semidiameter of Pluto in arc seconds. | ||||
* \ingroup pluto | ||||
*/ | ||||
double get_pluto_sdiam (double JD); | ||||
/*! \fn double get_pluto_rst (double JD, struct ln_lnlat_posn * observer, s | ||||
truct ln_rst_time * rst); | ||||
* \brief Calculate the time of rise, set and transit for Pluto. | ||||
* \ingroup pluto | ||||
*/ | ||||
int get_pluto_rst (double JD, struct ln_lnlat_posn * observer, struct ln_rs | ||||
t_time * rst); | ||||
/*! \fn void get_pluto_helio_coords (double JD, struct ln_helio_posn * posi | ||||
tion); | ||||
* \brief Calculate Pluto's heliocentric coordinates. | ||||
* \ingroup pluto | ||||
*/ | ||||
/* Chapter 37 Pg 263 */ | ||||
void get_pluto_helio_coords | ||||
(double JD, struct ln_helio_posn * position); | ||||
/*! \fn void get_pluto_equ_coords (double JD, struct ln_equ_posn * position | ||||
); | ||||
* \brief Calculate Pluto's equatorial coordinates. | ||||
* \ingroup pluto | ||||
*/ | ||||
/* Chapter 37 */ | ||||
void get_pluto_equ_coords | ||||
(double JD, | ||||
struct ln_equ_posn * position); | ||||
/*! \fn double get_pluto_earth_dist (double JD); | ||||
* \brief Calculate the distance between Pluto and the Earth. | ||||
* \ingroup pluto | ||||
* \return distance in AU | ||||
*/ | ||||
/* Chapter 37 */ | ||||
double get_pluto_earth_dist (double JD); | ||||
/*! \fn double get_pluto_sun_dist (double JD); | ||||
* \brief Calculate the distance between Pluto and the Sun. | ||||
* \ingroup pluto | ||||
* \return Distance in AU | ||||
*/ | ||||
/* Chapter 37 */ | ||||
double get_pluto_sun_dist (double JD); | ||||
/*! \fn double get_pluto_magnitude (double JD); | ||||
* \brief Calculate the visible magnitude of Pluto | ||||
* \ingroup pluto | ||||
* \return Visible magnitude of Pluto. | ||||
*/ | ||||
/* Chapter 41 */ | ||||
double get_pluto_magnitude (double JD); | ||||
/*! \fn double get_pluto_disk (double JD); | ||||
* \brief Calculate the illuminated fraction of Pluto's disk | ||||
* \ingroup pluto | ||||
* \return Illuminated fraction of Pluto's disk | ||||
*/ | ||||
/* Chapter 41 */ | ||||
double get_pluto_disk (double JD); | ||||
/*! \fn double get_pluto_phase (double JD); | ||||
* \brief Calculate the phase angle of Pluto. | ||||
* \ingroup pluto | ||||
* \return Phase angle of Pluto (degrees). | ||||
*/ | ||||
/* Chapter 41 */ | ||||
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 | ||||
* | ||||
* Functions relating to the Moon. | ||||
* | ||||
* All angles are expressed in degrees. | ||||
*/ | ||||
/*! \fn double get_lunar_sdiam (double JD) | ||||
* \brief Calcaluate the semidiameter of the Moon in arc seconds. | ||||
* \ingroup lunar | ||||
*/ | ||||
double get_lunar_sdiam (double JD); | ||||
/*! \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. | ||||
* \ingroup lunar | ||||
*/ | ||||
#define LUNAR_STANDART_HORIZONT 0.125 | ||||
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_rect_posn * moon, dou | ||||
ble precision); | ||||
* \brief Calculate the rectangular geocentric lunar cordinates. | ||||
* \ingroup lunar | ||||
*/ | ||||
/* ELP 2000-82B theory */ | ||||
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); | ||||
* \brief Calculate lunar equatorial coordinates. | ||||
* \ingroup lunar | ||||
*/ | ||||
void get_lunar_equ_coords | ||||
(double JD, | ||||
struct ln_equ_posn * position, double precision); | ||||
/*! \fn void get_lunar_ecl_coords (double JD, struct ln_lnlat_posn * positi | ||||
on, double precision); | ||||
* \brief Calculate lunar ecliptical coordinates. | ||||
* \ingroup lunar | ||||
*/ | ||||
void get_lunar_ecl_coords | ||||
(double JD, | ||||
struct ln_lnlat_posn * position, double precision); | ||||
/*! \fn double get_lunar_phase (double JD); | ||||
* \brief Calculate the phase angle of the Moon. | ||||
* \ingroup lunar | ||||
*/ | ||||
double get_lunar_phase (double JD); | ||||
/*! \fn double get_lunar_disk (double JD); | ||||
* \brief Calculate the illuminated fraction of the Moons disk | ||||
* \ingroup lunar | ||||
*/ | ||||
double get_lunar_disk (double JD); | ||||
/*! \fn double get_lunar_earth_dist (double JD); | ||||
* \brief Calculate the distance between the Earth and the Moon. | ||||
* \ingroup lunar | ||||
*/ | ||||
double get_lunar_earth_dist (double JD); | ||||
/*! \fn double get_lunar_bright_limb (double JD); | ||||
* \brief Calculate the position angle of the Moon's bright limb. | ||||
* \ingroup lunar | ||||
*/ | ||||
double get_lunar_bright_limb (double JD); | ||||
/*! \fn double get_lunar_long_asc_node (double JD); | ||||
* \brief Calculate the longitude of the Moon's mean ascending node. | ||||
* \ingroup lunar | ||||
*/ | ||||
double get_lunar_long_asc_node (double JD); | ||||
/*! \fn double get_lunar_long_perigee (double JD); | ||||
* \brief Calculate the longitude of the Moon's mean perigee. | ||||
* \ingroup lunar | ||||
*/ | ||||
double get_lunar_long_perigee (double JD); | ||||
/*! \defgroup elliptic Elliptic Motion | ||||
* | ||||
* Functions relating to the elliptic motion of bodies. | ||||
* | ||||
* All angles are expressed in degrees. | ||||
*/ | ||||
/*! \fn double solve_kepler (double E, double M); | ||||
* \brief Calculate the eccentric anomaly. | ||||
* \ingroup elliptic | ||||
*/ | ||||
double solve_kepler (double e, double M); | ||||
/*! \fn double get_ell_mean_anomaly (double n, double delta_JD); | ||||
* \brief Calculate the mean anomaly. | ||||
* \ingroup elliptic | ||||
*/ | ||||
double get_ell_mean_anomaly (double n, double delta_JD); | ||||
/*! \fn double get_ell_true_anomaly (double e, double E); | ||||
* \brief Calculate the true anomaly. | ||||
* \ingroup elliptic | ||||
*/ | ||||
double get_ell_true_anomaly (double e, double E); | ||||
/*! \fn double get_ell_radius_vector (double a, double e, double E); | ||||
* \brief Calculate the radius vector. | ||||
* \ingroup elliptic | ||||
*/ | ||||
double get_ell_radius_vector (double a, double e, double E); | ||||
/*! \fn double get_ell_smajor_diam (double e, double q); | ||||
* \brief Calculate the semi major diameter. | ||||
* \ingroup elliptic | ||||
*/ | ||||
double get_ell_smajor_diam (double e, double q); | ||||
/*! \fn double get_ell_sminor_diam (double e, double a); | ||||
* \brief Calculate the semi minor diameter. | ||||
* \ingroup elliptic | ||||
*/ | ||||
double get_ell_sminor_diam (double e, double a); | ||||
/*! \fn double get_ell_mean_motion (double a); | ||||
* \brief Calculate the mean daily motion (degrees/day). | ||||
* \ingroup elliptic | ||||
*/ | ||||
double get_ell_mean_motion (double a); | ||||
/*! \fn void get_ell_geo_rect_posn (struct ln_ell_orbit* orbit, double JD, | ||||
struct ln_rect_posn* posn); | ||||
* \brief Calculate the objects rectangular geocentric position. | ||||
* \ingroup elliptic | ||||
*/ | ||||
void get_ell_geo_rect_posn (struct ln_ell_orbit* orbit, double JD, struct l | ||||
n_rect_posn* posn); | ||||
/*! \fn void get_ell_helio_rect_posn (struct ln_ell_orbit* orbit, double JD | ||||
, struct ln_rect_posn* posn); | ||||
* \brief Calculate the objects rectangular heliocentric position. | ||||
* \ingroup elliptic | ||||
*/ | ||||
void get_ell_helio_rect_posn (struct ln_ell_orbit* orbit, double JD, struct | ||||
ln_rect_posn* posn); | ||||
/*! \fn double get_ell_orbit_len (struct ln_ell_orbit * orbit); | ||||
* \brief Calculate the orbital length in AU. | ||||
* \ingroup elliptic | ||||
*/ | ||||
double get_ell_orbit_len (struct ln_ell_orbit * orbit); | ||||
/*! \fn double get_ell_orbit_vel (double JD, struct ln_ell_orbit * orbit); | ||||
* \brief Calculate orbital velocity in km/s. | ||||
* \ingroup elliptic | ||||
*/ | ||||
double get_ell_orbit_vel (double JD, struct ln_ell_orbit * orbit); | ||||
/*! \fn double get_ell_orbit_pvel (struct ln_ell_orbit * orbit); | ||||
* \brief Calculate orbital velocity at perihelion in km/s. | ||||
* \ingroup elliptic | ||||
*/ | ||||
double get_ell_orbit_pvel (struct ln_ell_orbit * orbit); | ||||
/*! \fn double get_ell_orbit_avel (struct ln_ell_orbit * orbit); | ||||
* \ingroup elliptic | ||||
* \brief Calculate the orbital velocity at aphelion in km/s. | ||||
*/ | ||||
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); | ||||
* \ingroup elliptic | ||||
* \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); | ||||
/*! \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) | ||||
* \brief Calculate the distance between a body and the Sun | ||||
* \ingroup elliptic | ||||
*/ | ||||
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) | ||||
* \brief Calculate the distance between a body and the Earth | ||||
* \ingroup elliptic | ||||
*/ | ||||
double get_ell_body_earth_dist (double JD, struct ln_ell_orbit * orbit); | ||||
/*! | ||||
* \fn void get_ell_body_equ_coords (double JD, struct ln_ell_orbit * orbit, | ||||
struct ln_equ_posn * posn) | ||||
* \brief Calculate a bodies equatorial coords | ||||
* \ingroup elliptic | ||||
*/ | ||||
void get_ell_body_equ_coords (double JD, struct ln_ell_orbit * orbit, struc | ||||
t ln_equ_posn * posn); | ||||
/*! \fn double get_ell_body_rst (double JD, struct ln_lnlat_posn * observer | ||||
, struct ln_ell_orbit * orbit, struct ln_rst_time * rst); | ||||
* \brief Calculate the time of rise, set and transit for a body with an ell | ||||
iptic orbit. | ||||
* \ingroup elliptic | ||||
*/ | ||||
int get_ell_body_rst (double JD, struct ln_lnlat_posn * observer, struct ln | ||||
_ell_orbit * orbit, struct ln_rst_time * rst); | ||||
/*!\fn double get_ell_last_perihelion (double epoch_JD, double M, double n) | ||||
; | ||||
* \brief Calculate the julian day of the last perihelion. | ||||
* \ingroup elliptic | ||||
*/ | ||||
double get_ell_last_perihelion (double epoch_JD, double M, double n); | ||||
/*! \defgroup parabolic Parabolic Motion | ||||
* | ||||
* Functions relating to the Parabolic motion of bodies. | ||||
* | ||||
* All angles are expressed in degrees. | ||||
*/ | ||||
/*! \fn double solve_barker (double q, double t); | ||||
* \brief Solve Barkers equation. | ||||
* \ingroup parabolic | ||||
*/ | ||||
double solve_barker (double q, double t); | ||||
/*! \fn double get_par_true_anomaly (double q, double t); | ||||
* \ingroup parabolic | ||||
* \brief Calculate the true anomaly. | ||||
*/ | ||||
double get_par_true_anomaly (double q, double t); | ||||
/*! \fn double get_par_radius_vector (double q, double t); | ||||
* \ingroup parabolic | ||||
* \brief Calculate the radius vector. | ||||
*/ | ||||
double get_par_radius_vector (double q, double t); | ||||
/*! \fn void get_par_geo_rect_posn (struct ln_par_orbit* orbit, double JD, | ||||
struct ln_rect_posn* posn); | ||||
* \ingroup parabolic | ||||
* \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); | ||||
/*! \fn void get_par_helio_rect_posn (struct ln_par_orbit* orbit, double JD | ||||
, struct ln_rect_posn* posn); | ||||
* \ingroup parabolic | ||||
* \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); | ||||
/*! | ||||
* \fn void get_par_body_equ_coords (double JD, struct ln_par_orbit * orbit, | ||||
struct ln_equ_posn * posn) | ||||
* \ingroup parabolic | ||||
* \brief Calculate a bodies equatorial coordinates. | ||||
*/ | ||||
void get_par_body_equ_coords (double JD, struct ln_par_orbit * orbit, struc | ||||
t ln_equ_posn * posn); | ||||
/*! | ||||
* \fn double get_par_body_earth_dist (double JD, struct ln_par_orbit * orbi | ||||
t) | ||||
* \ingroup parabolic | ||||
* \brief Calculate the distance between a body and the Earth. | ||||
*/ | ||||
double get_par_body_earth_dist (double JD, struct ln_par_orbit * orbit); | ||||
/*! | ||||
* \fn double get_par_body_solar_dist (double JD, struct ln_par_orbit * orbi | ||||
t) | ||||
* \ingroup parabolic | ||||
* \brief Calculate the distance between a body and the Sun. | ||||
*/ | ||||
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); | ||||
* \ingroup parabolic | ||||
* \brief Calculate the pase angle of the body. | ||||
*/ | ||||
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); | ||||
* \brief Calculate the time of rise, set and transit for a body with a para | ||||
bolic orbit. | ||||
* \ingroup parabolic | ||||
*/ | ||||
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 | ||||
* | ||||
* Functions relating to Asteroids. | ||||
* | ||||
* All angles are expressed in degrees. | ||||
*/ | ||||
/*! | ||||
* \fn double get_asteroid_mag (double JD, struct ln_ell_orbit * orbit, doub | ||||
le H, double G) | ||||
* \ingroup asteroid | ||||
* \brief Calculate the visual magnitude of an asteroid. | ||||
*/ | ||||
double get_asteroid_mag (double JD, struct ln_ell_orbit * orbit, double H, | ||||
double G); | ||||
/*! \fn double get_asteroid_sdiam_km (double H, double A) | ||||
* \brief Calcaluate the semidiameter of an asteroid in km. | ||||
* \ingroup asteroid | ||||
*/ | ||||
double get_asteroid_sdiam_km (double H, double A); | ||||
/*! \fn double get_asteroid_sdiam_arc (double JD, struct ln_ell_orbit * orb | ||||
it, double H, double A); | ||||
* \brief Calcaluate the semidiameter of an asteroid in arc seconds. | ||||
* \ingroup asteroid | ||||
*/ | ||||
double get_asteroid_sdiam_arc (double JD, struct ln_ell_orbit * orbit, doub | ||||
le H, double A); | ||||
/*! \defgroup comet Comets | ||||
* | ||||
* Functions relating to Comets. | ||||
* | ||||
* All angles are expressed in degrees. | ||||
*/ | ||||
/*! | ||||
* \fn double get_ell_comet_mag (double JD, struct ln_ell_orbit * orbit, dou | ||||
ble g, double k) | ||||
* \ingroup comet | ||||
* \brief Calculate the visual magnitude of a comet in an elliptic orbit. | ||||
*/ | ||||
double get_ell_comet_mag (double JD, struct ln_ell_orbit * orbit, double g, | ||||
double k); | ||||
/*! | ||||
* \fn double get_par_comet_mag (double JD, struct ln_par_orbit * orbit, dou | ||||
ble g, double k) | ||||
* \ingroup comet | ||||
* \brief Calculate the visual magnitude of a comet in a parabolic orbit. | ||||
*/ | ||||
double get_par_comet_mag (double JD, struct ln_par_orbit * orbit, double g, | ||||
double k); | ||||
/*! \defgroup refraction Atmospheric Refraction | ||||
* | ||||
* Functions relating to Atmospheric Refraction | ||||
* | ||||
* All angles are expressed in degrees. | ||||
*/ | ||||
/*! \fn double get_refraction_adj (double altitude, double atm_pres, double | ||||
temp) | ||||
* \brief Calculate the adjustment in altitude of a body due to atmospheric | ||||
* refraction. | ||||
* \ingroup refraction | ||||
*/ | ||||
double get_refraction_adj (double altitude, double atm_pres, double temp); | ||||
/*! \fn double interpolate3 (double n, double y1, double y2, double y3) | ||||
* \ingroup misc | ||||
* \brief Calculate an intermediate value of the 3 arguments. | ||||
*/ | ||||
double interpolate3 (double n, double y1, double y2, double y3); | ||||
/*! \fn double interpolate5 (double n, double y1, double y2, double y3, dou | ||||
ble y4, double y5) | ||||
* \ingroup misc | ||||
* \brief Calculate an intermediate value of the 5 arguments. | ||||
*/ | ||||
double interpolate5 (double n, double y1, double y2, double y3, double y4, | ||||
double y5); | ||||
/*! \defgroup rst Rise, Set, Transit | ||||
* | ||||
* Functions relating to an objects rise, set and transit | ||||
* | ||||
* 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); | ||||
* \brief Calculate the time of rise, set and transit for an object not orbi | ||||
ting the Sun. | ||||
* \ingroup 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); | ||||
#define STAR_STANDART_HORIZONT -0.5667 | ||||
int get_body_rst_horizont (double JD, struct ln_lnlat_posn * observer, void | ||||
(*get_equ_body_coords) (double, struct ln_equ_posn *), | ||||
double horizont, struct ln_rst_time * rst); | ||||
/*! \defgroup angular Angular Separation | ||||
* | ||||
* Functions relating to an the angular separation and position | ||||
* angle between 2 bodies. | ||||
* | ||||
* All angles are expressed in degrees. | ||||
*/ | ||||
/*! \fn double get_angular_separation (struct ln_equ_posn* posn1, struct ln | ||||
_equ_posn* posn2); | ||||
* \brief Calculate the angular separation between 2 bodies | ||||
* \ingroup angular | ||||
*/ | ||||
double get_angular_separation (struct ln_equ_posn* posn1, struct ln_equ_pos | ||||
n* posn2); | ||||
/*! \fn double get_rel_posn_angle (struct ln_equ_posn* posn1, struct ln_equ | ||||
_posn* posn2); | ||||
* \brief Calculate the position angle between 2 bodies | ||||
* \ingroup angular | ||||
*/ | ||||
double get_rel_posn_angle (struct ln_equ_posn* posn1, struct ln_equ_posn* p | ||||
osn2); | ||||
#ifdef __cplusplus | #include <libnova/ln_types.h> | |||
}; | #include <libnova/julian_day.h> | |||
#endif | #include <libnova/dynamical_time.h> | |||
#include <libnova/sidereal_time.h> | ||||
#include <libnova/transform.h> | ||||
#include <libnova/nutation.h> | ||||
#include <libnova/aberration.h> | ||||
#include <libnova/apparent_position.h> | ||||
#include <libnova/solar.h> | ||||
#include <libnova/precession.h> | ||||
#include <libnova/proper_motion.h> | ||||
#include <libnova/mercury.h> | ||||
#include <libnova/venus.h> | ||||
#include <libnova/earth.h> | ||||
#include <libnova/mars.h> | ||||
#include <libnova/jupiter.h> | ||||
#include <libnova/saturn.h> | ||||
#include <libnova/uranus.h> | ||||
#include <libnova/neptune.h> | ||||
#include <libnova/pluto.h> | ||||
#include <libnova/vsop87.h> | ||||
#include <libnova/lunar.h> | ||||
#include <libnova/elliptic_motion.h> | ||||
#include <libnova/asteroid.h> | ||||
#include <libnova/comet.h> | ||||
#include <libnova/parabolic_motion.h> | ||||
#include <libnova/refraction.h> | ||||
#include <libnova/rise_set.h> | ||||
#include <libnova/angular_separation.h> | ||||
#include <libnova/ln_types.h> | ||||
#include <libnova/utility.h> | ||||
#include <libnova/hyperbolic_motion.h> | ||||
#endif | #endif | |||
End of changes. 6 change blocks. | ||||
2040 lines changed or deleted | 38 lines changed or added | |||