Incapaz de detectar estrellas y constelaciones en simulación de estrellas del catálogo Hipparcos

Estoy creando un programa de planetario usando Unity3D y C# para graficar estrellas del catálogo de Hipparcos. Usando las columnas Plx, _RA.icrs y _DE.icrs del conjunto de datos, he logrado calcular la distancia en parsecs y calcular un conjunto cartesiano de coordenadas.

Clase de simulación...

public class Simulation : MonoBehaviour
{
    public IEnumerator loadStars()
    {
        starsLoaded = 0;
        var stopWatch = new Stopwatch();
        stopWatch.Start();
        // Use the last frame duration as a guide how long one frame should take
        var targetMilliseconds = Time.deltaTime * 100f;
        for (int i = 0; i < totalStars; i++)
        {
            Double.TryParse(datasetTable[i, 3], out double test);
            if (!(datasetTable[i, 12] == null) && !(datasetTable[i, 13] == null) && !(datasetTable[i, 6] == null))
            {
                GameObject thisStar = Instantiate(starPrefab, transform.position, transform.rotation) as GameObject;
                thisStar.transform.parent = starHolder.transform;
                Int32.TryParse(datasetTable[i, 0], out (thisStar.GetComponent<Star>().ID));
                Double.TryParse(datasetTable[i, 12], out (thisStar.GetComponent<Star>().RA));
                Double.TryParse(datasetTable[i, 13], out (thisStar.GetComponent<Star>().DE));
                Double.TryParse(datasetTable[i, 3], out (thisStar.GetComponent<Star>().Vmag));
                Double.TryParse(datasetTable[i, 6], out (thisStar.GetComponent<Star>().Plx));
                Double.TryParse(datasetTable[i, 10], out (thisStar.GetComponent<Star>().CI));
            }
            if (stopWatch.ElapsedMilliseconds > targetMilliseconds)
            {
                yield return null;
                stopWatch.Restart();
            }
            starsLoaded++;
        }
    }
}

Clase estrella:

public class Star : MonoBehaviour
{
    /// <summary>
    /// Identifier (HIP number). "HIP" is appended to the ID, for Hipparcos
    /// </summary>
    [SerializeField] public int ID; // { get; set; }
    /// <summary>
    /// Right Ascension (J2000) in degrees. 
    /// </summary>
    [SerializeField] public double RA; //{ get; set; }
    /// <summary>
    /// Declination (J2000) in degrees. 
    /// </summary>
    [SerializeField] public double DE; //{ get; set; }
    /// <summary>
    /// Magnitude in Johnson V
    /// </summary>
    [SerializeField] public double Vmag; //{ get; set; }
    /// <summary>
    /// Trigonometric parallax, measured in milli-seconds of arc
    /// </summary>
    [SerializeField] public double Plx; //{ get; set; }
    /// <summary>
    /// Colour index in Johnson B-V colour
    /// </summary>
    [SerializeField] public double CI; //{ get; set; }
    /// <summary>
    /// Distance of the star from the centre of Earth measured in kilometres
    /// </summary> 
    [SerializeField] public double distanceFromEarth;
    /// <summary>
    /// Cartesian (X,Y,Z) positioning of the star
    /// </summary>
    [SerializeField] Vector3 cartesianPositioning;


    // Start is called before the first frame update
    void Start()
    {
        positionStar();
    }

    private void distanceFromEarthCalc()
    {
        // Convert Plx from milliarcseconds to arcseconds (seconds of arc)
        double PlxSOA = Plx / 1000;
        // Calculate distance from equation d=1/p
        // distance d is measured in parsecs and the parallax angle p is measured in arcseconds.
        double dPC = 1 / PlxSOA;
        /// Convert parsecs to kilomentres
        /// Conversion can bbe found here:
        /// https://en.wikipedia.org/wiki/Parsec
        /// 
        /// QUICK NOTE: converting to km causes issues with unity - values are too high
        ///             maybe work with parsecs instead?
        ///             
        //distanceFromEarth = (dPC * (96939420213600000 / math.PI_DBL)) / 1000;
        //distanceFromEarth = distanceFromEarth / 10000; // metres to kilometres
        distanceFromEarth = dPC * 10; // multiplied by 10 to move stars away from camera
    }


