xref: /plan9/sys/src/cmd/astro/astro.h (revision 9a747e4fd48b9f4522c70c07e8f882a15030f964)
13e12c5d1SDavid du Colombier #include	<u.h>
23e12c5d1SDavid du Colombier #include	<libc.h>
33e12c5d1SDavid du Colombier 
47dd7cddfSDavid du Colombier #pragma	varargck	type	"R"	double
57dd7cddfSDavid du Colombier #pragma	varargck	type	"D"	double
67dd7cddfSDavid du Colombier 
73e12c5d1SDavid du Colombier typedef	struct	Obj1	Obj1;
83e12c5d1SDavid du Colombier typedef	struct	Obj2	Obj2;
93e12c5d1SDavid du Colombier typedef	struct	Obj3	Obj3;
103e12c5d1SDavid du Colombier typedef	struct	Occ	Occ;
113e12c5d1SDavid du Colombier typedef	struct	Event	Event;
123e12c5d1SDavid du Colombier typedef	struct	Tim	Tim;
133e12c5d1SDavid du Colombier typedef	struct	Moontab	Moontab;
143e12c5d1SDavid du Colombier 
153e12c5d1SDavid du Colombier #define	NPTS	12
163e12c5d1SDavid du Colombier #define	PER	1.0
173e12c5d1SDavid du Colombier 
183e12c5d1SDavid du Colombier enum
193e12c5d1SDavid du Colombier {
203e12c5d1SDavid du Colombier 	DARK	= 1<<0,
213e12c5d1SDavid du Colombier 	SIGNIF	= 1<<1,
223e12c5d1SDavid du Colombier 	PTIME	= 1<<2,
233e12c5d1SDavid du Colombier 	LIGHT	= 1<<3,
243e12c5d1SDavid du Colombier };
253e12c5d1SDavid du Colombier 
263e12c5d1SDavid du Colombier struct	Obj1
273e12c5d1SDavid du Colombier {
283e12c5d1SDavid du Colombier 	double	ra;
293e12c5d1SDavid du Colombier 	double	decl2;
303e12c5d1SDavid du Colombier 	double	semi2;
313e12c5d1SDavid du Colombier 	double	az;
323e12c5d1SDavid du Colombier 	double	el;
333e12c5d1SDavid du Colombier 	double	mag;
343e12c5d1SDavid du Colombier };
353e12c5d1SDavid du Colombier struct	Obj2
363e12c5d1SDavid du Colombier {
373e12c5d1SDavid du Colombier 	char*	name;
387dd7cddfSDavid du Colombier 	char*	name1;
393e12c5d1SDavid du Colombier 	void	(*obj)(void);
403e12c5d1SDavid du Colombier 	Obj1	point[NPTS+2];
413e12c5d1SDavid du Colombier };
423e12c5d1SDavid du Colombier struct	Obj3
433e12c5d1SDavid du Colombier {
443e12c5d1SDavid du Colombier 	double	t1;
457dd7cddfSDavid du Colombier 	double	e1;
463e12c5d1SDavid du Colombier 	double	t2;
477dd7cddfSDavid du Colombier 	double	e2;
483e12c5d1SDavid du Colombier 	double	t3;
497dd7cddfSDavid du Colombier 	double	e3;
503e12c5d1SDavid du Colombier 	double	t4;
517dd7cddfSDavid du Colombier 	double	e4;
523e12c5d1SDavid du Colombier 	double	t5;
537dd7cddfSDavid du Colombier 	double	e5;
543e12c5d1SDavid du Colombier };
553e12c5d1SDavid du Colombier struct Event
563e12c5d1SDavid du Colombier {
573e12c5d1SDavid du Colombier 	char*	format;
583e12c5d1SDavid du Colombier 	char*	arg1;
593e12c5d1SDavid du Colombier 	char*	arg2;
603e12c5d1SDavid du Colombier 	double	tim;
613e12c5d1SDavid du Colombier 	int	flag;
623e12c5d1SDavid du Colombier };
633e12c5d1SDavid du Colombier struct	Moontab
643e12c5d1SDavid du Colombier {
657dd7cddfSDavid du Colombier 	double	f;
663e12c5d1SDavid du Colombier 	char	c[4];
673e12c5d1SDavid du Colombier };
683e12c5d1SDavid du Colombier struct	Occ
693e12c5d1SDavid du Colombier {
703e12c5d1SDavid du Colombier 	Obj1	act;
713e12c5d1SDavid du Colombier 	Obj1	del0;
723e12c5d1SDavid du Colombier 	Obj1	del1;
733e12c5d1SDavid du Colombier 	Obj1	del2;
743e12c5d1SDavid du Colombier };
753e12c5d1SDavid du Colombier struct	Tim
763e12c5d1SDavid du Colombier {
773e12c5d1SDavid du Colombier 	double	ifa[5];
783e12c5d1SDavid du Colombier 	char	tz[4];
793e12c5d1SDavid du Colombier };
803e12c5d1SDavid du Colombier 
817dd7cddfSDavid du Colombier double	converge;
823e12c5d1SDavid du Colombier 
833e12c5d1SDavid du Colombier char	flags[128];
843e12c5d1SDavid du Colombier int	nperiods;
853e12c5d1SDavid du Colombier double	wlong, awlong, nlat, elev;
863e12c5d1SDavid du Colombier double	obliq, phi, eps, tobliq;
873e12c5d1SDavid du Colombier double	dphi, deps;
887dd7cddfSDavid du Colombier double	day, deld, per;
893e12c5d1SDavid du Colombier double	eday, capt, capt2, capt3, gst;
903e12c5d1SDavid du Colombier double	pi, pipi, radian, radsec, deltat;
913e12c5d1SDavid du Colombier double	erad, glat;
923e12c5d1SDavid du Colombier double	xms, yms, zms;
933e12c5d1SDavid du Colombier double	xdot, ydot, zdot;
943e12c5d1SDavid du Colombier 
953e12c5d1SDavid du Colombier double	ecc, incl, node, argp, mrad, anom, motion;
963e12c5d1SDavid du Colombier 
973e12c5d1SDavid du Colombier double	lambda, beta, rad, mag, semi;
983e12c5d1SDavid du Colombier double	alpha, delta, rp, hp;
993e12c5d1SDavid du Colombier double	ra, decl, semi2;
1003e12c5d1SDavid du Colombier double	lha, decl2, lmb2;
1013e12c5d1SDavid du Colombier double	az, el;
1023e12c5d1SDavid du Colombier 
1033e12c5d1SDavid du Colombier double	meday, seday, mhp, salph, sdelt, srad;
1043e12c5d1SDavid du Colombier 
1057dd7cddfSDavid du Colombier double*	cafp;
1063e12c5d1SDavid du Colombier char*	cacp;
1073e12c5d1SDavid du Colombier 
1083e12c5d1SDavid du Colombier double	rah, ram, ras, dday, dmin, dsec;
1093e12c5d1SDavid du Colombier long	sao;
1103e12c5d1SDavid du Colombier double	da, dd, px, epoch;
1113e12c5d1SDavid du Colombier char	line[100];
11259cc4ca5SDavid du Colombier Obj2	osun;
11359cc4ca5SDavid du Colombier Obj2	omoon;
11459cc4ca5SDavid du Colombier Obj2	oshad;
11559cc4ca5SDavid du Colombier Obj2	omerc;
11659cc4ca5SDavid du Colombier Obj2	ovenus;
11759cc4ca5SDavid du Colombier Obj2	omars;
11859cc4ca5SDavid du Colombier Obj2	osat;
11959cc4ca5SDavid du Colombier Obj2	ouran;
12059cc4ca5SDavid du Colombier Obj2	onept;
12159cc4ca5SDavid du Colombier Obj2	oplut;
12259cc4ca5SDavid du Colombier Obj2	ojup;
12359cc4ca5SDavid du Colombier Obj2	ostar;
12459cc4ca5SDavid du Colombier Obj2	ocomet;
1253e12c5d1SDavid du Colombier Obj3	occ;
1267dd7cddfSDavid du Colombier Obj2*	eobj1;
1277dd7cddfSDavid du Colombier Obj2*	eobj2;
1283e12c5d1SDavid du Colombier 
1293e12c5d1SDavid du Colombier char*	startab;
1303e12c5d1SDavid du Colombier 
1313e12c5d1SDavid du Colombier extern	int	dmo[];
1323e12c5d1SDavid du Colombier extern	Obj2*	objlst[];
1333e12c5d1SDavid du Colombier 
1347dd7cddfSDavid du Colombier extern	double	venfp[];
1353e12c5d1SDavid du Colombier extern	char	vencp[];
1367dd7cddfSDavid du Colombier extern	double	sunfp[];
1373e12c5d1SDavid du Colombier extern	char	suncp[];
1387dd7cddfSDavid du Colombier extern	double	mercfp[];
1393e12c5d1SDavid du Colombier extern	char	merccp[];
1407dd7cddfSDavid du Colombier extern	double	nutfp[];
1413e12c5d1SDavid du Colombier extern	char	nutcp[];
1423e12c5d1SDavid du Colombier extern	Moontab moontab[];
1433e12c5d1SDavid du Colombier 
1443e12c5d1SDavid du Colombier extern	void	args(int, char**);
1453e12c5d1SDavid du Colombier extern	void	bdtsetup(double, Tim*);
1463e12c5d1SDavid du Colombier extern	double	betcross(double);
1473e12c5d1SDavid du Colombier extern	double	convdate(Tim*);
1483e12c5d1SDavid du Colombier extern	double	cosadd(int, double, ...);
1493e12c5d1SDavid du Colombier extern	double	cosx(double, int, int, int, int, double);
1503e12c5d1SDavid du Colombier extern	double	dist(Obj1*, Obj1*);
1513e12c5d1SDavid du Colombier extern	double	dsrc(double, Tim*, int);
1523e12c5d1SDavid du Colombier extern	void	dtsetup(double, Tim*);
1533e12c5d1SDavid du Colombier extern	int	evcomp(void*, void*);
1543e12c5d1SDavid du Colombier extern	void	event(char*, char*, char*, double, int);
1553e12c5d1SDavid du Colombier extern	void	evflush(void);
1563e12c5d1SDavid du Colombier extern	double	fmod(double, double);
1573e12c5d1SDavid du Colombier extern	void	fstar(void);
1583e12c5d1SDavid du Colombier extern	void	fsun(void);
1593e12c5d1SDavid du Colombier extern	void	geo(void);
1603e12c5d1SDavid du Colombier extern	void	helio(void);
1617dd7cddfSDavid du Colombier extern	void	icosadd(double*, char*);
1623e12c5d1SDavid du Colombier extern	void	init(void);
1633e12c5d1SDavid du Colombier extern	void	jup(void);
1643e12c5d1SDavid du Colombier extern	int	lastsun(Tim*, int);
1653e12c5d1SDavid du Colombier extern	void	main(int, char**);
1663e12c5d1SDavid du Colombier extern	void	mars(void);
1673e12c5d1SDavid du Colombier extern	double	melong(Obj2*);
1683e12c5d1SDavid du Colombier extern	void	merc(void);
1693e12c5d1SDavid du Colombier extern	void	moon(void);
1703e12c5d1SDavid du Colombier extern	void	numb(int);
1713e12c5d1SDavid du Colombier extern	void	nutate(void);
1723e12c5d1SDavid du Colombier extern	void	occult(Obj2*, Obj2*, double);
1733e12c5d1SDavid du Colombier extern	void	output(char*, Obj1*);
1743e12c5d1SDavid du Colombier extern	void	pdate(double);
1753e12c5d1SDavid du Colombier extern	double	pinorm(double);
1763e12c5d1SDavid du Colombier extern	void	ptime(double);
17759cc4ca5SDavid du Colombier extern	void	pstime(double);
1783e12c5d1SDavid du Colombier extern	double	pyth(double);
1793e12c5d1SDavid du Colombier extern	double	readate(void);
1803e12c5d1SDavid du Colombier extern	double	readdt(void);
1813e12c5d1SDavid du Colombier extern	void	readlat(int);
1823e12c5d1SDavid du Colombier extern	double	rise(Obj2*, double);
1833e12c5d1SDavid du Colombier extern	int	rline(int);
1843e12c5d1SDavid du Colombier extern	void	sat(void);
18559cc4ca5SDavid du Colombier extern	void	uran(void);
18659cc4ca5SDavid du Colombier extern	void	nept(void);
18759cc4ca5SDavid du Colombier extern	void	plut(void);
1883e12c5d1SDavid du Colombier extern	void	satel(double);
1893e12c5d1SDavid du Colombier extern	void	satels(void);
1903e12c5d1SDavid du Colombier extern	void	search(void);
1913e12c5d1SDavid du Colombier extern	double	set(Obj2*, double);
1923e12c5d1SDavid du Colombier extern	void	set3pt(Obj2*, int, Occ*);
1933e12c5d1SDavid du Colombier extern	void	setime(double);
1943e12c5d1SDavid du Colombier extern	void	setobj(Obj1*);
1953e12c5d1SDavid du Colombier extern	void	setpt(Occ*, double);
1963e12c5d1SDavid du Colombier extern	void	shad(void);
1973e12c5d1SDavid du Colombier extern	double	sinadd(int, double, ...);
1983e12c5d1SDavid du Colombier extern	double	sinx(double, int, int, int, int, double);
1993e12c5d1SDavid du Colombier extern	char*	skip(int);
2003e12c5d1SDavid du Colombier extern	double	solstice(int);
2013e12c5d1SDavid du Colombier extern	void	star(void);
2023e12c5d1SDavid du Colombier extern	void	stars(void);
2033e12c5d1SDavid du Colombier extern	void	sun(void);
2043e12c5d1SDavid du Colombier extern	double	sunel(double);
2053e12c5d1SDavid du Colombier extern	void	venus(void);
2063e12c5d1SDavid du Colombier extern	int	vis(double, double, double, double);
2073e12c5d1SDavid du Colombier extern	void	comet(void);
208*9a747e4fSDavid du Colombier extern	int	Rconv(Fmt*);
209*9a747e4fSDavid du Colombier extern	int	Dconv(Fmt*);
2103e12c5d1SDavid du Colombier extern	double	etdate(long, int, double);
211