Estoy tratando de analizar datos estelares en la versión GAIA 2 en coordenadas galácticas y estoy luchando con el componente de velocidad. Intenté seguir la documentación y los documentos en línea, pero terminé con resultados de velocidad con sesgos extraños que indican que probablemente estoy haciendo algo mal. Las fuentes que he usado son: http://adsabs.harvard.edu/full/1987AJ.....93..864J
El conjunto de datos GAIA 2 tiene estas variables relevantes por estrella:
Y este es el código que tengo (C#) para tratar de obtener los componentes de velocidad. Se hace convirtiendo primero pmra y pmdec a velocidades cartesianas basadas en la posición de las estrellas y luego girando esa ubicación a coordenadas galácticas.
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);
La DEC
conversión en la pregunta es incorrecta. Prueba esto:
double DEC = dec * Math.PI / 180.0;
positionrotation
parece una composición de dos rotaciones que traen (1, 0, 0) al RA y DEC de interés. Parece correcto, pero algo como esto sería más fácil de verificar:
using Microsoft.Xna.Framework.Matrix;
Matrix positionrotation =
Matrix.CreateRotationZ((float) RA) * Matrix.CreateRotationY((float) -DEC);
Las unidades de entrada vector
están mezcladas. Según estos documentos de Gaia DR2 , radial_velocity
está en km/s. pmra
y pmdec
están en mas/año; dividiéndolos (*) por parallax
en mas (1 au de referencia) da resultados en au/año. Prueba esto:
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);
Si galacticrotation
es de la ecuación 3.61 en estos documentos de Gaia DR2 ,
// Matrix galacticrotation as above except
galacticrotation.M12 = -0.873437f;
Vector3 vel_gal = Vector3.transform(vel_ircs, galacticrotation);
(*) La distancia real en parsecs puede diferir del recíproco del paralaje medido en segundos de arco, que puede ser cero o negativo.
ProfRob
Borborbor
mike g
Borborbor