Wie zeichne Himmelskarte?

Wie zeichne ich eine Sternkarte?

Ich habe:

  1. Eine Sterndatenbank mit Koordinaten (Rektaszension und Deklination)
  2. Beobachterkoordinaten (Breitengrad, Längengrad)
  3. Zeitpunkt der Beobachtung

Ich brauche eine Formel, die diese Parameter berücksichtigt.

  1. stellare database

    google nach:

    • BSC (Bright star catalogue) ~ 10K Sterne bis zu +6,5 mag (bloßes Auge)
    • Hipparcos ~ 118K Sterne bis zu +12 mag (Teleskope) und hat auch Parallaxe (3D-Koordinaten) und viele mehr
    • Hipparcos ist mein Favorit. beide können frei im ASCII- Format von vielen Astornomy-Server heruntergeladen werden nur Google …
  2. Planeten (Körper)

    Sie können die von vielen Standorten benötigten Orbitalparameter kompilieren. Sie werden alle diese Orbital_Elements benötigen, zum Beispiel hier sind einige

  3. Simulation (Berechnung der Position in der Zeit)

    Für Planeten ist dies nur die Ephemeriden von Planeten / Satelliten, die durch Berechnung der Kepler-Gleichung erreicht werden können

    M=Ee*sin(E) 

    woher:

    M ist mittlerer angular (als ob der Planet kreisförmige Flugbahn und konstante Geschwindigkeit hat)
    E ist ein reeller angular von der Ellipsenmitte (unter Berücksichtigung des Keplerschen Gesetzes)

    Du kannst es so lösen:

     for (E=M,q=0;q<20;q++) E=M+e*sin(E); 

    Jetzt weißt du E für irgendein M das alles ist, was du brauchst. Berechnen Sie einfach die Position auf der Ellipse und drehen Sie sie nach Neigung. Das M ist auch einfach nur berechnet, Sie müssen die Zeit t0 wenn der Planet den angular 0 kreuzt. Dann:

     M = (t-t0) * dM 

    wo dM Rotation um Sonne ist. Wenn die Zeit in Tagen ist, dann ist dM in [rad/day] . Für die Erde ist es 2.0*pi/tropical_year . Dies führt dich zu allen globalen Positionen des Planeten (relativ zur Sonne)

    Kepler

    Weitere Informationen finden Sie hier. So berechnen Sie Planetenpositionen

  4. Blick auf die Erde

    Die Koordinaten von Äquator sind relativ zur Erde, daher müssen Sie Ihrer Simulation eine tägliche Rotation der Erde hinzufügen. Erstellen Sie einfach eine Transformationsmatrix mit einer um 23.5 deg gedrehten Achse in der Richtung "rechts" und fügen Sie eine Drehung um diese Achse hinzu. Fügen Sie Ihrem geografischen Standort auch eine Rotation hinzu. Danach übersetze diese Matrix in die berechnete Erdposition. Daraus können Sie leicht alle globalen Koordinaten in die Ansicht Ihrer Erde konvertieren, so dass Sie jetzt die Daten für das Bild / den Bildschirm plotten können.

[Anmerkungen]

Sei vorsichtig, welche Drehperiode du benutzt !!!

  • tropical_year = 365.242195601852 days Erde
  • Tag der Erde Rotation dM = 0.0172021242603194 rad/day
  • Tag ist mittlerer Sonnentag !!! genau wie Julian date ...

    Kalibrieren Sie Ihre Daten immer mit anderer Software oder dem Original. Es gibt einige libs, die all das tun, nur google. Zur Verbesserung der Genauigkeit ändern sich Nutation, Präzession und Orbitalparameter mit der Zeit.

[Edit1] einfaches C ++ - Beispiel

Ich habe das vollständige C ++ - Beispiel vereinfacht, sodass nur a,b,M verwendet werden.

Bildschirmfoto

 //--------------------------------------------------------------------------- void ellipse_kepler(double &x,double &y,double a,double b,double M) { int q; double c1,c2,e,E,V,r; e=1.0-((b*b)/(a*a)); // eccentricity if (e>=1.0) e=0; // wrong e c1=sqrt((1.0+e)/(1.0-e)); // some helper constants computation c2=a*(1-e*e); //b=a*sqrt(1.0-e); for (E=M,q=0;q<20;q++) E=M+e*sin(E);// Kepler's equation V=2.0*atan(c1*tan(E/2.0)); r=c2/(1.0+e*cos(V)); x=r*cos(V); // heliocentric ellipse y=r*sin(V); } //--------------------------------------------------------------------------- void draw() { scr.cls(clBlack); double x0,y0,x,y,a,b,M,r=5; // ellipse x0=scr.xs>>1; y0=scr.ys>>1; a=(x0*75)/100; b=(y0*35)/100; x0+=1.5*(ab); scr.bmp->Canvas->Pen->Color=clAqua; for (M=0.0;M< =2.0*M_PI;M+=M_PI*0.01) // small step so the ellipse trajectory is not edgy { ellipse_kepler(x,y,a,b,M); x+=x0; y+=y0; if (M<=1e-10) scr.bmp->Canvas->MoveTo(x,y); else scr.bmp->Canvas->LineTo(x,y); } scr.bmp->Canvas->Pen->Color=clAqua; scr.bmp->Canvas->Brush->Color=clYellow; scr.bmp->Canvas->Ellipse(x0-r,y0-r,x0+r,y0+r); scr.bmp->Canvas->Brush->Color=clBlue; for (M=0.0;M< =2.0*M_PI;M+=M_PI*0.05) // constant time step for the dots a bit bigger so not many dots are on one place { ellipse_kepler(x,y,a,b,M); x+=x0; y+=y0; scr.bmp->Canvas->Ellipse(xr,yr,x+r,y+r); } scr.rfs(); } //--------------------------------------------------------------------------- 

Die erste function berechnet die 2D- Position (x,y) auf der keplerschen heliozentrischen Trajektorie, während a>=b Halbachsen sind und M mittlere angular (linearer angular wie die Zeit, skaliert auf <0,2*Pi> pro Jahr). Die zweite function rendert nur die Ellipse mit VCL / GDI, so dass es klar ist, wie man die erste Ellipse mit konstantem Zeitschritt verwendet, so dass man in der Nähe von Perihelien sehen kann, dass sich der Planet schneller bewegt ...