blob: b4c5b3fd0bc94924484868e68b8b24cef7696bda [file] [log] [blame]
#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);