astro.h 4.3 KB

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