ref: ef17043327d999101009f85aae72f77399db15ac
dir: /sys/src/cmd/astro/jup.c/
#include "astro.h" void jup(void) { double pturbl, pturbb, pturbr; double lograd; double dele, enom, vnom, nd, sl; ecc = .0483376 + 163.e-6*capt; incl = 1.308660 - .0055*capt; node = 99.43785 + 1.011*capt; argp = 12.71165 + 1.611*capt; mrad = 5.202803; anom = 225.22165 + .0830912*eday - .0484*capt; motion = 299.1284/3600.; anom = anom; incl *= radian; node *= radian; 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 += 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; lambda += 555.*radsec; beta -= 51.*radsec; motion *= radian*mrad*mrad/(rad*rad); semi = 98.47; mag = -8.93; helio(); geo(); }