aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/astro/init.c
diff options
context:
space:
mode:
authorwkj <devnull@localhost>2004-04-21 02:16:43 +0000
committerwkj <devnull@localhost>2004-04-21 02:16:43 +0000
commitcd5bae7871bc0f0bc68b4d2a84703929a7a3c9d1 (patch)
tree336db54785d2b77113a6e570574be715c7eb7d1d /src/cmd/astro/init.c
parent95f57b01e21feb457e79eaf52d593422c318024f (diff)
downloadplan9port-cd5bae7871bc0f0bc68b4d2a84703929a7a3c9d1.tar.gz
plan9port-cd5bae7871bc0f0bc68b4d2a84703929a7a3c9d1.tar.bz2
plan9port-cd5bae7871bc0f0bc68b4d2a84703929a7a3c9d1.zip
Astro with some minor changes to placate Unix.
Diffstat (limited to 'src/cmd/astro/init.c')
-rw-r--r--src/cmd/astro/init.c149
1 files changed, 149 insertions, 0 deletions
diff --git a/src/cmd/astro/init.c b/src/cmd/astro/init.c
new file mode 100644
index 00000000..f376f665
--- /dev/null
+++ b/src/cmd/astro/init.c
@@ -0,0 +1,149 @@
+#include "astro.h"
+
+Obj2* objlst[] =
+{
+ &osun,
+ &omoon,
+ &oshad,
+ &omerc,
+ &ovenus,
+ &omars,
+ &ojup,
+ &osat,
+ &ouran,
+ &onept,
+ &oplut,
+ &ocomet,
+ 0,
+};
+
+struct idata
+{
+ char* name;
+ char* name1;
+ void (*obj)(void);
+} idata[] =
+{
+ "The sun", "sun", fsun,
+ "The moon", "moon", moon,
+ "The shadow", "shadow", shad,
+ "Mercury", "mercury", merc,
+ "Venus", "venus", venus,
+ "Mars", "mars", mars,
+ "Jupiter", "jupiter", jup,
+ "Saturn", "saturn", sat,
+ "Uranus", "uranus", uran,
+ "Neptune", "neptune", nept,
+ "Pluto", "pluto", plut,
+ "Comet", "comet", comet,
+};
+
+void
+init(void)
+{
+ Obj2 *q;
+ int i;
+
+ glat = nlat - (692.74*radsec)*sin(2.*nlat)
+ + (1.16*radsec)*sin(4.*nlat);
+ erad = .99832707e0 + .00167644e0*cos(2.*nlat)
+ - 0.352e-5*cos(4.*nlat)
+ + 0.001e-5*cos(6.*nlat)
+ + 0.1568e-6*elev;
+
+ for(i=0; q=objlst[i]; i++) {
+ q->name = idata[i].name;
+ q->name1 = idata[i].name1;
+ q->obj = idata[i].obj;
+ }
+ ostar.obj = fstar;
+ ostar.name = "star";
+}
+
+void
+setime(double d)
+{
+ double x, xm, ym, zm;
+
+ eday = d + deltat/86400.;
+ wlong = awlong + 15.*deltat*radsec;
+
+ capt = eday/36524.220e0;
+ capt2 = capt*capt;
+ capt3 = capt*capt2;
+ nutate();
+ eday += .1;
+ sun();
+ srad = rad;
+ xm = rad*cos(beta)*cos(lambda);
+ ym = rad*cos(beta)*sin(lambda);
+ zm = rad*sin(beta);
+ eday -= .1;
+ sun();
+ xms = rad*cos(beta)*cos(lambda);
+ yms = rad*cos(beta)*sin(lambda);
+ zms = rad*sin(beta);
+ x = .057756;
+ xdot = x*(xm-xms);
+ ydot = x*(ym-yms);
+ zdot = x*(zm-zms);
+}
+
+void
+setobj(Obj1 *op)
+{
+ Obj1 *p;
+
+ p = op;
+ p->ra = ra;
+ p->decl2 = decl2;
+ p->semi2 = semi2;
+ p->az = az;
+ p->el = el;
+ p->mag = mag;
+}
+
+long starsao = 0;
+
+void
+fstar(void)
+{
+
+ ra = ostar.point[0].ra;
+ decl2 = ostar.point[0].decl2;
+ semi2 = ostar.point[0].semi2;
+ az = ostar.point[0].az;
+ el = ostar.point[0].el;
+ mag = ostar.point[0].mag;
+}
+
+void
+fsun(void)
+{
+
+ beta = 0;
+ rad = 0;
+ lambda = 0;
+ motion = 0;
+ helio();
+ geo();
+ seday = eday;
+ salph = alpha;
+ sdelt = delta;
+ mag = lmb2;
+}
+
+void
+shad(void)
+{
+
+ if(seday != eday)
+ fsun();
+ if(meday != eday)
+ moon();
+ alpha = fmod(salph+pi, pipi);
+ delta = -sdelt;
+ hp = mhp;
+ semi = 1.0183*mhp/radsec - 969.85/srad;
+ geo();
+}