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

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

/********************************/
/* diurpx.c			*/
/*				*/
/* Diurnal parallax, AA page D3	*/
/********************************/

/***** description
 *
 *	$Id: diurpx.c,v 1.3 1993/04/21 21:10:38 craig Exp $
 *
 */

/***** modification history
 *
 *	$Log: diurpx.c,v $
 * Revision 1.3  1993/04/21  21:10:38  craig
 * Changed the path for the satellite.h include file.
 * Changed ecnsts to pcnsts.
 *
 * Revision 1.2  1993/04/21  15:12:30  craig
 * First working version.  Ran through indent and converted to ansi.
 * Added hooks to work with the satellite programs.
 *
 *
 */

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

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

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

extern struct MCONSTANTS mcnsts;
extern struct PCONSTANTS pcnsts;

/* from kfiles.c */

extern double trho;			/* distance to center of Earth, in
					   Earth radii */
extern double tlat;			/* observer's geocentric latitude,
					   degrees */

/**********/
/* diurpx */
/**********/

/* last = local apparent sidereal time, radians */
/* ra = right ascension, radians		*/
/* dec = declination, radians			*/
/* dist	= Earth - object distance, au		*/

int    diurpx (double last, double *ra, double *dec, double dist)
{
    double cosdec, sindec, coslat, sinlat;
    double p[3], dp[3], x, y, z, D;

    /* Don't bother with this unless the equatorial horizontal parallax is
       at least 0.005" */

    if (dist > 1758.8)
    {
	return (-1);
    }

    cosdec = cos (*dec);
    sindec = sin (*dec);

    /* Observer's astronomical latitude */

    x = tlat * mcnsts.de2ra;
    coslat = cos (x);
    sinlat = sin (x);

    /* Convert to equatorial rectangular coordinates unit distance = earth
       radius */

    D = dist * pcnsts.rapau;
    p[0] = D * cosdec * cos (*ra);
    p[1] = D * cosdec * sin (*ra);
    p[2] = D * sindec;

    dp[0] = -trho * coslat * cos (last);
    dp[1] = -trho * coslat * sin (last);
    dp[2] = -trho * sinlat;

    x = p[0] + dp[0];
    y = p[1] + dp[1];
    z = p[2] + dp[2];
    D = x * x + y * y + z * z;
    D = sqrt (D);			/* topocentric distance */

    /* recompute ra and dec */

    *ra = matan2 (y, x);
    *dec = asin (z / D);

    showcor ("diurnal parallax", p, dp);

    return (0);
}

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