This is omercury.c in view mode; [Download] [Up]
/*************************************************/
/* omercury.c */
/* */
/* Orbital elements and perturbations for the */
/* planet Mercury using formulas given by Meeus. */
/*************************************************/
/***** description
*
* $Id: omercury.c,v 1.3 1993/04/21 21:32:57 craig Exp $
*
*/
/***** modification history
*
* $Log: omercury.c,v $
* Revision 1.3 1993/04/21 21:32:57 craig
* Changed the path of the satellite.h include.
* Changed ecnsts to pcnsts.
*
* Revision 1.2 1993/04/21 15:26:27 craig
* First working version. Ran through indent and converted to ansi.
* Added hooks for working with the satellite programs.
*
*
*/
/***** include files *****/
#include <math.h>
#include "aaproto.h"
#include "satellite.h"
/***** global variables *****/
extern struct PCONSTANTS pcnsts;
extern struct MCONSTANTS mcnsts;
/* from oearth.c */
extern double T;
/* from ojupiter.c */
extern double f;
/* from manoms.c */
extern double M1;
extern double M2;
extern double M5;
/******************************************/
/* omercury */
/* */
/* Calculate orbital elements for Mercury */
/******************************************/
int omercury (struct orbit * e, double J)
{
/* Orbital elements referred to equinox of date: */
e->epoch = J;
/* calculate all the mean anomalies */
manoms (J);
e->M = M1;
/* semimajor axis */
e->a = 0.3870986;
/* eccentricity */
e->ecc = (-0.000000030 * T + 0.00002046) * T + 0.20561421;
e->equinox = pcnsts.J2000;
/* inclination */
e->i = ((-3.5e-8 * T + 6.9e-7) * T - 0.0059556) * T + 7.010678;
/* argument of the perihelion */
f = ((4.3e-8 * T + 7.445e-5) * T + 0.2842765) * T + 28.839814;
e->w = mod360 (f);
/* longitude of the ascending node */
f = ((-6.8e-8 * T - 8.844e-5) * T - 0.1254715) * T + 48.456876;
e->W = mod360 (f);
/* mean longitude */
f = e->M + e->w + e->W;
e->L = mod360 (f);
return (0);
}
/********************************************************/
/* cmercury */
/* */
/* corrections due to perturbations */
/* These are added in after solving Kepler's equation. */
/********************************************************/
int cmercury (struct orbit * e)
{
double p;
/* Mercury's perturbations in longitude: */
f = (5.0 * M2 - 2.0 * M1 + 12.220) * mcnsts.de2ra;
p = 0.00204 * cos (f);
f = (2.0 * M2 - M1 - 160.692) * mcnsts.de2ra;
p += 0.00103 * cos (f);
f = (2.0 * M5 - M1 - 37.003) * mcnsts.de2ra;
p += 0.00091 * cos (f);
f = (5.0 * M2 - 3 * M1 + 10.137) * mcnsts.de2ra;
p += 0.00078 * cos (f);
e->L += p * mcnsts.de2ra;
/* Mercury's perturbations in radius vector */
f = (2.0 * M5 - M1 + 53.013) * mcnsts.de2ra;
p = 0.000007525 * cos (f);
f = (5.0 * M2 - 3.0 * M1 - 259.918) * mcnsts.de2ra;
p += 0.000006802 * cos (f);
f = (2.0 * M2 - 2.0 * M1 - 71.188) * mcnsts.de2ra;
p += 0.000005457 * cos (f);
f = (5.0 * M2 - M1 - 77.75) * mcnsts.de2ra;
p += 0.000003569 * cos (f);
e->r += p;
return (0);
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.