1 /* 2 * This library is free software; you can redistribute it and/or 3 * modify it under the terms of the GNU Lesser General Public 4 * License as published by the Free Software Foundation; either 5 * version 2 of the License, or (at your option) any later version. 6 * 7 * This library is distributed in the hope that it will be useful, 8 * but WITHOUT ANY WARRANTY; without even the implied warranty of 9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 10 * Lesser General Public License for more details. 11 * 12 * You should have received a copy of the GNU General Public License 13 * along with this program; if not, write to the Free Software 14 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 15 * 16 * Copyright (C) 2000 - 2005 Liam Girdwood 17 */ 18 19 #ifndef _LN_LUNAR_H 20 #define _LN_LUNAR_H 21 22 #include <libnova/ln_types.h> 23 24 #define LN_LUNAR_STANDART_HORIZON 0.125 25 26 #ifdef __cplusplus 27 extern "C" { 28 #endif 29 30 /*! \defgroup lunar Lunar 31 * 32 * Functions relating to the Moon. 33 * 34 * All angles are expressed in degrees. 35 */ 36 37 /*! \fn double ln_get_lunar_sdiam (double JD) 38 * \brief Calculate the semidiameter of the Moon in arc seconds. 39 * \ingroup lunar 40 */ 41 double LIBNOVA_EXPORT ln_get_lunar_sdiam (double JD); 42 43 /*! \fn double ln_get_lunar_rst (double JD, struct ln_lnlat_posn * observer, struct ln_rst_time * rst); 44 * \brief Calculate the time of rise, set and transit for the Moon. 45 * \ingroup lunar 46 */ 47 48 int LIBNOVA_EXPORT ln_get_lunar_rst (double JD, struct ln_lnlat_posn * observer, struct ln_rst_time * rst); 49 50 /*! \fn void ln_get_lunar_geo_posn (double JD, struct ln_rect_posn * moon, double precision); 51 * \brief Calculate the rectangular geocentric lunar cordinates. 52 * \ingroup lunar 53 */ 54 /* ELP 2000-82B theory */ 55 void LIBNOVA_EXPORT ln_get_lunar_geo_posn (double JD, struct ln_rect_posn * moon, double precision); 56 57 /*! \fn void ln_get_lunar_equ_coords_prec (double JD, struct ln_equ_posn * position, double precision); 58 * \brief Calculate lunar equatorial coordinates. 59 * \ingroup lunar 60 */ 61 void LIBNOVA_EXPORT ln_get_lunar_equ_coords_prec (double JD, struct ln_equ_posn * position, double precision); 62 63 /*! \fn void ln_get_lunar_equ_coords (double JD, struct ln_equ_posn * position); 64 * \brief Calculate lunar equatorial coordinates. 65 * \ingroup lunar 66 */ 67 void LIBNOVA_EXPORT ln_get_lunar_equ_coords (double JD, struct ln_equ_posn * position); 68 69 /*! \fn void ln_get_lunar_ecl_coords (double JD, struct ln_lnlat_posn * position, double precision); 70 * \brief Calculate lunar ecliptical coordinates. 71 * \ingroup lunar 72 */ 73 void LIBNOVA_EXPORT ln_get_lunar_ecl_coords (double JD, struct ln_lnlat_posn * position, double precision); 74 75 /*! \fn double ln_get_lunar_phase (double JD); 76 * \brief Calculate the phase angle of the Moon. 77 * \ingroup lunar 78 */ 79 double LIBNOVA_EXPORT ln_get_lunar_phase (double JD); 80 81 /*! \fn double ln_get_lunar_disk (double JD); 82 * \brief Calculate the illuminated fraction of the Moons disk 83 * \ingroup lunar 84 */ 85 double LIBNOVA_EXPORT ln_get_lunar_disk (double JD); 86 87 /*! \fn double ln_get_lunar_earth_dist (double JD); 88 * \brief Calculate the distance between the Earth and the Moon. 89 * \ingroup lunar 90 */ 91 double LIBNOVA_EXPORT ln_get_lunar_earth_dist (double JD); 92 93 /*! \fn double ln_get_lunar_bright_limb (double JD); 94 * \brief Calculate the position angle of the Moon's bright limb. 95 * \ingroup lunar 96 */ 97 double LIBNOVA_EXPORT ln_get_lunar_bright_limb (double JD); 98 99 /*! \fn double ln_get_lunar_long_asc_node (double JD); 100 * \brief Calculate the longitude of the Moon's mean ascending node. 101 * \ingroup lunar 102 */ 103 double LIBNOVA_EXPORT ln_get_lunar_long_asc_node (double JD); 104 105 /*! \fn double ln_get_lunar_long_perigee (double JD); 106 * \brief Calculate the longitude of the Moon's mean perigee. 107 * \ingroup lunar 108 */ 109 double LIBNOVA_EXPORT ln_get_lunar_long_perigee (double JD); 110 111 #ifdef __cplusplus 112 }; 113 #endif 114 115 #endif 116