Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#include "astro.h"
2
 
3
Obj2*	objlst[] =
4
{
5
	&osun,
6
	&omoon,
7
	&oshad,
8
	&omerc,
9
	&ovenus,
10
	&omars,
11
	&ojup,
12
	&osat,
13
	&ouran,
14
	&onept,
15
	&oplut,
16
	&ocomet,
17
	0,
18
};
19
 
20
struct	idata
21
{
22
	char*	name;
23
	char*	name1;
24
	void	(*obj)(void);
25
} idata[] =
26
{
27
	"The sun",	"sun",		fsun,
28
	"The moon",	"moon",		moon,
29
	"The shadow",	"shadow",	shad,
30
	"Mercury",	"mercury",	merc,
31
	"Venus",	"venus",	venus,
32
	"Mars",		"mars",		mars,
33
	"Jupiter",	"jupiter",	jup,
34
	"Saturn",	"saturn",	sat,
35
	"Uranus",	"uranus",	uran,
36
	"Neptune",	"neptune",	nept,
37
	"Pluto",	"pluto",	plut,
38
	"Comet",	"comet",	comet,
39
};
40
 
41
void
42
init(void)
43
{
44
	Obj2 *q;
45
	int i;
46
 
47
	glat = nlat - (692.74*radsec)*sin(2.*nlat)
48
		 + (1.16*radsec)*sin(4.*nlat);
49
	erad = .99832707e0 + .00167644e0*cos(2.*nlat)
50
		 - 0.352e-5*cos(4.*nlat)
51
		 + 0.001e-5*cos(6.*nlat)
52
		 + 0.1568e-6*elev;
53
 
54
	for(i=0; q=objlst[i]; i++) {
55
		q->name = idata[i].name;
56
		q->name1 = idata[i].name1;
57
		q->obj = idata[i].obj;
58
	}
59
	ostar.obj = fstar;
60
	ostar.name = "star";
61
}
62
 
63
void
64
setime(double d)
65
{
66
	double x, xm, ym, zm;
67
 
68
	eday = d + deltat/86400.;
69
	wlong = awlong + 15.*deltat*radsec;
70
 
71
	capt = eday/36524.220e0;
72
	capt2 = capt*capt;
73
	capt3 = capt*capt2;
74
	nutate();
75
	eday += .1;
76
	sun();
77
	srad = rad;
78
	xm = rad*cos(beta)*cos(lambda);
79
	ym = rad*cos(beta)*sin(lambda);
80
	zm = rad*sin(beta);
81
	eday -= .1;
82
	sun();
83
	xms = rad*cos(beta)*cos(lambda);
84
	yms = rad*cos(beta)*sin(lambda);
85
	zms = rad*sin(beta);
86
	x = .057756;
87
	xdot = x*(xm-xms);
88
	ydot = x*(ym-yms);
89
	zdot = x*(zm-zms);
90
}
91
 
92
void
93
setobj(Obj1 *op)
94
{
95
	Obj1 *p;
96
 
97
	p = op;
98
	p->ra = ra;
99
	p->decl2 = decl2;
100
	p->semi2 = semi2;
101
	p->az = az;
102
	p->el = el;
103
	p->mag = mag;
104
}
105
 
106
long	starsao = 0;
107
 
108
void
109
fstar(void)
110
{
111
 
112
	ra = ostar.point[0].ra;
113
	decl2 = ostar.point[0].decl2;
114
	semi2 = ostar.point[0].semi2;
115
	az = ostar.point[0].az;
116
	el = ostar.point[0].el;
117
	mag = ostar.point[0].mag;
118
}
119
 
120
void
121
fsun(void)
122
{
123
 
124
	beta = 0;
125
	rad = 0;
126
	lambda = 0;
127
	motion = 0;
128
	helio();
129
	geo();
130
	seday = eday;
131
	salph = alpha;
132
	sdelt = delta;
133
	mag = lmb2;
134
}
135
 
136
void
137
shad(void)
138
{
139
 
140
	if(seday != eday)
141
		fsun();
142
	if(meday != eday)
143
		moon();
144
	alpha = fmod(salph+pi, pipi);
145
	delta = -sdelt;
146
	hp = mhp;
147
	semi = 1.0183*mhp/radsec - 969.85/srad;
148
	geo();
149
}