Add scat. Temporary fix to rc r.e. note groups.
This commit is contained in:
parent
3f8c70e97c
commit
8a3b2ceb0f
22 changed files with 5997 additions and 2 deletions
413
src/cmd/scat/sky.h
Normal file
413
src/cmd/scat/sky.h
Normal file
|
|
@ -0,0 +1,413 @@
|
|||
#define DIR "#9/sky"
|
||||
/*
|
||||
* This code reflects many years of changes. There remain residues
|
||||
* of prior implementations.
|
||||
*
|
||||
* Keys:
|
||||
* 32 bits long. High 26 bits are encoded as described below.
|
||||
* Low 6 bits are types:
|
||||
*
|
||||
* Patch is ~ one square degree of sky. It points to an otherwise
|
||||
* anonymous list of Catalog keys. The 0th key is special:
|
||||
* it contains up to 4 constellation identifiers.
|
||||
* Catalogs (SAO,NGC,M,...) are:
|
||||
* 31.........8|76|543210
|
||||
* catalog # |BB|catalog name
|
||||
* BB is two bits of brightness:
|
||||
* 00 -inf < m <= 7
|
||||
* 01 7 < m <= 10
|
||||
* 10 10 < m <= 13
|
||||
* 11 13 < m < inf
|
||||
* The BB field is a dreg, and correct only for SAO and NGC.
|
||||
* IC(n) is just NGC(n+7840)
|
||||
* Others should be self-explanatory.
|
||||
*
|
||||
* Records:
|
||||
*
|
||||
* Star is an SAOrec
|
||||
* Galaxy, PlanetaryN, OpenCl, GlobularCl, DiffuseN, etc., are NGCrecs.
|
||||
* Abell is an Abellrec
|
||||
* The Namedxxx records hold a name and a catalog entry; they result from
|
||||
* name lookups.
|
||||
*/
|
||||
|
||||
typedef enum
|
||||
{
|
||||
Planet,
|
||||
Patch,
|
||||
SAO,
|
||||
NGC,
|
||||
M,
|
||||
Constel_deprecated,
|
||||
Nonstar_deprecated,
|
||||
NamedSAO,
|
||||
NamedNGC,
|
||||
NamedAbell,
|
||||
Abell,
|
||||
/* NGC types */
|
||||
Galaxy,
|
||||
PlanetaryN,
|
||||
OpenCl,
|
||||
GlobularCl,
|
||||
DiffuseN,
|
||||
NebularCl,
|
||||
Asterism,
|
||||
Knot,
|
||||
Triple,
|
||||
Double,
|
||||
Single,
|
||||
Uncertain,
|
||||
Nonexistent,
|
||||
Unknown,
|
||||
PlateDefect,
|
||||
/* internal */
|
||||
NGCN,
|
||||
PatchC,
|
||||
NONGC,
|
||||
}Type;
|
||||
|
||||
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,
|
||||
};
|
||||
|
||||
#define UNKNOWNMAG 32767
|
||||
#define NPlanet 20
|
||||
|
||||
typedef float Angle; /* in radians */
|
||||
typedef long DAngle; /* on disk: in units of milliarcsec */
|
||||
typedef short Mag; /* multiplied by 10 */
|
||||
typedef long Key; /* known to be 4 bytes, unfortunately */
|
||||
|
||||
/*
|
||||
* All integers are stored in little-endian order.
|
||||
*/
|
||||
typedef struct NGCrec NGCrec;
|
||||
struct NGCrec{
|
||||
DAngle ra;
|
||||
DAngle dec;
|
||||
DAngle dummy1; /* compatibility with old RNGC version */
|
||||
DAngle diam;
|
||||
Mag mag;
|
||||
short ngc; /* if >NNGC, IC number is ngc-NNGC */
|
||||
char diamlim;
|
||||
char type;
|
||||
char magtype;
|
||||
char dummy2;
|
||||
char desc[52]; /* 0-terminated Dreyer description */
|
||||
};
|
||||
|
||||
typedef struct Abellrec Abellrec;
|
||||
struct Abellrec{
|
||||
DAngle ra;
|
||||
DAngle dec;
|
||||
DAngle glat;
|
||||
DAngle glong;
|
||||
Mag mag10; /* mag of 10th brightest cluster member; in same place as ngc.mag*/
|
||||
short abell;
|
||||
DAngle rad;
|
||||
short pop;
|
||||
short dist;
|
||||
char distgrp;
|
||||
char richgrp;
|
||||
char flag;
|
||||
char pad;
|
||||
};
|
||||
|
||||
typedef struct Planetrec Planetrec;
|
||||
struct Planetrec{
|
||||
DAngle ra;
|
||||
DAngle dec;
|
||||
DAngle az;
|
||||
DAngle alt;
|
||||
DAngle semidiam;
|
||||
double phase;
|
||||
char name[16];
|
||||
};
|
||||
|
||||
/*
|
||||
* Star names: 0,0==unused. Numbers are name[0]=1,..,99.
|
||||
* Greek letters are alpha=101, etc.
|
||||
* Constellations are alphabetical order by abbreviation, and=1, etc.
|
||||
*/
|
||||
typedef struct SAOrec SAOrec;
|
||||
struct SAOrec{
|
||||
DAngle ra;
|
||||
DAngle dec;
|
||||
DAngle dra;
|
||||
DAngle ddec;
|
||||
Mag mag; /* visual */
|
||||
Mag mpg;
|
||||
char spec[3];
|
||||
char code;
|
||||
char compid[2];
|
||||
char hdcode;
|
||||
char pad1;
|
||||
long hd; /* HD catalog number */
|
||||
char name[3]; /* name[0]=alpha name[1]=2 name[3]=ori */
|
||||
char nname; /* number of prose names */
|
||||
/* 36 bytes to here */
|
||||
};
|
||||
|
||||
typedef struct Mindexrec Mindexrec;
|
||||
struct Mindexrec{ /* code knows the bit patterns in here; this is a long */
|
||||
char m; /* M number */
|
||||
char dummy;
|
||||
short ngc;
|
||||
};
|
||||
|
||||
typedef struct Bayerec Bayerec;
|
||||
struct Bayerec{
|
||||
long sao;
|
||||
char name[3];
|
||||
char pad;
|
||||
};
|
||||
|
||||
/*
|
||||
* Internal form
|
||||
*/
|
||||
|
||||
typedef struct Namedrec Namedrec;
|
||||
struct Namedrec{
|
||||
char name[36];
|
||||
};
|
||||
|
||||
typedef struct Namerec Namerec;
|
||||
struct Namerec{
|
||||
long sao;
|
||||
long ngc;
|
||||
long abell;
|
||||
char name[36]; /* null terminated */
|
||||
};
|
||||
|
||||
typedef struct Patchrec Patchrec;
|
||||
struct Patchrec{
|
||||
int nkey;
|
||||
long key[60];
|
||||
};
|
||||
|
||||
typedef struct Record Record;
|
||||
struct Record{
|
||||
Type type;
|
||||
long index;
|
||||
union{
|
||||
SAOrec sao;
|
||||
NGCrec ngc;
|
||||
Abellrec abell;
|
||||
Namedrec named;
|
||||
Patchrec patch;
|
||||
Planetrec planet;
|
||||
/* PatchCrec is empty */
|
||||
};
|
||||
};
|
||||
|
||||
typedef struct Name Name;
|
||||
struct Name{
|
||||
char *name;
|
||||
int type;
|
||||
};
|
||||
|
||||
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 long Pix;
|
||||
|
||||
typedef struct Img Img;
|
||||
struct Img
|
||||
{
|
||||
int nx;
|
||||
int ny; /* ny is the fast-varying dimension */
|
||||
Pix a[1];
|
||||
};
|
||||
|
||||
#define RAD(x) ((x)*PI_180)
|
||||
#define DEG(x) ((x)/PI_180)
|
||||
#define ARCSECONDS_PER_RADIAN (DEG(1)*3600)
|
||||
#define MILLIARCSEC (1000*60*60)
|
||||
|
||||
int nplate;
|
||||
Plate plate[2000]; /* needs to go to 2000 when the north comes */
|
||||
double PI_180;
|
||||
double TWOPI;
|
||||
double LN2;
|
||||
int debug;
|
||||
struct
|
||||
{
|
||||
float min;
|
||||
float max;
|
||||
float gamma;
|
||||
float absgamma;
|
||||
float mult1;
|
||||
float mult2;
|
||||
int neg;
|
||||
} gam;
|
||||
|
||||
typedef struct Picture Picture;
|
||||
struct Picture
|
||||
{
|
||||
int minx;
|
||||
int miny;
|
||||
int maxx;
|
||||
int maxy;
|
||||
char name[16];
|
||||
uchar *data;
|
||||
};
|
||||
|
||||
#ifndef _DRAW_H_
|
||||
typedef struct Image Image;
|
||||
#endif
|
||||
|
||||
extern double PI_180;
|
||||
extern double TWOPI;
|
||||
extern char *progname;
|
||||
extern char *desctab[][2];
|
||||
extern Name names[];
|
||||
extern Record *rec;
|
||||
extern long nrec;
|
||||
extern Planetrec *planet;
|
||||
/* for bbox: */
|
||||
extern int folded;
|
||||
extern DAngle ramin;
|
||||
extern DAngle ramax;
|
||||
extern DAngle decmin;
|
||||
extern DAngle decmax;
|
||||
extern Biobuf bout;
|
||||
|
||||
extern void saoopen(void);
|
||||
extern void ngcopen(void);
|
||||
extern void patchopen(void);
|
||||
extern void mopen(void);
|
||||
extern void constelopen(void);
|
||||
extern void lowercase(char*);
|
||||
extern void lookup(char*, int);
|
||||
extern int typetab(int);
|
||||
extern char*ngcstring(int);
|
||||
extern char*skip(int, char*);
|
||||
extern void prrec(Record*);
|
||||
extern int equal(char*, char*);
|
||||
extern int parsename(char*);
|
||||
extern void radec(int, int*, int*, int*);
|
||||
extern int btag(short);
|
||||
extern long patcha(Angle, Angle);
|
||||
extern long patch(int, int, int);
|
||||
extern char*hms(Angle);
|
||||
extern char*dms(Angle);
|
||||
extern char*ms(Angle);
|
||||
extern char*hm(Angle);
|
||||
extern char*dm(Angle);
|
||||
extern char*deg(Angle);
|
||||
extern char*hm5(Angle);
|
||||
extern long dangle(Angle);
|
||||
extern Angle angle(DAngle);
|
||||
extern void prdesc(char*, char*(*)[2], short*);
|
||||
extern double xsqrt(double);
|
||||
extern Angle dist(Angle, Angle, Angle, Angle);
|
||||
extern Header* getheader(char*);
|
||||
extern char* getword(char*, char*);
|
||||
extern void amdinv(Header*, Angle, Angle, float, float);
|
||||
extern void ppoinv(Header*, Angle, Angle);
|
||||
extern void xypos(Header*, Angle, Angle, float, float);
|
||||
extern void traneqstd(Header*, Angle, Angle);
|
||||
extern Angle getra(char*);
|
||||
extern Angle getdec(char*);
|
||||
extern void getplates(void);
|
||||
extern Img* dssread(char*);
|
||||
extern void hinv(Pix*, int, int);
|
||||
extern int input_bit(Biobuf*);
|
||||
extern int input_nbits(Biobuf*, int);
|
||||
extern int input_huffman(Biobuf*);
|
||||
extern int input_nybble(Biobuf*);
|
||||
extern void qtree_decode(Biobuf*, Pix*, int, int, int, int);
|
||||
extern void start_inputing_bits(void);
|
||||
extern Picture* image(Angle, Angle, Angle, Angle);
|
||||
extern char* dssmount(int);
|
||||
extern int dogamma(Pix);
|
||||
extern void displaypic(Picture*);
|
||||
extern void displayimage(Image*);
|
||||
extern void plot(char*);
|
||||
extern void astro(char*, int);
|
||||
extern char* alpha(char*, char*);
|
||||
extern char* skipbl(char*);
|
||||
extern void flatten(void);
|
||||
extern int bbox(long, long, int);
|
||||
extern int inbbox(DAngle, DAngle);
|
||||
extern char* nameof(Record*);
|
||||
|
||||
#define NINDEX 400
|
||||
Loading…
Add table
Add a link
Reference in a new issue