| #include "astro.h" |
| |
| void |
| output(char *s, Obj1 *p) |
| { |
| |
| if(s == 0) |
| print(" SAO %5ld", sao); |
| else |
| print("%10s", s); |
| print(" %R %D %9.4f %9.4f %9.4f", |
| p->ra, p->decl2, p->az, p->el, p->semi2); |
| if(s == osun.name || s == omoon.name) |
| print(" %7.4f", p->mag); |
| print("\n"); |
| } |
| |
| int |
| Rconv(Fmt *f) |
| { |
| double v; |
| int h, m, c; |
| |
| v = va_arg(f->args, double); |
| v = fmod(v*12/pi, 24); /* now hours */ |
| h = floor(v); |
| v = fmod((v-h)*60, 60); /* now leftover minutes */ |
| m = floor(v); |
| v = fmod((v-m)*60, 60); /* now leftover seconds */ |
| c = floor(v); |
| return fmtprint(f, "%2dh%.2dm%.2ds", h, m, c); |
| } |
| |
| int |
| Dconv(Fmt *f1) |
| { |
| double v; |
| int h, m, c, f; |
| |
| v = va_arg(f1->args, double); |
| v = fmod(v/radian, 360); /* now degrees */ |
| f = 0; |
| if(v > 180) { |
| v = 360 - v; |
| f = 1; |
| } |
| h = floor(v); |
| v = fmod((v-h)*60, 60); /* now leftover minutes */ |
| m = floor(v); |
| v = fmod((v-m)*60, 60); /* now leftover seconds */ |
| c = floor(v); |
| return fmtprint(f1, "%c%.2d°%.2d'%.2d\"", "+-"[f], h, m, c); |
| } |