Re: Maan Positie
Geplaatst: 06 jan 2024, 10:34
Bedankt voor al deze info !!!
Vragen over wiskunde? Of hulp nodig met die ene opgave? Stel jouw vraag hier!
http://wiskundeforum.nl/
Code: Selecteer alles
#include <math.h>
double fraction(double x)
{
return(x-floor(x));
}
void QuickSun(double JD, double& RA, double& decl)
{
double TPI = 6.283185307179586476925;
double T = (JD - 2451545.0) / 36525.0;
// Mean anomaly:
double MFrac = fraction(0.993133 + 99.997361*T);
double M = TPI * MFrac;
// Ecliptic longitude:
double lambda = TPI * fraction(0.7859453 + MFrac + (6.893*sin(M)+0.072*sin(2.0*M)+6.1912*T)/1296.0);
// obliquity ecliptic:
double eps = 0.40909280420293639; // [rad]
decl = asin(sin(eps)*sin(lambda));
RA = atan2(cos(eps)*sin(lambda)/cos(decl), cos(lambda)/cos(decl));
}
void QuickMoon(double JD, double& RA, double& decl)
{
double TPI = 6.283185307179586476925;
double SR = 4.8481368110953599358991E-4;
double T = (JD - 2451545.0) / 36525.0;
// Mean elements of lunar orbit
double Lm = fraction(0.606433 + 1336.855225*T); // mean longitude
double l = TPI*fraction(0.374897 + 1325.552410*T); // Moon's mean anomaly
double ls = TPI*fraction(0.993133 + 99.997361*T); // Sun's mean anomaly
double D = TPI*fraction(0.827361 + 1236.853086*T); // Diff. long. Moon-Sun
double F = TPI*fraction(0.259086 + 1342.227825*T); // Dist. from ascending node
// Perturbations in longitude and latitude
double dL = 226.40*sin(l) + 7.69*sin(2*l) - 1.10*sin(l+ls) + 1.48*sin(l-ls)
- 6.68*sin(ls) + 1.92*sin(l+2*D) - 45.86*sin(l-2*D) - 2.12*sin(2*l-2*D)
- 1.65*sin(ls-2*D) - 1.25*sin(D) + 23.70*sin(2*D) - 0.55*sin(2*F-2*D)
- 4.12*sin(2*F) - 2.06*sin(l+ls-2*D);
double S = F + (dL+4.12*sin(2*F)+5.41*sin(ls))*SR;
double h = F - 2*D;
double N = - 5.26*sin(h) + 0.44*sin(l+h) - 0.31*sin(-l+h) - 0.23*sin(ls+h)
+ 0.11*sin(-ls+h) - 0.25*sin(-2*l+F) + 0.21*sin(-l+F);
// Ecliptic longitude and latitude
double lambda = TPI * fraction(Lm + dL/12960.0); // [rad]
double beta = (185.2*sin(S) + N) * SR; // [rad]
double eps = 0.40909280420293639; // [rad]
decl = asin(sin(beta)*cos(eps)+sin(lambda)*cos(beta)*sin(eps));
double x = cos(lambda)*cos(beta)/cos(decl);
double y = (-sin(beta)*sin(eps)+sin(lambda)*cos(beta)*cos(eps))/cos(decl);
RA = atan2(y, x);
}