star.c 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #include "astro.h"
  2. void
  3. star(void)
  4. {
  5. double xm, ym, zm, dxm, dym, dzm;
  6. double xx, yx, zx, yy, zy, zz, tau;
  7. double capt0, capt1, capt12, capt13, sl, sb, cl;
  8. /*
  9. * remove E-terms of aberration
  10. * except when finding catalog mean places
  11. */
  12. alpha += (.341/(3600.*15.))*sin((alpha+11.26)*15.*radian)
  13. /cos(delta*radian);
  14. delta += (.341/3600.)*cos((alpha+11.26)*15.*radian)
  15. *sin(delta*radian) - (.029/3600.)*cos(delta*radian);
  16. /*
  17. * correct for proper motion
  18. */
  19. tau = (eday - epoch)/365.24220;
  20. alpha += tau*da/3600.;
  21. delta += tau*dd/3600.;
  22. alpha *= 15.*radian;
  23. delta *= radian;
  24. /*
  25. * convert to rectangular coordinates merely for convenience
  26. */
  27. xm = cos(delta)*cos(alpha);
  28. ym = cos(delta)*sin(alpha);
  29. zm = sin(delta);
  30. /*
  31. * convert mean places at epoch of startable to current
  32. * epoch (i.e. compute relevant precession)
  33. */
  34. capt0 = (epoch - 18262.427)/36524.220e0;
  35. capt1 = (eday - epoch)/36524.220;
  36. capt12 = capt1*capt1;
  37. capt13 = capt12*capt1;
  38. xx = - (.00029696+26.e-8*capt0)*capt12
  39. - 13.e-8*capt13;
  40. yx = -(.02234941+1355.e-8*capt0)*capt1
  41. - 676.e-8*capt12 + 221.e-8*capt13;
  42. zx = -(.00971690-414.e-8*capt0)*capt1
  43. + 207.e-8*capt12 + 96.e-8*capt13;
  44. yy = - (.00024975+30.e-8*capt0)*capt12
  45. - 15.e-8*capt13;
  46. zy = -(.00010858+2.e-8*capt0)*capt12;
  47. zz = - (.00004721-4.e-8*capt0)*capt12;
  48. dxm = xx*xm + yx*ym + zx*zm;
  49. dym = - yx*xm + yy*ym + zy*zm;
  50. dzm = - zx*xm + zy*ym + zz*zm;
  51. xm = xm + dxm;
  52. ym = ym + dym;
  53. zm = zm + dzm;
  54. /*
  55. * convert to mean ecliptic system of date
  56. */
  57. alpha = atan2(ym, xm);
  58. delta = atan2(zm, sqrt(xm*xm+ym*ym));
  59. cl = cos(delta)*cos(alpha);
  60. sl = cos(delta)*sin(alpha)*cos(obliq) + sin(delta)*sin(obliq);
  61. sb = -cos(delta)*sin(alpha)*sin(obliq) + sin(delta)*cos(obliq);
  62. lambda = atan2(sl, cl);
  63. beta = atan2(sb, sqrt(cl*cl+sl*sl));
  64. rad = 1.e9;
  65. if(px != 0)
  66. rad = 20600/px;
  67. motion = 0;
  68. semi = 0;
  69. helio();
  70. geo();
  71. }