ftp.nice.ch/pub/next/science/astronomy/usat-NeXT.N.bs.tar.gz#/usat/almanacAA/oneptune.c

This is oneptune.c in view mode; [Download] [Up]

/************************************************/
/* oneptune.c 					*/
/* Orbital elements and perturbations for the	*/
/* planet Neptune using formulas given by Meeus */
/************************************************/

/***** description
 *
 *	$Id: oneptune.c,v 1.2 1993/04/21 21:34:22 craig Exp $
 *
 */

/***** modification history
 *
 *	$Log: oneptune.c,v $
 * Revision 1.2  1993/04/21  21:34:22  craig
 * First working version.  Ran throught indent and converted to ansi.
 * Added hooks for working with satellite programs.
 *
 *
 */

/***** include files *****/

#include <math.h>
#include "aaproto.h"
#include "satellite.h"

/***** global variables *****/

extern struct MCONSTANTS mcnsts;
extern struct PCONSTANTS pcnsts;

/* from oearth.c */

extern double T;

/* from ojupiter.c */

extern double f;
extern double P;
extern double Q;
extern double S;
extern double nu;
extern double ze;

double G;
double H;
double th;
double eta;

double cos1H;
double cos2H;

double sin1H;
double sin2H;

double costh;
double cos2th;

double sinth;
double sin2th;

/***** local global variables *****/

static double M8;
static double sinG;
static double cosG;

/************/
/* oneptune */
/************/

int    oneptune (struct orbit *e, double J)
{
    double p, q;

    e->epoch = J;
    manoms (J);
    pjup ();

    f = (-0.000070 * T + 218.46134) * T + 37.73063;
    M8 = mod360 (f);
    e->M = M8;
    e->a = 30.10957;
    e->ecc = (-0.000000002 * T + 0.000006330) * T + 0.00899704;

    e->equinox = pcnsts.J2000;
    e->i = ((1.8e-8 * T - 2.27e-6) * T - 0.0000144) * T + 1.769715;
    f = ((2.226e-6 * T + 3.849e-5) * T + 0.0368127) * T + 276.335328;
    e->w = mod360 (f);
    f = ((-2.858e-6 * T + 4.428e-5) * T - 0.0084187) * T + 131.788486;
    e->W = mod360 (f);
    f = e->M + e->w + e->W;
    e->L = mod360 (f);

    G = 83.76922 + 218.4901 * T;
    G = mod360 (G) * mcnsts.de2ra;
    H = modtp (2.0 * G - S);
    ze = modtp (G - P);
    eta = modtp (G - Q);
    th = modtp (G - S);
    sinth = sin (th);
    costh = cos (th);
    sin2th = 2.0 * sinth * costh;
    cos2th = costh * costh - sinth * sinth;
    sin1H = sin (H);
    cos1H = cos (H);
    sin2H = 2.0 * sin1H * cos1H;
    cos2H = cos1H * cos1H - sin1H * sin1H;
    sinG = sin (G);
    cosG = cos (G);

 /* perturbations in mean longitude */

    p = (-0.589833 + 0.001089 * nu) * sin1H;
    p = p + (-0.056094 + 0.004658 * nu) * cos1H;
    p = p - 0.024286 * sin2H;
    e->L += p;

 /* perturbations in the perihelion */

    q = 0.024039 * sin1H
	+ 0.006206 * sin2H
	- 0.025303 * cos1H
	- 0.005992 * cos2H;

    e->w += q;
    e->M = M8 + p - q / (e->ecc);

 /* perturbations in eccentricity */

    q = .0004389 * sin1H
	+ .0001129 * sin2H
	+ .0004262 * cos1H
	+ .0001089 * cos2H;

    e->ecc += q;

/* correction to the semimajor axis */

    q = -0.000817 * sin1H
	+ 0.008189 * cos1H
	+ 0.000781 * cos2H;

    e->a += q;

    return (0);
}

/************/
/* cneptune */
/************/

int    cneptune (struct orbit *e)
{
    double q;

 /* correction to the true longitude */

    q = -0.009556 * sin (ze)
	- 0.005178 * sin (eta)
	+ 0.002572 * sin2th;

    q = q - 0.002972 * cos2th * sinG;
    q = q - 0.002833 * sin2th * cosG;
    e->L += q * mcnsts.de2ra;

 /* correction to the heliocentric latitude */

    q = 0.000336 * cos2th * sinG;
    q = q + 0.000364 * sin2th * cosG;
    e->plat = q * mcnsts.de2ra;

 /* correction to the radius vector */

    q = -0.040596
	+ 0.004992 * cos (ze)
	+ 0.002744 * cos (eta)
	+ 0.002044 * costh
	+ 0.001051 * cos2th;

    e->r += q;

    return (0);
}

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.