Blob


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