/usr/include/libnova/elliptic_motion.h is in libnova-dev 0.14.0-2.1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 | /*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* Copyright (C) 2000 - 2005 Liam Girdwood
*/
#ifndef _LN_ELLIPTIC_MOTION_H
#define _LN_ELLIPTIC_MOTION_H
#include <libnova/ln_types.h>
#ifdef __cplusplus
extern "C" {
#endif
/*! \defgroup elliptic Elliptic Motion
*
* Functions relating to the elliptic motion of bodies.
*
* All angles are expressed in degrees.
*/
/*! \fn double ln_solve_kepler (double E, double M);
* \brief Calculate the eccentric anomaly.
* \ingroup elliptic
*/
double LIBNOVA_EXPORT ln_solve_kepler (double e, double M);
/*! \fn double ln_get_ell_mean_anomaly (double n, double delta_JD);
* \brief Calculate the mean anomaly.
* \ingroup elliptic
*/
double LIBNOVA_EXPORT ln_get_ell_mean_anomaly (double n, double delta_JD);
/*! \fn double ln_get_ell_true_anomaly (double e, double E);
* \brief Calculate the true anomaly.
* \ingroup elliptic
*/
double LIBNOVA_EXPORT ln_get_ell_true_anomaly (double e, double E);
/*! \fn double ln_get_ell_radius_vector (double a, double e, double E);
* \brief Calculate the radius vector.
* \ingroup elliptic
*/
double LIBNOVA_EXPORT ln_get_ell_radius_vector (double a, double e, double E);
/*! \fn double ln_get_ell_smajor_diam (double e, double q);
* \brief Calculate the semi major diameter.
* \ingroup elliptic
*/
double LIBNOVA_EXPORT ln_get_ell_smajor_diam (double e, double q);
/*! \fn double ln_get_ell_sminor_diam (double e, double a);
* \brief Calculate the semi minor diameter.
* \ingroup elliptic
*/
double LIBNOVA_EXPORT ln_get_ell_sminor_diam (double e, double a);
/*! \fn double ln_get_ell_mean_motion (double a);
* \brief Calculate the mean daily motion (degrees/day).
* \ingroup elliptic
*/
double LIBNOVA_EXPORT ln_get_ell_mean_motion (double a);
/*! \fn void ln_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 LIBNOVA_EXPORT ln_get_ell_geo_rect_posn (struct ln_ell_orbit* orbit, double JD, struct ln_rect_posn* posn);
/*! \fn void ln_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 LIBNOVA_EXPORT ln_get_ell_helio_rect_posn (struct ln_ell_orbit* orbit, double JD, struct ln_rect_posn* posn);
/*! \fn double ln_get_ell_orbit_len (struct ln_ell_orbit * orbit);
* \brief Calculate the orbital length in AU.
* \ingroup elliptic
*/
double LIBNOVA_EXPORT ln_get_ell_orbit_len (struct ln_ell_orbit * orbit);
/*! \fn double ln_get_ell_orbit_vel (double JD, struct ln_ell_orbit * orbit);
* \brief Calculate orbital velocity in km/s.
* \ingroup elliptic
*/
double LIBNOVA_EXPORT ln_get_ell_orbit_vel (double JD, struct ln_ell_orbit * orbit);
/*! \fn double ln_get_ell_orbit_pvel (struct ln_ell_orbit * orbit);
* \brief Calculate orbital velocity at perihelion in km/s.
* \ingroup elliptic
*/
double LIBNOVA_EXPORT ln_get_ell_orbit_pvel (struct ln_ell_orbit * orbit);
/*! \fn double ln_get_ell_orbit_avel (struct ln_ell_orbit * orbit);
* \ingroup elliptic
* \brief Calculate the orbital velocity at aphelion in km/s.
*/
double LIBNOVA_EXPORT ln_get_ell_orbit_avel (struct ln_ell_orbit * orbit);
/*! \fn double ln_get_ell_body_phase_angle (double JD, struct ln_ell_orbit * orbit);
* \ingroup elliptic
* \brief Calculate the phase angle of the body. The angle Sun - body - Earth.
*/
double LIBNOVA_EXPORT ln_get_ell_body_phase_angle (double JD, struct ln_ell_orbit * orbit);
/*! \fn double ln_get_ell_body_elong (double JD, struct ln_ell_orbit * orbit);
* \ingroup elliptic
* \brief Calculate the bodies elongation to the Sun..
*/
double LIBNOVA_EXPORT ln_get_ell_body_elong (double JD, struct ln_ell_orbit * orbit);
/*!
* \fn double ln_get_ell_body_solar_dist (double JD, struct ln_ell_orbit * orbit)
* \brief Calculate the distance between a body and the Sun
* \ingroup elliptic
*/
double LIBNOVA_EXPORT ln_get_ell_body_solar_dist (double JD, struct ln_ell_orbit * orbit);
/*!
* \fn double ln_get_ell_body_earth_dist (double JD, struct ln_ell_orbit * orbit)
* \brief Calculate the distance between a body and the Earth
* \ingroup elliptic
*/
double LIBNOVA_EXPORT ln_get_ell_body_earth_dist (double JD, struct ln_ell_orbit * orbit);
/*!
* \fn void ln_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 LIBNOVA_EXPORT ln_get_ell_body_equ_coords (double JD, struct ln_ell_orbit * orbit, struct ln_equ_posn * posn);
/*! \fn double ln_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 elliptic orbit.
* \ingroup elliptic
*/
int LIBNOVA_EXPORT ln_get_ell_body_rst (double JD, struct ln_lnlat_posn * observer, struct ln_ell_orbit * orbit, struct ln_rst_time * rst);
/*! \fn double ln_get_ell_body_rst_horizon (double JD, struct ln_lnlat_posn * observer, struct ln_ell_orbit * orbit, double horizon, struct ln_rst_time * rst);
* \brief Calculate the time of rise, set and transit for a body with an elliptic orbit.
* \ingroup elliptic
*/
int LIBNOVA_EXPORT ln_get_ell_body_rst_horizon (double JD, struct ln_lnlat_posn * observer, struct ln_ell_orbit * orbit, double horizon, struct ln_rst_time * rst);
/*! \fn double ln_get_ell_body_next_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 elliptic orbit.
* \ingroup elliptic
*/
int LIBNOVA_EXPORT ln_get_ell_body_next_rst (double JD, struct ln_lnlat_posn * observer, struct ln_ell_orbit * orbit, struct ln_rst_time * rst);
/*! \fn double ln_get_ell_body_next_rst_horizon (double JD, struct ln_lnlat_posn * observer, struct ln_ell_orbit * orbit, double horizon, struct ln_rst_time * rst);
* \brief Calculate the time of rise, set and transit for a body with an elliptic orbit.
* \ingroup elliptic
*/
int LIBNOVA_EXPORT ln_get_ell_body_next_rst_horizon (double JD, struct ln_lnlat_posn * observer, struct ln_ell_orbit * orbit, double horizon, struct ln_rst_time * rst);
/*! \fn double ln_get_ell_body_next_rst_horizon_future (double JD, struct ln_lnlat_posn * observer, struct ln_ell_orbit * orbit, double horizon, int day_limit, struct ln_rst_time * rst);
* \brief Calculate the time of rise, set and transit for a body with an elliptic orbit.
* \ingroup elliptic
*/
int LIBNOVA_EXPORT ln_get_ell_body_next_rst_horizon_future (double JD, struct ln_lnlat_posn * observer, struct ln_ell_orbit * orbit, double horizon, int day_limit, struct ln_rst_time * rst);
/*!\fn double ln_get_ell_last_perihelion (double epoch_JD, double M, double n);
* \brief Calculate the julian day of the last perihelion.
* \ingroup elliptic
*/
double LIBNOVA_EXPORT ln_get_ell_last_perihelion (double epoch_JD, double M, double n);
#ifdef __cplusplus
};
#endif
#endif
|