1 #include <u.h> 2 #include <libc.h> 3 4 #pragma varargck type "R" double 5 #pragma varargck type "D" double 6 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; 14 15 #define NPTS 12 16 #define PER 1.0 17 18 enum 19 { 20 DARK = 1<<0, 21 SIGNIF = 1<<1, 22 PTIME = 1<<2, 23 LIGHT = 1<<3, 24 }; 25 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 }; 80 81 double converge; 82 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; 94 95 double ecc, incl, node, argp, mrad, anom, motion; 96 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; 102 103 double meday, seday, mhp, salph, sdelt, srad; 104 105 double* cafp; 106 char* cacp; 107 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; 128 129 char* startab; 130 131 extern int dmo[]; 132 extern Obj2* objlst[]; 133 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[]; 143 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 void 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 extern void sun(void); 204 extern double sunel(double); 205 extern void venus(void); 206 extern int vis(double, double, double, double); 207 extern void comet(void); 208 extern int Rconv(Fmt*); 209 extern int Dconv(Fmt*); 210 extern double etdate(long, int, double); 211