|  | #define	RAD(x)	((x)*PI_180) | 
|  | #define	DEG(x)	((x)/PI_180) | 
|  | #define ARCSECONDS_PER_RADIAN	(DEG(1)*3600) | 
|  | #define input_nybble(infile)    input_nbits(infile,4) | 
|  |  | 
|  | typedef float	Angle;	/* in radians */ | 
|  |  | 
|  | enum | 
|  | { | 
|  | /* | 
|  | * parameters for plate | 
|  | */ | 
|  | Pppo1	= 0, | 
|  | Pppo2, | 
|  | Pppo3, | 
|  | Pppo4, | 
|  | Pppo5, | 
|  | Pppo6, | 
|  | Pamdx1, | 
|  | Pamdx2, | 
|  | Pamdx3, | 
|  | Pamdx4, | 
|  | Pamdx5, | 
|  | Pamdx6, | 
|  | Pamdx7, | 
|  | Pamdx8, | 
|  | Pamdx9, | 
|  | Pamdx10, | 
|  | Pamdx11, | 
|  | Pamdx12, | 
|  | Pamdx13, | 
|  | Pamdx14, | 
|  | Pamdx15, | 
|  | Pamdx16, | 
|  | Pamdx17, | 
|  | Pamdx18, | 
|  | Pamdx19, | 
|  | Pamdx20, | 
|  | Pamdy1, | 
|  | Pamdy2, | 
|  | Pamdy3, | 
|  | Pamdy4, | 
|  | Pamdy5, | 
|  | Pamdy6, | 
|  | Pamdy7, | 
|  | Pamdy8, | 
|  | Pamdy9, | 
|  | Pamdy10, | 
|  | Pamdy11, | 
|  | Pamdy12, | 
|  | Pamdy13, | 
|  | Pamdy14, | 
|  | Pamdy15, | 
|  | Pamdy16, | 
|  | Pamdy17, | 
|  | Pamdy18, | 
|  | Pamdy19, | 
|  | Pamdy20, | 
|  | Ppltscale, | 
|  | Pxpixelsz, | 
|  | Pypixelsz, | 
|  | Ppltra, | 
|  | Ppltrah, | 
|  | Ppltram, | 
|  | Ppltras, | 
|  | Ppltdec, | 
|  | Ppltdecd, | 
|  | Ppltdecm, | 
|  | Ppltdecs, | 
|  | Pnparam | 
|  | }; | 
|  |  | 
|  | typedef	struct	Plate	Plate; | 
|  | struct	Plate | 
|  | { | 
|  | char	rgn[7]; | 
|  | char	disk; | 
|  | Angle	ra; | 
|  | Angle	dec; | 
|  | }; | 
|  |  | 
|  | typedef	struct	Header	Header; | 
|  | struct	Header | 
|  | { | 
|  | float	param[Pnparam]; | 
|  | int	amdflag; | 
|  |  | 
|  | float	x; | 
|  | float	y; | 
|  | float	xi; | 
|  | float	eta; | 
|  | }; | 
|  | typedef	int32	Type; | 
|  |  | 
|  | typedef struct	Image	Image; | 
|  | struct	Image | 
|  | { | 
|  | int	nx; | 
|  | int	ny;	/* ny is the fast-varying dimension */ | 
|  | Type	a[1]; | 
|  | }; | 
|  |  | 
|  | int	nplate; | 
|  | Plate	plate[2000];		/* needs to go to 2000 when the north comes */ | 
|  | double	PI_180; | 
|  | double	TWOPI; | 
|  | int	debug; | 
|  | struct | 
|  | { | 
|  | float	min; | 
|  | float	max; | 
|  | float	del; | 
|  | double	gamma; | 
|  | int	neg; | 
|  | } gam; | 
|  |  | 
|  | char*	hms(Angle); | 
|  | char*	dms(Angle); | 
|  | double	xsqrt(double); | 
|  | Angle	dist(Angle, Angle, Angle, Angle); | 
|  | Header*	getheader(char*); | 
|  | char*	getword(char*, char*); | 
|  | void	amdinv(Header*, Angle, Angle, float, float); | 
|  | void	ppoinv(Header*, Angle, Angle); | 
|  | void	xypos(Header*, Angle, Angle, float, float); | 
|  | void	traneqstd(Header*, Angle, Angle); | 
|  | Angle	getra(char*); | 
|  | Angle	getdec(char*); | 
|  | void	getplates(void); | 
|  |  | 
|  | Image*	dssread(char*); | 
|  | void	hinv(Type*, int, int); | 
|  | int	input_bit(Biobuf*); | 
|  | int	input_nbits(Biobuf*, int); | 
|  | void	qtree_decode(Biobuf*, Type*, int, int, int, int); | 
|  | void	start_inputing_bits(void); | 
|  | Bitmap*	image(Angle, Angle, Angle, Angle); | 
|  | int	dogamma(int); |