astro.h 4.0 KB

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