output.c 990 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #include "astro.h"
  2. void
  3. output(char *s, Obj1 *p)
  4. {
  5. if(s == 0)
  6. print(" SAO %5ld", sao);
  7. else
  8. print("%10s", s);
  9. print(" %R %D %9.4f %9.4f %9.4f",
  10. p->ra, p->decl2, p->az, p->el, p->semi2);
  11. if(s == osun.name || s == omoon.name)
  12. print(" %7.4f", p->mag);
  13. print("\n");
  14. }
  15. int
  16. Rconv(Fmt *f)
  17. {
  18. double v;
  19. int h, m, c;
  20. v = va_arg(f->args, double);
  21. v = fmod(v*12/pi, 24); /* now hours */
  22. h = floor(v);
  23. v = fmod((v-h)*60, 60); /* now leftover minutes */
  24. m = floor(v);
  25. v = fmod((v-m)*60, 60); /* now leftover seconds */
  26. c = floor(v);
  27. return fmtprint(f, "%2dh%.2dm%.2ds", h, m, c);
  28. }
  29. int
  30. Dconv(Fmt *f1)
  31. {
  32. double v;
  33. int h, m, c, f;
  34. v = va_arg(f1->args, double);
  35. v = fmod(v/radian, 360); /* now degrees */
  36. f = 0;
  37. if(v > 180) {
  38. v = 360 - v;
  39. f = 1;
  40. }
  41. h = floor(v);
  42. v = fmod((v-h)*60, 60); /* now leftover minutes */
  43. m = floor(v);
  44. v = fmod((v-m)*60, 60); /* now leftover seconds */
  45. c = floor(v);
  46. return fmtprint(f1, "%c%.2d°%.2d'%.2d\"", "+-"[f], h, m, c);
  47. }