Blob


1 #include "astro.h"
3 Obj2* objlst[] =
4 {
5 &osun,
6 &omoon,
7 &oshad,
8 &omerc,
9 &ovenus,
10 &omars,
11 &ojup,
12 &osat,
13 &ouran,
14 &onept,
15 &oplut,
16 &ocomet,
17 0
18 };
20 struct idata
21 {
22 char* name;
23 char* name1;
24 void (*obj)(void);
25 } idata[] =
26 {
27 "The sun", "sun", fsun,
28 "The moon", "moon", moon,
29 "The shadow", "shadow", shad,
30 "Mercury", "mercury", merc,
31 "Venus", "venus", venus,
32 "Mars", "mars", mars,
33 "Jupiter", "jupiter", jup,
34 "Saturn", "saturn", sat,
35 "Uranus", "uranus", uran,
36 "Neptune", "neptune", nept,
37 "Pluto", "pluto", plut,
38 "Comet", "comet", comet
39 };
41 void
42 init(void)
43 {
44 Obj2 *q;
45 int i;
47 glat = nlat - (692.74*radsec)*sin(2.*nlat)
48 + (1.16*radsec)*sin(4.*nlat);
49 erad = .99832707e0 + .00167644e0*cos(2.*nlat)
50 - 0.352e-5*cos(4.*nlat)
51 + 0.001e-5*cos(6.*nlat)
52 + 0.1568e-6*elev;
54 for(i=0; q=objlst[i]; i++) {
55 q->name = idata[i].name;
56 q->name1 = idata[i].name1;
57 q->obj = idata[i].obj;
58 }
59 ostar.obj = fstar;
60 ostar.name = "star";
61 }
63 void
64 setime(double d)
65 {
66 double x, xm, ym, zm;
68 eday = d + deltat/86400.;
69 wlong = awlong + 15.*deltat*radsec;
71 capt = eday/36524.220e0;
72 capt2 = capt*capt;
73 capt3 = capt*capt2;
74 nutate();
75 eday += .1;
76 sun();
77 srad = rad;
78 xm = rad*cos(beta)*cos(lambda);
79 ym = rad*cos(beta)*sin(lambda);
80 zm = rad*sin(beta);
81 eday -= .1;
82 sun();
83 xms = rad*cos(beta)*cos(lambda);
84 yms = rad*cos(beta)*sin(lambda);
85 zms = rad*sin(beta);
86 x = .057756;
87 xdot = x*(xm-xms);
88 ydot = x*(ym-yms);
89 zdot = x*(zm-zms);
90 }
92 void
93 setobj(Obj1 *op)
94 {
95 Obj1 *p;
97 p = op;
98 p->ra = ra;
99 p->decl2 = decl2;
100 p->semi2 = semi2;
101 p->az = az;
102 p->el = el;
103 p->mag = mag;
106 long starsao = 0;
108 void
109 fstar(void)
112 ra = ostar.point[0].ra;
113 decl2 = ostar.point[0].decl2;
114 semi2 = ostar.point[0].semi2;
115 az = ostar.point[0].az;
116 el = ostar.point[0].el;
117 mag = ostar.point[0].mag;
120 void
121 fsun(void)
124 beta = 0;
125 rad = 0;
126 lambda = 0;
127 motion = 0;
128 helio();
129 geo();
130 seday = eday;
131 salph = alpha;
132 sdelt = delta;
133 mag = lmb2;
136 void
137 shad(void)
140 if(seday != eday)
141 fsun();
142 if(meday != eday)
143 moon();
144 alpha = fmod(salph+pi, pipi);
145 delta = -sdelt;
146 hp = mhp;
147 semi = 1.0183*mhp/radsec - 969.85/srad;
148 geo();