Ankündigung

Einklappen
Keine Ankündigung bisher.

Wie errechne ich galaktische Koordinaten?

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Wie errechne ich galaktische Koordinaten?

    Ich stelle mir gerade die Frage, wie man aus Rektaszension, Deklination und Entfernung galaktische Koordinaten ermitteln kann.
    Das übliche astronomische Koordinatensystem sind ja Kugelkoordinaten mit dem Bezugspunkt Erde.

    Ich habe mir hierzu folgendes überlegt und wollte mal wissen ob das so klappen kann:
    (Am Beispiel von Mira)

    Zuerst rechne ich die Kugelkoordinaten in kartesische Koordinaten um.

    Mira: Rektaszension 02h 19m 20,8s, Deklination -02° 58′ 39,5″, Entfernung 420 Lj.
    Rektaszension beträgt umgerechnet in Grad: 34,836..6°
    Deklination beträgt: -2,977638..8°

    Nach der Formel aus Kugelkoordinaten ? Wikipedia

    x=-17,91 Lj
    y=-12,46 Lj
    z= 419,43 Lj


    Das sind jetzt die kartesischen Koordinaten mit der Erde/Sonne im Zentrum.

    Um daraus die galaktischen Koordinaten zu bestimmen, müsste man jetzt mit dem gleichen Verfahren die kartesischen Koordinaten des galaktischen Zentrum bestimmen und die kartesischen Koordinaten von Mira in die galaktischen Koordinaten umrechnen.
    Ist mir jetzt im Moment etwas zu umständlich um es in diesem Thread vorzurechnen.

    Ich wollte nurmal wissen ob das so geht? Gibt vielleicht schon fertigen Rechner dafür?.

    Der Hintergrund der Idee ist ja, dass ich die Entfernung zwischen zwei beliebigen Sternen mit bekanntne Koordinaten und Entfernung zur Erde bestimmen will. Die Umrechnung in galaktische Koordinaten erübrigt sich da ja.

    Aber um eine galaktische Sternenkarte zu erstellen, brauch ich auch die galaktischen Koordinaten.


    .
    EDIT (autom. Beitragszusammenführung) :

    McWire schrieb nach 6 Minuten und 14 Sekunden:

    Bevor jemand auf die Idee kommt zu fragen, warum ich nicht die vorgefertigte Formel für die Errechnung der galaktischen Koordinaten nehmen:

    Zitat von [url=http://www.stdimension.org/Cartography/IntroTools.htm]Star Trek Dimension - Star Trek Kartographie[/url]
    3. Zur eigentlichen Umrechnung in galaktische Koordinaten werden Gleichungen der sphärischen Trigonometrie benötigt. Die galaktische Breite b berechnen wir aus der Rektaszension a und der Deklination d mit

    sin b=sin d * cos 62°.6 - cos d * sin 62°.6 * sin(a-282°.25)

    Für Vulcan erhält man dann sin b=-0.6136 und damit b=-37°.85.

    Für die etwas kompliziertere Berechnung der galaktischen Länge d benötigen wir die soeben berechnete galaktische Breite:

    cos(l-33°) = ( cos d * cos(a - 282°.25) ) / (cos b)

    Für Vulcan erhalten wir sin l-33°=-0.9759 und damit l-33°=167.4° und schließlich l=200.4°.

    Das Problem bei diesen in Fachwerken angegeben Formeln ist, das sie merkwürdigerweise nicht immer richtige Werte liefern. So stimmt die berechnete galaktische Breite zwar immer, aber die galaktische Länge weicht bei etwa der Hälfte der Werte um 0° bis 200° ab. Das ist natürlich inakzeptabel, so daß eine zweite Methode zur Ermittlung der galaktischen Koordinaten nötig ist, um Vergleichswerte zu den berechneten zu erhalten. Diese zweite Methode verwendet bereits von Sternwarten vorgefertigte Diagramme, die die äquatorialen und galaktischen Koordinaten graphisch in Beziehung setzen und sich
    Zuletzt geändert von McWire; 10.10.2008, 03:49. Grund: Antwort auf eigenen Beitrag innerhalb von 24 Stunden!
    Mein Profil bei Memory Alpha
    Treknology-Wiki

    Even logic must give way to physics. / Sogar die Logik muss sich der Physik beugen. -- Captain Spock, 2293

  • #2
    Zitat von McWire Beitrag anzeigen
    Ich wollte nurmal wissen ob das so geht?
    Klingt zumindest plausibel aber der Umweg über kartesische Koordinaten wäre imo nicht notwendig, da die Einheitsvektoren ihre Form nicht verändern, sondern nur der Ursprung ein anderer ist.

    Allerdings halte ich persönlich fast Zylinderkoordinaten für sinnvoller, da unsere Galaxis mehr scheibenförmig ist...
    Der Kleingeist hält Ordnung
    Das Genie überblickt das Chaos

    Kommentar


    • #3
      Um mal auf den Grund für meine Frage zu kommen:

      Ich programmiere gerade für meinen Warprechner eine Funktion, mit deren Hilfe man den Abstand zweier Sterne unter der Vorgabe der Deklination, Rektaszension und Entfernung zur Erde jeweils beider Objekte deren relative Entfernung zueinander berechnen kann.

      Um euch auchmal an meiner Programmierarbeit teilhaben zu lassen, habe ich den Quellcode und das Test-Programm für die Funktion an diesen Beitrag angehangen.

      Wäre nett wenn jemand das Programm auf Fehler prüfen könnte.

      Ich habe nach Überprüfung der obigen Rechnung (die x,y,z-Angaben von Mira stimmen nicht) übrigends noch einen gewichtigen Fehler gefunden. Das Kugelkoordinatensystem geht für den Höhenwinkel Theta von 0 bis pi, während die geographischen und somit auch astronomischen Breiten von -pi/2 (-90°) bis pi/2 (+90°) gehen, warum ich die Formel leicht modifizieren musste.
      Angehängte Dateien
      Mein Profil bei Memory Alpha
      Treknology-Wiki

      Even logic must give way to physics. / Sogar die Logik muss sich der Physik beugen. -- Captain Spock, 2293

      Kommentar


      • #4
        Zitat von McWire Beitrag anzeigen
        Um euch auchmal an meiner Programmierarbeit teilhaben zu lassen, habe ich den Quellcode und das Test-Programm für die Funktion an diesen Beitrag angehangen.

        Wäre nett wenn jemand das Programm auf Fehler prüfen könnte.
        Meine Programmiererlebnisse mit Turbo Pascal sind zwar schon eine Ewigkeit her, aber einen Tipp habe ich dennoch.
        Ich empfehle dir den Code einzurücken, das erhöht die Lesbarkeit deutlich. 2 Leerzeichen vor jeder Anweisung auf der gleichen Ebene genügen und keine Tabs, das wäre schlechter Programmierstil.
        Kommentare zum Code sind ebenfalls empfohlen.

        Der Wertebereich für Real dürfte wohl genügen, schätze ich, aber nur solange deine Einheiten in Lichtjahre gemessen werden und dadurch keine großen Zahlen mit vielen Stellen vorkommen.
        Wenn aber größere Zahlen vorkommen, dann brauchst du einen Typen mit einem größeren Wertebereich, z.b. Double oder Extended.
        Ein paar praktische Links:
        In Deutschland empfangbare FreeTV Programme und die jeweiligen Satellitenpositionen
        Aktuelles Satellitenbild
        Radioaktivitätsmessnetz des BfS

        Kommentar


        • #5
          Zitat von Cordess Beitrag anzeigen
          Meine Programmiererlebnisse mit Turbo Pascal sind zwar schon eine Ewigkeit her, aber einen Tipp habe ich dennoch.
          Ich empfehle dir den Code einzurücken, das erhöht die Lesbarkeit deutlich. 2 Leerzeichen vor jeder Anweisung auf der gleichen Ebene genügen und keine Tabs, das wäre schlechter Programmierstil.
          Kommentare zum Code sind ebenfalls empfohlen.

          Der Wertebereich für Real dürfte wohl genügen, schätze ich, aber nur solange deine Einheiten in Lichtjahre gemessen werden und dadurch keine großen Zahlen mit vielen Stellen vorkommen.
          Wenn aber größere Zahlen vorkommen, dann brauchst du einen Typen mit einem größeren Wertebereich, z.b. Double oder Extended.
          Ich nehme grundsätzlich immer Extended, da man bei solchen Programmen und heutigen RAM-Einheiten nicht mehr so sehr auf den RAM achten muss.

          @ Einrücken und Kommentieren

          Einrücken vergess ich immer, da ich ja die Programme kenne und daher immer die richtige Stelle finde. Ich glaube aber das Hauptprogramm kommentiert sich selbst. Es ist ja nun eindeutig was welcher Programmteil macht.
          Mein Profil bei Memory Alpha
          Treknology-Wiki

          Even logic must give way to physics. / Sogar die Logik muss sich der Physik beugen. -- Captain Spock, 2293

          Kommentar


          • #6
            Zitat von McWire Beitrag anzeigen
            Ich nehme grundsätzlich immer Extended, da man bei solchen Programmen und heutigen RAM-Einheiten nicht mehr so sehr auf den RAM achten muss.
            Dein Code in der Datei DISTANZ.PAS sagt aber etwas anderes:

            var s1,s2,z:real;
            Siehe dazu auch:
            http://www.webplain.de/turbopascal/variablen.php

            @ Einrücken und Kommentieren

            Einrücken vergess ich immer, da ich ja die Programme kenne und daher immer die richtige Stelle finde. Ich glaube aber das Hauptprogramm kommentiert sich selbst. Es ist ja nun eindeutig was welcher Programmteil macht.
            Nun, ich hielt es halt für erwähnenswert, da es in der Softwarebranche üblich ist,
            daß man Code einrückt und bei Bedarf auch kommentiert.
            Auch bittest du die anderen ja, daß sie den Code lesen, da ist zumindest eine Einrückung durchaus sinnvoll.
            Und gerade bei z.b. IF Anweisungen erleichtern Einrückungen die Lesbarkeit des Codes deutlich. Probier es einfach mal aus.

            Der Code selbst ist nicht besonders komplex, es sind ja nur wenige Zeilen Code,
            daher sind Kommentare in diesem Ausnahmefall in der Tat nicht wirklich notwendig, da gebe ich dir recht, aber man sollte sich halt nicht daran gewöhnen Code grundsätzlich unkommentiert zu lassen.


            Es gibt für Pascal Quellcode ürbrigens z.b. auch wie indent bei C, Programme die dir den Code automatisch einrücken.
            Eines davon wäre z.b. ptop welches im Paket von Free Pascal, genaugenommen FP-utils dabei ist:
            Free Pascal - Tools

            Das könntest du ja mal ausprobieren.
            Ein paar praktische Links:
            In Deutschland empfangbare FreeTV Programme und die jeweiligen Satellitenpositionen
            Aktuelles Satellitenbild
            Radioaktivitätsmessnetz des BfS

            Kommentar


            • #7
              Zitat von Cordess Beitrag anzeigen
              Dein Code in der Datei DISTANZ.PAS sagt aber etwas anderes:


              Siehe dazu auch:
              Webplain.de | Turbo Pascal - Variablentypen



              Nun, ich hielt es halt für erwähnenswert, da es in der Softwarebranche üblich ist,
              daß man Code einrückt und bei Bedarf auch kommentiert.
              Auch bittest du die anderen ja, daß sie den Code lesen, da ist zumindest eine Einrückung durchaus sinnvoll.
              Und gerade bei z.b. IF Anweisungen erleichtern Einrückungen die Lesbarkeit des Codes deutlich. Probier es einfach mal aus.

              Der Code selbst ist nicht besonders komplex, es sind ja nur wenige Zeilen Code,
              daher sind Kommentare in diesem Ausnahmefall in der Tat nicht wirklich notwendig, da gebe ich dir recht, aber man sollte sich halt nicht daran gewöhnen Code grundsätzlich unkommentiert zu lassen.


              Es gibt für Pascal Quellcode ürbrigens z.b. auch wie indent bei C, Programme die dir den Code automatisch einrücken.
              Eines davon wäre z.b. ptop welches im Paket von Free Pascal, genaugenommen FP-utils dabei ist:
              Free Pascal - Tools

              Das könntest du ja mal ausprobieren.
              @ Variablen

              Die math1 ist ja auch eine universelle Unit. Sie ist ja nicht nur in dem Programm integriert sondern auch in anderen. Bei Univeralunits muss ich natürlich immer von dem größtmöglichen Variablen-Typ ausgehen.
              Das Hauptprogramm habe ich mal in der Mittagspause in der Schule auf einem 286er geschrieben, daher habe ich da nur Real benutzt.
              Mir gings hauptsächlich in diesme Thread um die korrekten Ergebnisse und korrekten trigonometrischen Formeln.
              Mein Profil bei Memory Alpha
              Treknology-Wiki

              Even logic must give way to physics. / Sogar die Logik muss sich der Physik beugen. -- Captain Spock, 2293

              Kommentar


              • #8
                Aber der Variablentype Real wird nicht vom Coprozessor sondern vom normalen Prozessor berechnet. Das hat zur Folge, dass es langsamer abgearbeitet wird und ungenauer wird, da die Kommastellen völlig anders berechnet werden.
                Textemitter, powered by C8H10N4O2

                It takes the Power of a Pentium to run Windows, but it took the Power of 3 C-64 to fly to the Moon!

                Kommentar


                • #9
                  Zitat von McWire Beitrag anzeigen
                  Der Hintergrund der Idee ist ja, dass ich die Entfernung zwischen zwei beliebigen Sternen mit bekanntne Koordinaten und Entfernung zur Erde bestimmen will. Die Umrechnung in galaktische Koordinaten erübrigt sich da ja.
                  Hast du dein Programm inzwischen fertig?


                  Mich würde nämlich mal interessieren, wie nah die Sterne im Sternhaufen der Plejaden zueinander sind.

                  Die Entfernung zu Erde ist ja bekannt, ca. 370 +/-20 Lj.
                  Aber wie weit sind die untereinander entfernt, wenn man die ersten 9 hellsten Sterne nimmt?
                  Ein paar praktische Links:
                  In Deutschland empfangbare FreeTV Programme und die jeweiligen Satellitenpositionen
                  Aktuelles Satellitenbild
                  Radioaktivitätsmessnetz des BfS

                  Kommentar


                  • #10
                    Ich habe die Weiterentwicklung des Warprechners damals erstmal auf Eis gelegt. Aber die reine Berechnungsroutine für Entfernungen zwischen Sternen mittels Entfernung zur Erde und Himmelskoordinaten ist soweit fertig.

                    Code:
                    {$N+}
                    program Markus;
                    uses crt1,crt,math1;
                    var re1,re2,re3,r1,re4,re5,re6,r2:real;
                    var de1,de2,de3,d1,de4,de5,de6,d2:real;
                    var s1,s2,z:real;
                    var cc:char;
                    label anfang,ende;
                    begin
                    z:=pi/180;
                    anfang:
                    clrscr;
                    writeln;
                    writeln ('PROGRAMM ZUR BERECHNUNG VON ENTFERNUNGEN ZWEIER HIMMELSK™RPER');
                    writeln ('=============================================================');
                    writeln;
                    textcolor (2);
                    writeln('Daten des 1. Himmelsk”rpers: ');
                    writeln;
                    write('Rektaszension in h  : '); readln(re1);
                    write('Rektaszension in ï  : '); readln(re2);
                    write('Rektaszension in ïï : '); readln(re3);
                    If re1>=0 Then r1:=15*(re1+(re2/60)+(re3/3600)) else r1:=15*(re1-abs(re2/60)-abs(re3/3600));
                    writeln('Die Rektaszension betr„gt: ',r1:10:4,'ø');
                    writeln;
                    write('Deklination in ø  : '); readln(de1);
                    write('Deklination in ï  : '); readln(de2);
                    write('Deklination in ïï : '); readln(de3);
                    If de1>=0 Then d1:=de1+abs(de2/60)+abs(de3/3600) else d1:=de1-abs(de2/60)-abs(de3/3600);
                    writeln('Die Deklination betr„gt: ',d1:10:4,'ø');
                    writeln;
                    write('Entfernung in Lj : '); readln(s1);
                    writeln;
                    textcolor (1);
                    writeln('Daten des 2. Himmelsk”rpers: ');
                    writeln;
                    write('Rektaszension in h  : '); readln(re4);
                    write('Rektaszension in ï  : '); readln(re5);
                    write('Rektaszension in ïï : '); readln(re6);
                    If re4>=0 Then r2:=15*(re4+(re5/60)+(re6/3600)) else r2:=15*(re4-abs(re5/60)-abs(re6/3600));
                    writeln('Die Rektaszension betr„gt: ',r2:10:4,'ø');
                    writeln;
                    write('Deklination in ø  : '); readln(de4);
                    write('Deklination in ï  : '); readln(de5);
                    write('Deklination in ïï : '); readln(de6);
                    If de4>=0 Then d2:=de4+abs(de5/60)+abs(de6/3600) else d2:=de4-abs(de5/60)-abs(de6/3600);
                    writeln('Die Deklination betr„gt: ',d2:10:4,'ø');
                    writeln;
                    write('Entfernung in Lj : '); readln(s2);
                    writeln;
                    textcolor(3);
                    writeln('Die absolute Entfernung zwischen den beiden Himmelsk”rpern betr„gt: ');
                    writeln(Punktdistanz(s1,(d1*z),(r1*z),s2,(d2*z),(r2*z)):10:4,' Lj');
                    writeln;
                    write('Weiter Berechnung J/N ?');
                    cc:=readkey;
                    If (cc= 'N') or (cc='n') or (cc='') then goto ende else Goto anfang;
                    ende:end.
                    Umlaute und Sondetzeichen sind verfälscht, da ich jetzt statt mit Pascal das ganze mit Notepad++ geöffnet habe.

                    Für die Punktdistanz lautet der Code:

                    Code:
                    unit math1;
                    interface
                    const pi=3.141592654;
                    function xwurzel(radikant,potenz:extended):extended;
                    function punktdistanz(r1,theta1,phi1,r2,theta2,phi2:extended):extended;
                    
                    implementation
                    
                    function xwurzel(radikant,potenz:extended):extended;
                    begin
                    If potenz<=0 Then xwurzel:=0  else xwurzel:=exp(1/radikant*ln(potenz));
                    end;
                    {TurboPascal kennt wirklich keine allgemeine Wurzelfkt!}
                    
                    
                    function punktdistanz(r1,theta1,phi1,r2,theta2,phi2:extended):extended;
                    var x1,x2,y1,y2,z1,z2:extended;
                    begin
                    x1:=sin(theta1-pi/2)*cos(phi1)*r1;
                    x2:=sin(theta2-pi/2)*cos(phi2)*r2;
                    y1:=sin(theta1-pi/2)*sin(phi1)*r1;
                    y2:=sin(theta2-pi/2)*sin(phi2)*r2;
                    z1:=cos(theta1-pi/2)*r1;
                    z2:=cos(theta2-pi/2)*r2;
                    {write('x1 x2 y1 y2 z1 z2: '); write(x1:4:4,' ',x2:4:4,' ',y1:4:4,' ',y2:4:4,' ',z1:4:4,' ',z2:4:4);}
                    punktdistanz:=xwurzel(2,(sqr(x1-x2)+sqr(y1-y2)+sqr(z1-z2)));
                    end;
                    {punktdistanz errechnet Abstand zweier Punkte in einem Kugelkoordinatensystem}
                    Wer Pascal hat, kann sich das Programm ja selbst kompilieren.
                    Mein Profil bei Memory Alpha
                    Treknology-Wiki

                    Even logic must give way to physics. / Sogar die Logik muss sich der Physik beugen. -- Captain Spock, 2293

                    Kommentar


                    • #11
                      Zitat von McWire Beitrag anzeigen
                      Wer Pascal hat, kann sich das Programm ja selbst kompilieren.
                      Danke, läßt sich der Code mit FreePascal compilieren oder benutzt du TP spezifische Eigenheiten?

                      Free Pascal - Advanced open source Pascal compiler for Pascal and Object Pascal - Home Page
                      Ein paar praktische Links:
                      In Deutschland empfangbare FreeTV Programme und die jeweiligen Satellitenpositionen
                      Aktuelles Satellitenbild
                      Radioaktivitätsmessnetz des BfS

                      Kommentar


                      • #12
                        Zitat von Cordess Beitrag anzeigen
                        Danke, läßt sich der Code mit FreePascal compilieren oder benutzt du TP spezifische Eigenheiten?

                        Free Pascal - Advanced open source Pascal compiler for Pascal and Object Pascal - Home Page
                        Ich weiß es nicht. Ich habe nie probiert diese Programmcodes in anderen PASCAL-Compilern zu testen.
                        Mein Profil bei Memory Alpha
                        Treknology-Wiki

                        Even logic must give way to physics. / Sogar die Logik muss sich der Physik beugen. -- Captain Spock, 2293

                        Kommentar

                        Lädt...
                        X