12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- /*
- * This file is part of the UCB release of Plan 9. It is subject to the license
- * terms in the LICENSE file found in the top-level directory of this
- * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
- * part of the UCB release of Plan 9, including this file, may be copied,
- * modified, propagated, or distributed except according to the terms contained
- * in the LICENSE file.
- */
- #include "astro.h"
- void
- mars(void)
- {
- double pturbl, pturbb, pturbr;
- double lograd;
- double dele, enom, vnom, nd, sl;
- double lsun, elong, ci, dlong;
- ecc = .09331290 + .000092064*capt;
- incl = 1.850333 - 6.75e-4*capt;
- node = 48.786442 + .770992*capt;
- argp = 334.218203 + 1.840758*capt + 1.30e-4*capt2;
- mrad = 1.5236915;
- anom = 319.529425 + .5240207666*eday + 1.808e-4*capt2;
- motion = 0.5240711638;
- incl = incl*radian;
- node = node*radian;
- argp = argp*radian;
- anom = fmod(anom,360.)*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 = 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, pyth(sl));
- lograd = pturbr*2.30258509;
- rad *= 1. + lograd;
- motion *= radian*mrad*mrad/(rad*rad);
- semi = 4.68;
- lsun = 99.696678 + 0.9856473354*eday;
- lsun *= radian;
- elong = lambda - lsun;
- ci = (rad - cos(elong))/sqrt(1. + rad*rad - 2.*rad*cos(elong));
- dlong = atan2(pyth(ci), ci)/radian;
- mag = -1.30 + .01486*dlong;
- helio();
- geo();
- }
|