#include "SlaPlanets.h" #include #include "slalib.h" ClassImp(SlaPlanets); using namespace std; SlaPlanets::SlaPlanets(MObservatory::LocationName_t key) : SlaStars(key)//, fDt(slaDt(2000.0)/60./60./24.) { } void SlaPlanets::SetMjd(double mjd) { SlaStars::SetMjd(mjd); // // coordinates of earth: heliocentric, equatorial, J2000 // /* double veb[3]; // barycentric velocity double ceb[3]; // barycentric coordinates double veh[3]; // heliocentric velocity slaEvp(GetMjd() + fDt, 2000.0, veb, ceb, veh, fEarth); */ } // -------------------------------------------------------------------------- // // coordinates of planet: topocentric, equatorial, J2000 // RaDec SlaPlanets::CalcPlanetRaDec(ePlanets_t planet) const { // coordinates of planet: topocentric, equatorial, J2000 double ra, dec, diam; // One can use TT instead of TDB for all planets (except the moon?) // TDB, planet, elong, phi, *ra, *dec, *diam slaRdplan(GetTT(), planet, GetElong(), GetPhi(), &ra, &dec, &diam); // // ---- apparent to mean ---- // // This is a stupid workaround because SlaStars assumes // RA/DEC to be mean values rather than apparent // double rm=0, dm=0; slaAmpqk (ra, dec, (double*)fAmprms, &rm, &dm); return RaDec(rm, dm); } void SlaPlanets::UpdatePlanetPos(ePlanets_t planet) { // coordinates of planet: topocentric, equatorial, J2000 const RaDec rd = CalcPlanetRaDec(planet); double az, el; slaDe2h(GetAlpha()-rd.Ra(), rd.Dec(), GetPhi(), &az, &el); fZdAz[planet].Set(TMath::Pi()/2-el, az); }