From cd5bae7871bc0f0bc68b4d2a84703929a7a3c9d1 Mon Sep 17 00:00:00 2001 From: wkj Date: Wed, 21 Apr 2004 02:16:43 +0000 Subject: Astro with some minor changes to placate Unix. --- src/cmd/astro/geo.c | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 src/cmd/astro/geo.c (limited to 'src/cmd/astro/geo.c') diff --git a/src/cmd/astro/geo.c b/src/cmd/astro/geo.c new file mode 100644 index 00000000..de562210 --- /dev/null +++ b/src/cmd/astro/geo.c @@ -0,0 +1,60 @@ +#include "astro.h" + +void +geo(void) +{ + +/* + * uses alpha, delta, rp + */ + +/* + * sets ra, decl, lha, decl2, az, el + */ + +/* + * geo converts geocentric equatorial coordinates + * to topocentric equatorial and topocentric horizon + * coordinates. + * All are (usually) referred to the true equator. + */ + + double sel, saz, caz; + double f; + double sa, ca, sd; + +/* + * convert to local hour angle and declination + */ + + lha = gst - alpha - wlong; + decl = delta; + +/* + * compute diurnal parallax (requires geocentric latitude) + */ + + sa = cos(decl)*sin(lha); + ca = cos(decl)*cos(lha) - erad*cos(glat)*sin(hp); + sd = sin(decl) - erad*sin(glat)*sin(hp); + + lha = atan2(sa, ca); + decl2 = atan2(sd, sqrt(sa*sa+ca*ca)); + f = sqrt(sa*sa+ca*ca+sd*sd); + semi2 = semi/f; + ra = gst - lha - wlong; + ra = pinorm(ra); + +/* + * convert to horizon coordinates + */ + + sel = sin(nlat)*sin(decl2) + cos(nlat)*cos(decl2)*cos(lha); + el = atan2(sel, pyth(sel)); + saz = sin(lha)*cos(decl2); + caz = cos(nlat)*sin(decl2) - sin(nlat)*cos(decl2)*cos(lha); + az = pi + atan2(saz, -caz); + + az /= radian; + el /= radian; +} -- cgit v1.2.3