Blob


1 #include <u.h>
2 #include <libc.h>
4 #ifdef VARARGCK
5 #pragma varargck type "R" double
6 #pragma varargck type "D" double
7 #endif
9 #undef sun
10 #define sun astrosun /* not the machine! */
11 #undef fmod
12 #define fmod astrofmod /* ours is always positive */
14 typedef struct Obj1 Obj1;
15 typedef struct Obj2 Obj2;
16 typedef struct Obj3 Obj3;
17 typedef struct Occ Occ;
18 typedef struct Event Event;
19 typedef struct Tim Tim;
20 typedef struct Moontab Moontab;
22 #define NPTS 12
23 #define PER 1.0
25 enum
26 {
27 DARK = 1<<0,
28 SIGNIF = 1<<1,
29 PTIME = 1<<2,
30 LIGHT = 1<<3
31 };
33 struct Obj1
34 {
35 double ra;
36 double decl2;
37 double semi2;
38 double az;
39 double el;
40 double mag;
41 };
42 struct Obj2
43 {
44 char* name;
45 char* name1;
46 void (*obj)(void);
47 Obj1 point[NPTS+2];
48 };
49 struct Obj3
50 {
51 double t1;
52 double e1;
53 double t2;
54 double e2;
55 double t3;
56 double e3;
57 double t4;
58 double e4;
59 double t5;
60 double e5;
61 };
62 struct Event
63 {
64 char* format;
65 char* arg1;
66 char* arg2;
67 double tim;
68 int flag;
69 };
70 struct Moontab
71 {
72 double f;
73 char c[4];
74 };
75 struct Occ
76 {
77 Obj1 act;
78 Obj1 del0;
79 Obj1 del1;
80 Obj1 del2;
81 };
82 struct Tim
83 {
84 double ifa[5];
85 char tz[4];
86 };
88 double converge;
90 char flags[128];
91 int nperiods;
92 double wlong, awlong, nlat, elev;
93 double obliq, phi, eps, tobliq;
94 double dphi, deps;
95 double day, deld, per;
96 double eday, capt, capt2, capt3, gst;
97 double pi, pipi, radian, radsec, deltat;
98 double erad, glat;
99 double xms, yms, zms;
100 double xdot, ydot, zdot;
102 double ecc, incl, node, argp, mrad, anom, motion;
104 double lambda, beta, rad, mag, semi;
105 double alpha, delta, rp, hp;
106 double ra, decl, semi2;
107 double lha, decl2, lmb2;
108 double az, el;
110 double meday, seday, mhp, salph, sdelt, srad;
112 double* cafp;
113 char* cacp;
115 double rah, ram, ras, dday, dmin, dsec;
116 long sao;
117 double da, dd, px, epoch;
118 char line[100];
119 Obj2 osun;
120 Obj2 omoon;
121 Obj2 oshad;
122 Obj2 omerc;
123 Obj2 ovenus;
124 Obj2 omars;
125 Obj2 osat;
126 Obj2 ouran;
127 Obj2 onept;
128 Obj2 oplut;
129 Obj2 ojup;
130 Obj2 ostar;
131 Obj2 ocomet;
132 Obj3 occ;
133 Obj2* eobj1;
134 Obj2* eobj2;
136 char* startab;
138 extern int dmo[];
139 extern Obj2* objlst[];
141 extern double venfp[];
142 extern char vencp[];
143 extern double sunfp[];
144 extern char suncp[];
145 extern double mercfp[];
146 extern char merccp[];
147 extern double nutfp[];
148 extern char nutcp[];
149 extern Moontab moontab[];
151 extern void args(int, char**);
152 extern void bdtsetup(double, Tim*);
153 extern double betcross(double);
154 extern double convdate(Tim*);
155 extern double cosadd(int, ...);
156 extern double cosx(double, int, int, int, int, double);
157 extern double dist(Obj1*, Obj1*);
158 extern double dsrc(double, Tim*, int);
159 extern void dtsetup(double, Tim*);
160 /*extern int evcomp(void*, void*);*/
161 extern void event(char*, char*, char*, double, int);
162 extern void evflush(void);
163 extern double fmod(double, double);
164 extern void fstar(void);
165 extern void fsun(void);
166 extern void geo(void);
167 extern void helio(void);
168 extern void icosadd(double*, char*);
169 extern void init(void);
170 extern void jup(void);
171 extern int lastsun(Tim*, int);
172 extern int main(int, char**);
173 extern void mars(void);
174 extern double melong(Obj2*);
175 extern void merc(void);
176 extern void moon(void);
177 extern void numb(int);
178 extern void nutate(void);
179 extern void occult(Obj2*, Obj2*, double);
180 extern void output(char*, Obj1*);
181 extern void pdate(double);
182 extern double pinorm(double);
183 extern void ptime(double);
184 extern void pstime(double);
185 extern double pyth(double);
186 extern double readate(void);
187 extern double readdt(void);
188 extern void readlat(int);
189 extern double rise(Obj2*, double);
190 extern int rline(int);
191 extern void sat(void);
192 extern void uran(void);
193 extern void nept(void);
194 extern void plut(void);
195 extern void satel(double);
196 extern void satels(void);
197 extern void search(void);
198 extern double set(Obj2*, double);
199 extern void set3pt(Obj2*, int, Occ*);
200 extern void setime(double);
201 extern void setobj(Obj1*);
202 extern void setpt(Occ*, double);
203 extern void shad(void);
204 extern double sinadd(int, ...);
205 extern double sinx(double, int, int, int, int, double);
206 extern char* skip(int);
207 extern double solstice(int);
208 extern void star(void);
209 extern void stars(void);
210 extern void sun(void);
211 extern double sunel(double);
212 extern void venus(void);
213 extern int vis(double, double, double, double);
214 extern void comet(void);
215 extern int Rconv(Fmt*);
216 extern int Dconv(Fmt*);
217 extern double etdate(long, int, double);