    private void cartesianPositioningCalc()
    {
        distanceFromEarthCalc();

        double RA_rad = RA * (math.PI_DBL / 180);
        double DE_rad = DE * (math.PI_DBL / 180);

        cartesianPositioning.x = (float)(distanceFromEarth * (math.cos(DE_rad)) * (math.cos(RA_rad)));
        cartesianPositioning.y = (float)(distanceFromEarth * (math.cos(DE_rad)) * (math.sin(RA_rad)));
        cartesianPositioning.z = (float)(distanceFromEarth * (math.sin(DE_rad)));
    }

    private void positionStar()
    {
        cartesianPositioningCalc();
        gameObject.transform.position = cartesianPositioning;
        gameObject.transform.localScale = new Vector3(2, 2, 2);
    }
}

Vista desde la cámara:Vista desde la cámara de Unity

Vista 3D de la escena (las flechas muestran la orientación de la cámara):Vista 3D de la escena.

Con la imagen de la cámara, intenté subirla a http://nova.astrometry.net/ pero no pude encontrar estrellas/constelaciones.

Así que pensé en normalizar los vectores de las estrellas.

Con la clase Simulación sin cambios, cambié la variable distanciaDeLaTierra en la clase Estrella a 900 para normalizar los vectores (cada estrella no tendrá la misma distancia desde el centro)

Vista desde la cámara:Vista desde la cámara

Vista 3D de la escena (las flechas muestran la orientación de la cámara):Vista 3D de la escena.

Incluso después de la normalización, al cargar la imagen de la vista desde la cámara al sitio web de procesamiento de imágenes, no se detectaron estrellas ni constelaciones.

¿Qué estoy haciendo mal? ¿Por qué no se detectan las estrellas y las constelaciones?

Intente ignorar la distancia y configúrela en la misma grande para cada estrella. Escale el tamaño visible inversamente a la magnitud y/o limite a estrellas más brillantes que 5 mag. Ver el tiempo todo eso combinado te da algunos resultados
My photo.stackexchange.com/questions/92387/… analiza el tamaño de una estrella en un medio fotográfico y puede o no ser útil
Muy útil en realidad, esto será útil cuando comience a crear modelos dinámicos y únicos para cada estrella.

Respuestas (1)

La magnitud aparente m = Vmagpodría ser lo que falta. Las estrellas de magnitud aparente m =0 deberían aparecer 100 veces más brillantes que las estrellas m =5. Si está simulando una vista a simple vista, puede omitir estrellas de m >6.

Cuando coloque estrellas a distancias no uniformes, deberá calcular la magnitud absoluta M a partir de la magnitud aparente m y la distancia. Si p = Plxes paralaje en milisegundos de arco,

METRO metro + 5 registro 10 pag 10

Si todas las estrellas se modelan en el mismo material (¿emisivo?), el objeto que representa una estrella de magnitud absoluta M =0 debería tener 100 veces el área de superficie y 10 veces el radio, como una estrella M =5.

r ( METRO ) = 10 1 METRO / 5 r ( 5 )

Para verificar su trabajo, los sitios de planetarios como TheSkyLive o Stellarium Web requerirían menos cómputo que cargar imágenes en astrometry.net.

¿Existe algún tipo de fórmula matemática que pueda usarse para calcular el radio de estos objetos estelares, dada su magnitud aparente y paralaje/distancia desde la Tierra (calculada a partir de los valores de paralaje de cada estrella)?
@SidS Actualizado con fórmulas.
Implementé las fórmulas, sin embargo, no creo que lo haya hecho correctamente ya que las estrellas son enormes, por favor, ¿podría verificarlo en esta URL: pastebin.com/HYazJLq2 ? Además, el radio máximo debe ser 5, ¿cómo logro esto?
He actualizado completamente el script para seguir el ejemplo de su respuesta. Se puede acceder al script desde la misma URL que la anterior. He abierto una nueva pregunta sobre esto en esta URL: astronomy.stackexchange.com/questions/36406/…