So konvertieren Sie die Eigenbewegung in RA & Dec in galaktische Koordinaten

Ich versuche, Sterndaten in der GAIA 2-Version auf galaktische Koordinaten zu analysieren, und habe Probleme mit der Geschwindigkeitskomponente. Ich habe versucht, Online-Dokumentationen und Papieren zu folgen, aber am Ende habe ich Velocity-Ergebnisse mit seltsamen Verzerrungen, die darauf hindeuten, dass ich wahrscheinlich etwas falsch mache. Quellen, die ich verwendet habe, sind: http://adsabs.harvard.edu/full/1987AJ.....93..864J

https://gea.esac.esa.int/archive/documentation//GDR1/Data_processing/chap_cu3ast/sec_cu3ast_intro.html#SS

Der GAIA 2-Datensatz hat diese relevanten Variablen pro Stern:

  • ra (von 0-360)
  • Dez (von -90 bis 90)
  • pmra
  • pmdez
  • Parallaxe
  • Radialgeschwindigkeit

Und dies ist der Code, den ich habe (C#), um zu versuchen, die Geschwindigkeitskomponenten zu erhalten. Dies geschieht, indem zuerst pmra und pmdec in kartesische Geschwindigkeiten umgewandelt werden, basierend auf der Position der Sterne, und dann dieser Ort in galaktische Koordinaten gedreht wird.

double RA = ra * Math.PI / 180.0;
double DEC = (dec + 90) * Math.PI / 90.0;

Microsoft.Xna.Framework.Matrix positionrotation = new Microsoft.Xna.Framework.Matrix();
positionrotation.M11 = (float)(Math.Cos(RA) * Math.Cos(DEC));
positionrotation.M12 = (float)-Math.Sin(RA);
positionrotation.M13 = (float)-(Math.Cos(RA) * Math.Sin(DEC));

positionrotation.M21 = (float)(Math.Sin(RA) * Math.Cos(DEC));
positionrotation.M22 = (float)Math.Cos(RA);
positionrotation.M23 = (float)-(Math.Sin(RA) * Math.Sin(DEC));

positionrotation.M31 = (float)(Math.Sin(DEC));
positionrotation.M32 = 0;
positionrotation.M33 = (float)(Math.Cos(DEC));


Microsoft.Xna.Framework.Vector3 vector = new Microsoft.Xna.Framework.Vector3((float)(radial_velocity), (float)(pmra / parallax), (float)(pmdec/ parallax));
vector = Microsoft.Xna.Framework.Vector3.Transform(vector, positionrotation);

Microsoft.Xna.Framework.Matrix galacticrotation = new Microsoft.Xna.Framework.Matrix();
galacticrotation.M11 = -0.054876f;
galacticrotation.M12 = -0.87347f;
galacticrotation.M13 = -0.483835f;
galacticrotation.M21 = 0.494109f;
galacticrotation.M22 = -0.444830f;
galacticrotation.M23 = 0.746982f;
galacticrotation.M31 = -0.867666f;
galacticrotation.M32 = -0.198076f;
galacticrotation.M33 = 0.455984f;
vector = Microsoft.Xna.Framework.Vector3.Transform(vector, galacticrotation);
Ich bin total verwirrt von deiner Frage. Was versuchst du zu machen? Geschwindigkeiten sind in km/s angegeben. Galaktische Koordinaten beziehen sich auf Positionen. Oder sprechen Sie von galaktischen UVW-Geschwindigkeitskomponenten, die Ihr Code überhaupt nicht anspricht?
Die galaktischen UVW-Geschwindigkeitskomponenten sind das, wonach ich suche. In meinem Code sollen diese im endgültigen Vektor berechnet werden. Jede Geschwindigkeitseinheit ist in Ordnung, solange ich weiß, welche es ist. Die Absicht des Abschnitts „Positionsrotation“ besteht darin, pmra, pmdec und Radialgeschwindigkeit basierend auf der Position des Sterns in Geschwindigkeiten im äquatorialen Koordinatensystem zu drehen, und der Zweck der galaktischen Rotation ist es, diese in Geschwindigkeiten im galaktischen Koordinatensystem umzuwandeln. Wenn dieser Ansatz fehlerhaft ist, würde ich gerne lernen, wie man dies richtig bewerkstelligt
Ich würde nicht sagen fehlerhaft, nur unorthodox. Astronomen, die Ihren Entwicklungsprozess nicht verfolgt haben, finden möglicherweise eine direktere Implementierung der Gleichungen 3.57 - 3.71 leichter nachzuvollziehen. Die galaktischen (l, b) Winkelkoordinaten (Gl. 3.63) könnten für Visualisierungen nützlich sein.
Am Ende habe ich die verknüpften Formeln nicht verwendet, da sie die Radialgeschwindigkeit nicht berücksichtigen. Ich habe mich auch gefragt, wie ich die Parallaxe hier genau nutzen soll, um die realen Positions- und Geschwindigkeitsvektoren zu erhalten

Antworten (1)

Die DECKonvertierung in der Frage ist falsch. Versuche dies:

double DEC = dec * Math.PI / 180.0;

positionrotationsieht aus wie eine Zusammensetzung aus zwei Rotationen, die (1, 0, 0) zu den interessierenden RA und DEC bringen. Es scheint richtig zu sein, aber so etwas wäre einfacher zu überprüfen:

using Microsoft.Xna.Framework.Matrix;

Matrix positionrotation =
    Matrix.CreateRotationZ((float) RA) * Matrix.CreateRotationY((float) -DEC);

Die Einheiten in vectorsind vertauscht. Laut diesen Gaia DR2-Dokumenten ist radial_velocityes in km/s. pmraund pmdecsind in mas/Jahr; Dividieren (*) durch parallaxin mas (1 au Grundlinie) ergibt Ergebnisse in au/Jahr. Versuche dies:

using Microsoft.Xna.Framework.Vector3;

// conversion to km/s
double au_yr = 1.49598e+8 / 3.15576e+7;

Vector3 velocity = new Vector3(
    (float) radial_velocity, // km/s
    (float) pmra / parallax * au_yr,
    (float) pmdec / parallax * au_yr);

Vector3 vel_icrs = Vector3.Transform(velocity, positionrotation);

Wenn galacticrotationaus Gleichung 3.61 in diesen Gaia DR2-Dokumenten ist ,

// Matrix galacticrotation as above except
galacticrotation.M12 = -0.873437f;

Vector3 vel_gal = Vector3.transform(vel_ircs, galacticrotation);

(*) Die tatsächliche Entfernung in Parsec kann vom Kehrwert der gemessenen Parallaxe in Bogensekunden abweichen, die null oder negativ sein kann.

Vielen Dank! Ihre Änderungen machen Sinn und scheinen die Ergebnisse zu verbessern. Das Verfahren zur Berechnung der Positions-Rotations-Matrix scheint einige Vorzeichen verschoben zu haben, ist aber ansonsten identisch. Es scheint jedoch immer noch ein Problem zu geben, die Sterngeschwindigkeit scheint stark mit den Sternpositionen zu korrelieren. Hier ist eine schnelle Darstellung der Sternenkarte: puu.sh/Hj7A4/cf8192b8b1.png Die Achsen hier sind RA (x) und DEC (y) und die Farbe der Sterne repräsentiert ihre Geschwindigkeit entlang der W-Achse.
Was passiert, wenn Sie die Bewegung der Sonne um die Galaxie berücksichtigen?
Würde das nicht genau das gleiche Muster zeigen? Wenn sich die Sonne mit der Geschwindigkeit x in Richtung W bewegt, würde das nicht bedeuten, alle Sterngeschwindigkeiten um ein flaches -x anzupassen? Oder gibt es eine andere Möglichkeit, die Geschwindigkeit einzustellen?
Ich denke, Sie könnten einen mittleren Geschwindigkeitsvektor für eine Stichprobe von Sternen berechnen und diesen subtrahieren. Ich würde erwarten, dass es die hemisphäreweite Verzerrung verringert und kleinere Variationen leichter sichtbar macht.
Wenn die Berechnungen jetzt korrekt sind, klingt das nach einer anständigen Idee, um diese Verzerrung zu berücksichtigen und sichtbarere lokale Schwankungen zu erhalten. Vielleicht gibt es eine Verzerrung in den Daten selbst. Ich bin jedoch immer noch ziemlich misstrauisch, dass diese Verzerrung darauf hindeutet, dass in meinem Ansatz noch ein Fehler verbleibt, der auch die lokalen Daten wertlos machen würde.
Solche Fragen sind Teil des wissenschaftlichen Prozesses.