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

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

/********************************************************/
/* oearth.c						*/
/*							*/
/* Orbital elements and perturbations for the earth	*/
/* Meeus, chapter 18					*/
/********************************************************/

/***** description
 *
 *	$Id: oearth.c,v 1.3 1993/04/21 21:28:24 craig Exp $
 *
 */

/***** modification history
 *
 *	$Id: oearth.c,v 1.3 1993/04/21 21:28:24 craig Exp $
 *
 */

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

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

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

extern struct MCONSTANTS mcnsts;
extern struct PCONSTANTS pcnsts;
extern double M;
extern double T;


/*double M;	*/			/* Mean anomaly of the earth (and
					   sun) */
/*double T; */				/* centuries from 1900.0 */

/**********/
/* oearth */
/**********/

int    oearth (struct orbit * e, double J)
{
    double f;

    e->epoch = J;
    T = (J - pcnsts.J1900) / pcnsts.dapcen; /* centuries from 1900.0 */

    /* mean anomaly of the earth (and sun) */

    f = ((-3.3e-6 * T - 0.000150) * T + 35999.04975) * T + 358.47583;
    f = mod360 (f);
    e->M = f;
    M = f;				/* save in global place */

    /* eccentricity of the earth's orbit */

    e->ecc = (-0.000000126 * T - 0.0000418) * T + 0.01675104;

    /* semimajor axis */

    e->a = 1.0000002;

    e->equinox = pcnsts.J2000;
    e->i = ((1.4e-8 * T - 9.27e-6) * T + 0.0130855) * T - 0.0130762;
    f = ((3.333e-6 * T + 0.00013610) * T + 0.5647920) * T + 287.511505;
    e->w = mod360 (f);
    f = ((-2.8e-8 * T + 7.94e-6) * T - 0.2416582) * T + 175.105679;
    e->W = mod360 (f);
    f = e->w + e->M + e->W;
    e->L = mod360 (f);

    return (0);
}

/************************************************/
/* cearth 					*/
/*						*/
/* perturbations of the earth's orbit added in 	*/
/* after solving Kepler's equation		*/
/************************************************/

int    cearth (struct orbit *e)
{
    double A, B, C, D, E, H, f;

    /* perturbations due to Venus: */

    A = (22518.7541 * T + 153.23) * mcnsts.de2ra;
    B = (45037.5082 * T + 216.57) * mcnsts.de2ra;

    /* due to Jupiter: */

    C = (32964.3577 * T + 312.69) * mcnsts.de2ra;
    H = (65928.7155 * T + 353.40) * mcnsts.de2ra;

    /* due to the moon: */

    D = ((-0.00144 * T + 445267.1142) * T + 350.74) * mcnsts.de2ra;

    /* long period perturbation: */

    E = (20.20 * T + 231.19) * mcnsts.de2ra;

    /* corrections to earth's longitude */

    f = 0.00134 * cos (A)
	+ 0.00154 * cos (B)
	+ 0.00200 * cos (C)
	+ 0.00179 * sin (D)
	+ 0.00178 * sin (E);
    e->L += f * mcnsts.de2ra;

    /* corrections to earth's radius vector */

    f = 0.00000543 * sin (A)
	+ 0.00001575 * sin (B)
	+ 0.00001627 * sin (C)
	+ 0.00003076 * cos (D)
	+ 0.00000927 * sin (H);
    e->r += f;

    return (0);
}

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