| 1 | #include <stdio.h>
 | 
|---|
| 2 | #include <math.h>
 | 
|---|
| 3 | 
 | 
|---|
| 4 | #include "astro.h"
 | 
|---|
| 5 | 
 | 
|---|
| 6 | 
 | 
|---|
| 7 | /* given true ha and dec, tha and tdec, the geographical latitude, phi, the
 | 
|---|
| 8 |  * height above sea-level (as a fraction of the earths radius, 6378.16km),
 | 
|---|
| 9 |  * ht, and the geocentric distance rho in Earth radii(!), find the apparent
 | 
|---|
| 10 |  * ha and dec, aha and adec allowing for parallax.
 | 
|---|
| 11 |  * all angles in radians. ehp is the angle subtended at the body by the
 | 
|---|
| 12 |  * earth's equator.
 | 
|---|
| 13 |  */
 | 
|---|
| 14 | void
 | 
|---|
| 15 | ta_par (double tha, double tdec, double phi, double ht, double *rho,
 | 
|---|
| 16 | double *aha, double *adec)
 | 
|---|
| 17 | {
 | 
|---|
| 18 |         static double last_phi = 1000.0, last_ht = -1000.0, xobs, zobs;
 | 
|---|
| 19 |         double x, y, z; /* obj cartesian coord, in Earth radii */
 | 
|---|
| 20 | 
 | 
|---|
| 21 |         /* avoid calcs involving the same phi and ht */
 | 
|---|
| 22 |         if (phi != last_phi || ht != last_ht) {
 | 
|---|
| 23 |             double cphi, sphi, robs, e2 = (2 - 1/298.257)/298.257;
 | 
|---|
| 24 |             cphi = cos(phi);
 | 
|---|
| 25 |             sphi = sin(phi);
 | 
|---|
| 26 |             robs = 1/sqrt(1 - e2 * sphi * sphi);
 | 
|---|
| 27 | 
 | 
|---|
| 28 |             /* observer coordinates: x to meridian, y east, z north */
 | 
|---|
| 29 |             xobs = (robs + ht) * cphi;
 | 
|---|
| 30 |             zobs = (robs*(1-e2) + ht) * sphi;
 | 
|---|
| 31 |             last_phi  =  phi;
 | 
|---|
| 32 |             last_ht  =  ht;
 | 
|---|
| 33 |         }
 | 
|---|
| 34 | 
 | 
|---|
| 35 |         sphcart(-tha, tdec, *rho, &x, &y, &z);
 | 
|---|
| 36 |         cartsph(x - xobs, y, z - zobs, aha, adec, rho);
 | 
|---|
| 37 |         *aha *= -1;
 | 
|---|
| 38 |         range (aha, 2*PI);
 | 
|---|
| 39 | }
 | 
|---|
| 40 | 
 | 
|---|
| 41 | /* For RCS Only -- Do Not Edit */
 | 
|---|
| 42 | static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: parallax.c,v $ $Date: 2009-07-16 10:34:38 $ $Revision: 1.8 $ $Name: not supported by cvs2svn $"};
 | 
|---|