⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sky.h

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 H
字号:
#define DIR	"/lib/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			20typedef 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;};typedef struct Image Image;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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -