|  | #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(); | 
|  | } |