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
Der GAIA 2-Datensatz hat diese relevanten Variablen pro Stern:
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);
Die DEC
Konvertierung in der Frage ist falsch. Versuche dies:
double DEC = dec * Math.PI / 180.0;
positionrotation
sieht 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 vector
sind vertauscht. Laut diesen Gaia DR2-Dokumenten ist radial_velocity
es in km/s. pmra
und pmdec
sind in mas/Jahr; Dividieren (*) durch parallax
in 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 galacticrotation
aus 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.
ProfRob
Borborbor
Mike G
Borborbor