xref: /plan9-contrib/sys/src/cmd/scat/plate.h (revision 59cc4ca53493a3c6d2349fe2b7f7c40f7dce7294)
1*219b2ee8SDavid du Colombier #define	RAD(x)	((x)*PI_180)
2*219b2ee8SDavid du Colombier #define	DEG(x)	((x)/PI_180)
3*219b2ee8SDavid du Colombier #define ARCSECONDS_PER_RADIAN	(DEG(1)*3600)
4*219b2ee8SDavid du Colombier #define input_nybble(infile)    input_nbits(infile,4)
5*219b2ee8SDavid du Colombier 
6*219b2ee8SDavid du Colombier typedef float	Angle;	/* in radians */
7*219b2ee8SDavid du Colombier 
8*219b2ee8SDavid du Colombier enum
9*219b2ee8SDavid du Colombier {
10*219b2ee8SDavid du Colombier 	/*
11*219b2ee8SDavid du Colombier 	 * parameters for plate
12*219b2ee8SDavid du Colombier 	 */
13*219b2ee8SDavid du Colombier 	Pppo1	= 0,
14*219b2ee8SDavid du Colombier 	Pppo2,
15*219b2ee8SDavid du Colombier 	Pppo3,
16*219b2ee8SDavid du Colombier 	Pppo4,
17*219b2ee8SDavid du Colombier 	Pppo5,
18*219b2ee8SDavid du Colombier 	Pppo6,
19*219b2ee8SDavid du Colombier 	Pamdx1,
20*219b2ee8SDavid du Colombier 	Pamdx2,
21*219b2ee8SDavid du Colombier 	Pamdx3,
22*219b2ee8SDavid du Colombier 	Pamdx4,
23*219b2ee8SDavid du Colombier 	Pamdx5,
24*219b2ee8SDavid du Colombier 	Pamdx6,
25*219b2ee8SDavid du Colombier 	Pamdx7,
26*219b2ee8SDavid du Colombier 	Pamdx8,
27*219b2ee8SDavid du Colombier 	Pamdx9,
28*219b2ee8SDavid du Colombier 	Pamdx10,
29*219b2ee8SDavid du Colombier 	Pamdx11,
30*219b2ee8SDavid du Colombier 	Pamdx12,
31*219b2ee8SDavid du Colombier 	Pamdx13,
32*219b2ee8SDavid du Colombier 	Pamdx14,
33*219b2ee8SDavid du Colombier 	Pamdx15,
34*219b2ee8SDavid du Colombier 	Pamdx16,
35*219b2ee8SDavid du Colombier 	Pamdx17,
36*219b2ee8SDavid du Colombier 	Pamdx18,
37*219b2ee8SDavid du Colombier 	Pamdx19,
38*219b2ee8SDavid du Colombier 	Pamdx20,
39*219b2ee8SDavid du Colombier 	Pamdy1,
40*219b2ee8SDavid du Colombier 	Pamdy2,
41*219b2ee8SDavid du Colombier 	Pamdy3,
42*219b2ee8SDavid du Colombier 	Pamdy4,
43*219b2ee8SDavid du Colombier 	Pamdy5,
44*219b2ee8SDavid du Colombier 	Pamdy6,
45*219b2ee8SDavid du Colombier 	Pamdy7,
46*219b2ee8SDavid du Colombier 	Pamdy8,
47*219b2ee8SDavid du Colombier 	Pamdy9,
48*219b2ee8SDavid du Colombier 	Pamdy10,
49*219b2ee8SDavid du Colombier 	Pamdy11,
50*219b2ee8SDavid du Colombier 	Pamdy12,
51*219b2ee8SDavid du Colombier 	Pamdy13,
52*219b2ee8SDavid du Colombier 	Pamdy14,
53*219b2ee8SDavid du Colombier 	Pamdy15,
54*219b2ee8SDavid du Colombier 	Pamdy16,
55*219b2ee8SDavid du Colombier 	Pamdy17,
56*219b2ee8SDavid du Colombier 	Pamdy18,
57*219b2ee8SDavid du Colombier 	Pamdy19,
58*219b2ee8SDavid du Colombier 	Pamdy20,
59*219b2ee8SDavid du Colombier 	Ppltscale,
60*219b2ee8SDavid du Colombier 	Pxpixelsz,
61*219b2ee8SDavid du Colombier 	Pypixelsz,
62*219b2ee8SDavid du Colombier 	Ppltra,
63*219b2ee8SDavid du Colombier 	Ppltrah,
64*219b2ee8SDavid du Colombier 	Ppltram,
65*219b2ee8SDavid du Colombier 	Ppltras,
66*219b2ee8SDavid du Colombier 	Ppltdec,
67*219b2ee8SDavid du Colombier 	Ppltdecd,
68*219b2ee8SDavid du Colombier 	Ppltdecm,
69*219b2ee8SDavid du Colombier 	Ppltdecs,
70*219b2ee8SDavid du Colombier 	Pnparam,
71*219b2ee8SDavid du Colombier };
72*219b2ee8SDavid du Colombier 
73*219b2ee8SDavid du Colombier typedef	struct	Plate	Plate;
74*219b2ee8SDavid du Colombier struct	Plate
75*219b2ee8SDavid du Colombier {
76*219b2ee8SDavid du Colombier 	char	rgn[7];
77*219b2ee8SDavid du Colombier 	char	disk;
78*219b2ee8SDavid du Colombier 	Angle	ra;
79*219b2ee8SDavid du Colombier 	Angle	dec;
80*219b2ee8SDavid du Colombier };
81*219b2ee8SDavid du Colombier 
82*219b2ee8SDavid du Colombier typedef	struct	Header	Header;
83*219b2ee8SDavid du Colombier struct	Header
84*219b2ee8SDavid du Colombier {
85*219b2ee8SDavid du Colombier 	float	param[Pnparam];
86*219b2ee8SDavid du Colombier 	int	amdflag;
87*219b2ee8SDavid du Colombier 
88*219b2ee8SDavid du Colombier 	float	x;
89*219b2ee8SDavid du Colombier 	float	y;
90*219b2ee8SDavid du Colombier 	float	xi;
91*219b2ee8SDavid du Colombier 	float	eta;
92*219b2ee8SDavid du Colombier };
93*219b2ee8SDavid du Colombier typedef	long	Type;
94*219b2ee8SDavid du Colombier 
95*219b2ee8SDavid du Colombier typedef struct	Image	Image;
96*219b2ee8SDavid du Colombier struct	Image
97*219b2ee8SDavid du Colombier {
98*219b2ee8SDavid du Colombier 	int	nx;
99*219b2ee8SDavid du Colombier 	int	ny;	/* ny is the fast-varying dimension */
100*219b2ee8SDavid du Colombier 	Type	a[1];
101*219b2ee8SDavid du Colombier };
102*219b2ee8SDavid du Colombier 
103*219b2ee8SDavid du Colombier int	nplate;
104*219b2ee8SDavid du Colombier Plate	plate[2000];		/* needs to go to 2000 when the north comes */
105*219b2ee8SDavid du Colombier double	PI_180;
106*219b2ee8SDavid du Colombier double	TWOPI;
107*219b2ee8SDavid du Colombier int	debug;
108*219b2ee8SDavid du Colombier struct
109*219b2ee8SDavid du Colombier {
110*219b2ee8SDavid du Colombier 	float	min;
111*219b2ee8SDavid du Colombier 	float	max;
112*219b2ee8SDavid du Colombier 	float	del;
113*219b2ee8SDavid du Colombier 	double	gamma;
114*219b2ee8SDavid du Colombier 	int	neg;
115*219b2ee8SDavid du Colombier } gam;
116*219b2ee8SDavid du Colombier 
117*219b2ee8SDavid du Colombier char*	hms(Angle);
118*219b2ee8SDavid du Colombier char*	dms(Angle);
119*219b2ee8SDavid du Colombier double	xsqrt(double);
120*219b2ee8SDavid du Colombier Angle	dist(Angle, Angle, Angle, Angle);
121*219b2ee8SDavid du Colombier Header*	getheader(char*);
122*219b2ee8SDavid du Colombier char*	getword(char*, char*);
123*219b2ee8SDavid du Colombier void	amdinv(Header*, Angle, Angle, float, float);
124*219b2ee8SDavid du Colombier void	ppoinv(Header*, Angle, Angle);
125*219b2ee8SDavid du Colombier void	xypos(Header*, Angle, Angle, float, float);
126*219b2ee8SDavid du Colombier void	traneqstd(Header*, Angle, Angle);
127*219b2ee8SDavid du Colombier Angle	getra(char*);
128*219b2ee8SDavid du Colombier Angle	getdec(char*);
129*219b2ee8SDavid du Colombier void	getplates(void);
130*219b2ee8SDavid du Colombier 
131*219b2ee8SDavid du Colombier Image*	dssread(char*);
132*219b2ee8SDavid du Colombier void	hinv(Type*, int, int);
133*219b2ee8SDavid du Colombier int	input_bit(Biobuf*);
134*219b2ee8SDavid du Colombier int	input_nbits(Biobuf*, int);
135*219b2ee8SDavid du Colombier void	qtree_decode(Biobuf*, Type*, int, int, int, int);
136*219b2ee8SDavid du Colombier void	start_inputing_bits(void);
137*219b2ee8SDavid du Colombier Bitmap*	image(Angle, Angle, Angle, Angle);
138*219b2ee8SDavid du Colombier int	dogamma(int);
139