diff options
author | wkj <devnull@localhost> | 2004-04-21 02:16:43 +0000 |
---|---|---|
committer | wkj <devnull@localhost> | 2004-04-21 02:16:43 +0000 |
commit | cd5bae7871bc0f0bc68b4d2a84703929a7a3c9d1 (patch) | |
tree | 336db54785d2b77113a6e570574be715c7eb7d1d /src/cmd/astro/init.c | |
parent | 95f57b01e21feb457e79eaf52d593422c318024f (diff) | |
download | plan9port-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.c | 149 |
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(); +} |