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