void pstime(double d) { setime(d); semi = 0; motion = 0; rad = 1.e9; lambda = 0; beta = 0; // uses lambda, beta, rad, motion // sets alpha, delta, rp helio(); // uses alpha, delta, rp // sets ra, decl, lha, decl2, az, el geo(); print(" %R %D %D %4.0f", lha, nlat, awlong, elev/3.28084); }
void venus(void) { double pturbl, pturbb, pturbr; double lograd; double dele, enom, vnom, nd, sl; double v0, t0, m0, j0, s0; double lsun, elong, ci, dlong; /* * here are the mean orbital elements */ ecc = .00682069 - .00004774*capt + 0.091e-6*capt2; incl = 3.393631 + .0010058*capt - 0.97e-6*capt2; node = 75.779647 + .89985*capt + .00041*capt2; argp = 130.163833 + 1.408036*capt - .0009763*capt2; mrad = .7233316; anom = 212.603219 + 1.6021301540*eday + .00128605*capt2; motion = 1.6021687039; /* * mean anomalies of perturbing planets */ v0 = 212.60 + 1.602130154*eday; t0 = 358.63 + .985608747*eday; m0 = 319.74 + 0.524032490*eday; j0 = 225.43 + .083090842*eday; s0 = 175.8 + .033459258*eday; v0 *= radian; t0 *= radian; m0 *= radian; j0 *= radian; s0 *= radian; incl *= radian; node *= radian; argp *= radian; anom = fmod(anom, 360.)*radian; /* * computation of long period terms affecting the mean anomaly */ anom += (2.761-0.022*capt)*radsec*sin( 13.*t0 - 8.*v0 + 43.83*radian + 4.52*radian*capt) + 0.268*radsec*cos(4.*m0 - 7.*t0 + 3.*v0) + 0.019*radsec*sin(4.*m0 - 7.*t0 + 3.*v0) - 0.208*radsec*sin(s0 + 1.4*radian*capt); /* * computation of elliptic orbit */ 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; /* * perturbations in longitude */ icosadd(venfp, vencp); pturbl = cosadd(4, v0, t0, m0, j0); pturbl *= radsec; /* * perturbations in latidude */ pturbb = cosadd(3, v0, t0, j0); pturbb *= radsec; /* * perturbations in log radius vector */ pturbr = cosadd(4, v0, t0, m0, j0); /* * reduction to the ecliptic */ lambda += pturbl; nd = lambda - node; lambda = node + atan2(sin(nd)*cos(incl),cos(nd)); sl = sin(incl)*sin(nd); beta = atan2(sl, pyth(sl)) + pturbb; lograd = pturbr*2.30258509; rad *= 1 + lograd; motion *= radian*mrad*mrad/(rad*rad); /* * computation of magnitude */ 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 = -4 + .01322*dlong + .0000004247*dlong*dlong*dlong; semi = 8.41; helio(); geo(); }
void star(void) { double xm, ym, zm, dxm, dym, dzm; double xx, yx, zx, yy, zy, zz, tau; double capt0, capt1, capt12, capt13, sl, sb, cl; /* * remove E-terms of aberration * except when finding catalog mean places */ alpha += (.341/(3600.*15.))*sin((alpha+11.26)*15.*radian) /cos(delta*radian); delta += (.341/3600.)*cos((alpha+11.26)*15.*radian) *sin(delta*radian) - (.029/3600.)*cos(delta*radian); /* * correct for proper motion */ tau = (eday - epoch)/365.24220; alpha += tau*da/3600.; delta += tau*dd/3600.; alpha *= 15.*radian; delta *= radian; /* * convert to rectangular coordinates merely for convenience */ xm = cos(delta)*cos(alpha); ym = cos(delta)*sin(alpha); zm = sin(delta); /* * convert mean places at epoch of startable to current * epoch (i.e. compute relevant precession) */ capt0 = (epoch - 18262.427)/36524.220e0; capt1 = (eday - epoch)/36524.220; capt12 = capt1*capt1; capt13 = capt12*capt1; xx = - (.00029696+26.e-8*capt0)*capt12 - 13.e-8*capt13; yx = -(.02234941+1355.e-8*capt0)*capt1 - 676.e-8*capt12 + 221.e-8*capt13; zx = -(.00971690-414.e-8*capt0)*capt1 + 207.e-8*capt12 + 96.e-8*capt13; yy = - (.00024975+30.e-8*capt0)*capt12 - 15.e-8*capt13; zy = -(.00010858+2.e-8*capt0)*capt12; zz = - (.00004721-4.e-8*capt0)*capt12; dxm = xx*xm + yx*ym + zx*zm; dym = - yx*xm + yy*ym + zy*zm; dzm = - zx*xm + zy*ym + zz*zm; xm = xm + dxm; ym = ym + dym; zm = zm + dzm; /* * convert to mean ecliptic system of date */ alpha = atan2(ym, xm); delta = atan2(zm, sqrt(xm*xm+ym*ym)); cl = cos(delta)*cos(alpha); sl = cos(delta)*sin(alpha)*cos(obliq) + sin(delta)*sin(obliq); sb = -cos(delta)*sin(alpha)*sin(obliq) + sin(delta)*cos(obliq); lambda = atan2(sl, cl); beta = atan2(sb, sqrt(cl*cl+sl*sl)); rad = 1.e9; if(px != 0) rad = 20600/px; motion = 0; semi = 0; helio(); geo(); }
void plut(void) { double pturbl, pturbb, pturbr; double lograd; double dele, enom, vnom, nd, sl; double capj, capn, eye, comg, omg; double sb, su, cu, u, b, up; double sd, ca, sa; double cy; cy = (eday - elem[0]) / 36525.; /* per julian century */ mrad = elem[1] + elem[1+6]*cy; ecc = elem[2] + elem[2+6]*cy; cy = cy / 3600; /* arcsec/deg per julian century */ incl = elem[3] + elem[3+6]*cy; node = elem[4] + elem[4+6]*cy; argp = elem[5] + elem[5+6]*cy; anom = elem[6] + elem[6+6]*cy - argp; motion = elem[6+6] / 36525. / 3600; 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 -= 1185.*radsec; beta -= 51.*radsec; motion *= radian*mrad*mrad/(rad*rad); semi = 83.33; /* * here begins the computation of magnitude * first find the geocentric equatorial coordinates of Saturn */ sd = rad*(cos(beta)*sin(lambda)*sin(obliq) + sin(beta)*cos(obliq)); sa = rad*(cos(beta)*sin(lambda)*cos(obliq) - sin(beta)*sin(obliq)); ca = rad*cos(beta)*cos(lambda); sd += zms; sa += yms; ca += xms; alpha = atan2(sa,ca); delta = atan2(sd,sqrt(sa*sa+ca*ca)); /* * here are the necessary elements of Saturn's rings * cf. Exp. Supp. p. 363ff. */ capj = 6.9056 - 0.4322*capt; capn = 126.3615 + 3.9894*capt + 0.2403*capt2; eye = 28.0743 - 0.0128*capt; comg = 168.1179 + 1.3936*capt; omg = 42.9236 - 2.7390*capt - 0.2344*capt2; capj *= radian; capn *= radian; eye *= radian; comg *= radian; omg *= radian; /* * now find saturnicentric ring-plane coords of the earth */ sb = sin(capj)*cos(delta)*sin(alpha-capn) - cos(capj)*sin(delta); su = cos(capj)*cos(delta)*sin(alpha-capn) + sin(capj)*sin(delta); cu = cos(delta)*cos(alpha-capn); u = atan2(su,cu); b = atan2(sb,sqrt(su*su+cu*cu)); /* * and then the saturnicentric ring-plane coords of the sun */ su = sin(eye)*sin(beta) + cos(eye)*cos(beta)*sin(lambda-comg); cu = cos(beta)*cos(lambda-comg); up = atan2(su,cu); /* * at last, the magnitude */ sb = sin(b); mag = -8.68 +2.52*fabs(up+omg-u)- 2.60*fabs(sb) + 1.25*(sb*sb); helio(); geo(); }
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.; 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(); }