# Estrellas y constelaciones · versión 04

La aplicación incluye **8.920 estrellas con magnitud visual V ≤ 6,5**, más dos
estrellas débiles usadas como vértices de las figuras. Las 88 constelaciones
occidentales tienen 89 figuras porque Serpens se representa en dos partes.
No hay estrellas aleatorias en el fondo.

## Datos y licencias para distribuir el producto

**Catálogo HYG 4.1 — David Nash / Astronomy Nexus.** HYG combina Hipparcos, Yale
Bright Star y Gliese. El archivo `assets/stars-data.js` conserva posición,
magnitud V, color B−V, movimiento propio e identificador; sólo retiene nombres
propios de las estrellas brillantes. La adaptación reduce campos, selecciona
estrellas, redondea cifras y enlaza vértices de figuras con el catálogo.

- Fuente: <https://github.com/astronexus/HYG-Database/blob/main/hyg/CURRENT/hygdata_v41.csv>
- Definición de campos: <https://github.com/astronexus/HYG-Database/blob/main/hyg/README.md>
- Licencia: [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/).
- Aviso original incluido: [HYG-LICENSE.md](HYG-LICENSE.md).
- La adaptación del catálogo se distribuye también bajo **CC BY-SA 4.0**.
  Permite uso comercial y redistribución, conservando atribución, enlace a la
  licencia e indicación de cambios; las adaptaciones de esos datos deben
  mantener la misma licencia. Los datos están separados del código propio.

**Figuras y nombres de constelaciones — Olaf Frohn, d3-celestial.** Se utiliza
únicamente su colección de datos, sin incorporar la biblioteca D3 ni imágenes.
Se han conservado los nombres españoles, centros de etiquetas y secuencias de
vértices; cada vértice se enlaza a su estrella HYG más próxima (desviación máxima
entre las dos fuentes: 16,26 segundos de arco). Esto permite que la línea siga
el movimiento propio de la estrella.

- Fuentes: [constellations.lines.json](https://github.com/ofrohn/d3-celestial/blob/master/data/constellations.lines.json)
  y [constellations.json](https://github.com/ofrohn/d3-celestial/blob/master/data/constellations.json).
- Licencia: **BSD-3-Clause**, texto íntegro en
  [D3-CELESTIAL-LICENSE.txt](D3-CELESTIAL-LICENSE.txt).
- Uso comercial y redistribución permitidos conservando su aviso y condiciones.
- Las figuras unen estrellas como ayuda de orientación: **no representan los
  límites oficiales de las constelaciones**, ni líneas físicas en el espacio.

Crédito visible sugerido: «Estrellas: HYG 4.1 — David Nash, CC BY-SA 4.0.
Constelaciones: d3-celestial — Olaf Frohn, BSD-3-Clause».

## Qué calcula cada módulo

- `assets/stars-data.js`: datos locales, aproximadamente 485 KiB. Es JavaScript
  clásico para que pueda abrirse sin servidor, sin `fetch` ni conexión.
- `js/estrellas.js`: conversión de coordenadas, cachés y representación.
- `js/cielo.js`: solicita el dibujo del catálogo sobre el panorama del lugar.
- `tests/estrellas.cjs`: pruebas de coordenadas, hemisferios, polos, fechas,
  movimiento propio, magnitudes, capas y cachés.

HYG usa época y equinoccio **J2000.0**. El movimiento propio es una aproximación
lineal en el plano tangente; `pmra` incluye el factor coseno de la declinación.
Se normaliza la dirección después de avanzar el tiempo. Ese movimiento lento
se actualiza una vez por día, reutilizando un único arreglo para ambos visores.

En el espacio, las direcciones se convierten a la eclíptica J2000 usada por el
resto del proyecto. La esfera de dibujo permanece centrada en la cámara. Su
radio es exclusivamente gráfico: acercarse a la Tierra no hace que las estrellas
se desplacen por un falso paralaje ni implica que estén a 200 AU.

En el cielo local se aplica una sola matriz **EQJ → HOR** de Astronomy Engine
para cada instante y ubicación, incluyendo precesión, nutación y giro sideral.
La matriz transforma todo el catálogo en lote. El azimut crece desde el norte
hacia el este y la altura usa el horizonte local; se aplica refracción estándar
cerca y por encima del horizonte. La caché se invalida al cambiar fecha o lugar,
incluso durante la pausa. No se llama `Equator` una vez por estrella.

La posición de las etiquetas de constelaciones es una referencia editorial del
catálogo, no el centro físico de un objeto. Los segmentos se subdividen y se
proyectan sobre la esfera, sin trazos espurios al cruzar el borde del panorama.

## Capas y consumo

Las capas **Estrellas**, **Constelaciones** y **Nombres** se pueden activar de
forma independiente. El modo Ligera reduce las estrellas dibujadas a V ≤ 5,5 y
las etiquetas menos destacadas. Las texturas de nombres espaciales sólo se crean
la primera vez que se activa su casilla. Una única malla de puntos dibuja las
estrellas y una malla de segmentos dibuja todas las figuras.

El cielo local oculta las estrellas bajo el horizonte, atenúa la capa durante
el crepúsculo y la suprime de día. El límite de magnitud también disminuye con
la luz solar. Al girar el panorama sólo se vuelve a proyectar el catálogo ya
calculado, sin recalcular astronomía. La pausa estable reutiliza la fecha.

## Límites de precisión y apariencia

Esto es un mapa educativo, no una herramienta de astrometría de observatorio.
No se modelan paralaje anual estelar, aberración anual, velocidades radiales o
aceleraciones estelares; las posiciones geométricas incluyen el movimiento
propio lineal. Esas diferencias son pequeñas para las escalas del visor, pero
no deben interpretarse como posiciones aparentes de precisión subarcosegundo.
La magnitud catalogada es fija: no simula la variabilidad de las estrellas.

Los puntos se amplían para hacerlos legibles. Sus tamaños, colores y brillo
son representativos y no una exposición fotográfica calibrada. El modo local
no calcula nubes, contaminación lumínica, extinción atmosférica detallada,
luz dispersada de la Luna ni condiciones reales de observación. Sus etiquetas
de constelaciones desaparecen con el día igual que sus líneas.

## Regenerar los datos

Descarga los seis archivos listados abajo a una carpeta de fuentes, conservando
sus nombres. Desde la carpeta del proyecto ejecuta:

```text
python assets/prepare-stars-v04.py --sources RUTA_A_LA_CARPETA_DE_FUENTES
node tests/estrellas.cjs
```

El generador usa sólo la biblioteca estándar de Python y no consulta Internet.
Los SHA-256 de las tres fuentes de datos quedan en `SolarStarData.meta.sha256`
para poder comprobar exactamente qué copia se utilizó.

- `hygdata_v41.csv`, `hyg-license.md`, `hyg-readme.md`: repositorio HYG citado arriba;
  los dos últimos corresponden a sus `LICENSE` y `hyg/README.md`.
- `constellations.lines.json`, `constellations.json`, `d3-celestial-license.txt`:
  repositorio d3-celestial; el último corresponde a su `LICENSE`.

Las fórmulas de rotación proceden de la API local de
[Astronomy Engine](https://github.com/cosinekitty/astronomy/tree/master/source/js),
que ya forma parte de la aplicación bajo licencia MIT. Las pruebas comparan la
ruta de matriz única con la ruta independiente EQJ → EQD → `Horizon`; se prueban
fechas de 1900, 2000, 2026 y 2100 y ubicaciones en ambos hemisferios, polos y el
meridiano de cambio de fecha.
