Astro with some minor changes to placate Unix.
This commit is contained in:
parent
95f57b01e2
commit
cd5bae7871
33 changed files with 4819 additions and 0 deletions
132
src/cmd/astro/comet.c
Normal file
132
src/cmd/astro/comet.c
Normal file
|
|
@ -0,0 +1,132 @@
|
|||
#include "astro.h"
|
||||
|
||||
#define MAXE (.999) /* cant do hyperbolas */
|
||||
|
||||
void
|
||||
comet(void)
|
||||
{
|
||||
double pturbl, pturbb, pturbr;
|
||||
double lograd;
|
||||
double dele, enom, vnom, nd, sl;
|
||||
|
||||
struct elem
|
||||
{
|
||||
double t; /* time of perihelion */
|
||||
double q; /* perihelion distance */
|
||||
double e; /* eccentricity */
|
||||
double i; /* inclination */
|
||||
double w; /* argument of perihelion */
|
||||
double o; /* longitude of ascending node */
|
||||
} elem;
|
||||
|
||||
/* elem = (struct elem)
|
||||
{
|
||||
etdate(1990, 5, 19.293),
|
||||
0.9362731,
|
||||
0.6940149,
|
||||
11.41096,
|
||||
198.77059,
|
||||
69.27130,
|
||||
}; /* p/schwassmann-wachmann 3, 1989d */
|
||||
/* elem = (struct elem)
|
||||
{
|
||||
etdate(1990, 4, 9.9761),
|
||||
0.349957,
|
||||
1.00038,
|
||||
58.9596,
|
||||
61.5546,
|
||||
75.2132,
|
||||
}; /* austin 3, 1989c */
|
||||
/* elem = (struct elem)
|
||||
{
|
||||
etdate(1990, 10, 24.36),
|
||||
0.9385,
|
||||
1.00038,
|
||||
131.62,
|
||||
242.58,
|
||||
138.57,
|
||||
}; /* levy 6 , 1990c */
|
||||
/* elem=(struct elem)
|
||||
{
|
||||
etdate(1996, 5, 1.3965),
|
||||
0.230035,
|
||||
0.999662,
|
||||
124.9098,
|
||||
130.2102,
|
||||
188.0430,
|
||||
}; /* C/1996 B2 (Hyakutake) */
|
||||
/* elem=(struct elem)
|
||||
{
|
||||
etdate(1997, 4, 1.13413),
|
||||
0.9141047,
|
||||
0.9950989,
|
||||
89.42932,
|
||||
130.59066,
|
||||
282.47069,
|
||||
}; /*C/1995 O1 (Hale-Bopp) */
|
||||
/* elem=(struct elem)
|
||||
{
|
||||
etdate(2000, 7, 26.1754),
|
||||
0.765126,
|
||||
0.999356,
|
||||
149.3904,
|
||||
151.0510,
|
||||
83.1909,
|
||||
}; /*C/1999 S4 (Linear) */
|
||||
elem=(struct elem)
|
||||
{
|
||||
etdate(2002, 3, 18.9784),
|
||||
0.5070601,
|
||||
0.990111,
|
||||
28.12106,
|
||||
34.6666,
|
||||
93.1206,
|
||||
}; /*C/2002 C1 (Ikeya-Zhang) */
|
||||
|
||||
ecc = elem.e;
|
||||
if(ecc > MAXE)
|
||||
ecc = MAXE;
|
||||
incl = elem.i * radian;
|
||||
node = (elem.o + 0.4593) * radian;
|
||||
argp = (elem.w + elem.o + 0.4066) * radian;
|
||||
mrad = elem.q / (1-ecc);
|
||||
motion = .01720209895 * sqrt(1/(mrad*mrad*mrad))/radian;
|
||||
anom = (eday - (elem.t - 2415020)) * motion * radian;
|
||||
enom = anom + ecc*sin(anom);
|
||||
|
||||
do {
|
||||
dele = (anom - enom + ecc * sin(enom)) /
|
||||
(1 - ecc*cos(enom));
|
||||
enom += dele;
|
||||
} while(fabs(dele) > converge);
|
||||
|
||||
vnom = 2*atan2(
|
||||
sqrt((1+ecc)/(1-ecc))*sin(enom/2),
|
||||
cos(enom/2));
|
||||
rad = mrad*(1-ecc*cos(enom));
|
||||
lambda = vnom + argp;
|
||||
pturbl = 0;
|
||||
lambda += pturbl*radsec;
|
||||
pturbb = 0;
|
||||
pturbr = 0;
|
||||
|
||||
/*
|
||||
* reduce to the ecliptic
|
||||
*/
|
||||
nd = lambda - node;
|
||||
lambda = node + atan2(sin(nd)*cos(incl),cos(nd));
|
||||
|
||||
sl = sin(incl)*sin(nd) + pturbb*radsec;
|
||||
beta = atan2(sl, sqrt(1-sl*sl));
|
||||
|
||||
lograd = pturbr*2.30258509;
|
||||
rad *= 1 + lograd;
|
||||
|
||||
motion *= radian*mrad*mrad/(rad*rad);
|
||||
semi = 0;
|
||||
|
||||
mag = 5.47 + 6.1/2.303*log(rad);
|
||||
|
||||
helio();
|
||||
geo();
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue