# Constelaciones interactivas y cielo local · versión 11

## Uso

En «Dibuja las constelaciones», busca una constelación o una estrella conocida y
pulsa «Encontrarla». La búsqueda ignora tildes y conserva los nombres del catálogo.
También puedes pulsar un rótulo o una línea visible en el espacio o en el panorama
local. La figura seleccionada queda dorada; su ficha muestra las estrellas del
dibujo, su magnitud visual catalogada y la dirección de una referencia desde tu
ubicación. «Quitar resaltado» conserva las casillas de capas.

El selector incluye las 88 constelaciones. Serpiente reúne las dos figuras del
catálogo en una misma ficha y resalta ambas. No se inventan nombres propios: si el
catálogo reducido no los incluye, se muestra el identificador HIP. La ficha lista
hasta ocho estrellas de la figura, ordenadas por magnitud V. No implica que sean
todas las estrellas situadas dentro de las fronteras IAU.

En «Mi cielo», Ciudad / Campo / Cielo oscuro cambia las condiciones ilustradas.
Son condiciones elegidas por la persona, **no datos del tiempo ni mediciones
actuales de su ciudad**. Las posiciones, la fase, la altura lunar y el crepúsculo
sí corresponden a la fecha simulada y la ubicación elegida.

## Precisión y límites

- Se conserva la astronomía HYG 4.1, movimiento propio, eclíptica J2000 y giro al
  horizonte con Astronomy Engine. No se desplazan estrellas al seleccionar.
- Las líneas son dibujos convencionales y no los límites oficiales IAU. Las
  estrellas se ven en una dirección parecida, pero no tienen por qué estar cerca
  entre sí. El punto usado para centrar es la posición editorial de la etiqueta.
- El dato local de altura pertenece a ese punto de referencia, no a toda la
  extensión de la constelación. La ficha advierte que partes pueden asomar aunque
  ese punto esté bajo el horizonte. Nunca se fuerza una figura bajo tierra a
  aparecer sobre el horizonte.
- El modelo local adopta límites cenitales sin Luna de V 3,5 / 5,3 / 6,5 para
  Ciudad / Campo / Cielo oscuro. Son parámetros de presentación elegidos para
  ilustrar diferencias; no equivalencias calibradas con la escala Bortle.
- El crepúsculo reduce ese límite y suprime estrellas/figuras a partir de altura
  solar −4°. La extinción diferencial usa 0,20 mag por masa de aire adicional,
  con secante limitada a 8 cerca del horizonte. Es una aproximación visual.
- La luz lunar reduce el contraste según fase al cuadrado, seno de su altura y
  separación angular de cada estrella. El término es cero con la Luna bajo el
  horizonte. Sus coeficientes son ilustrativos, no una implementación del modelo
  fotométrico completo de Schaefer. No incluye nubes, aerosoles, humedad, adaptación
  ocular, variabilidad estelar ni un mapa de luces de la ciudad.
- En calidad ligera se limita además el catálogo a V ≤ 5,5. Los rótulos/líneas
  siguen siendo ayudas y pueden señalar estrellas demasiado débiles para ver.
- Los presets afectan el panorama local; no oscurecen las estrellas en el espacio.

## Fuentes consultadas y licencias

Consultadas el 20 de septiembre de 2026. Código nuevo original; no se ha añadido
ninguna dependencia o imagen externa. Se reutilizan los datos locales con los
avisos comerciales ya incluidos en [estrellas-v04.md](estrellas-v04.md): HYG
CC BY-SA 4.0 (la adaptación de datos conserva esta licencia), d3-celestial BSD-3.

- [IAU: The Constellations](https://iauarchive.eso.org/public/themes/constellations/)
  — 88 regiones oficiales y distinción con figuras trazadas entre estrellas.
- [IAU/OAE: Romanian Orion](https://iauarchive.eso.org/public/images/detail/ann22042i/)
  — identificación del cinturón de Orión, Rigel y Betelgeuse. La explicación de
  la ficha es una redacción breve propia; no se descarga la fotografía.
- [HYG: definición del catálogo](https://github.com/astronexus/HYG-Database/blob/main/hyg/README.md)
  — identificador Hipparcos, magnitud, nombres y coordenadas de los datos existentes.
- [NOIRLab / Dark and Quiet Skies, informe del taller](https://noirlab.edu/public/media/archives/techdocs/pdf/techdoc021.pdf)
  — discusión de límites visuales aproximados y dependencia de contaminación,
  transparencia, Luna, crepúsculo y adaptación del observador.
- [Stellarium: guía oficial, modelos de cielo y contaminación lumínica](https://stellarium.org/guide/)
  — referencia conceptual sobre dispersión de luz artificial, extinción, brillo
  lunar y condiciones elegidas. No se copia código, texturas ni parámetros de su
  modelo fotométrico completo.

## Archivos y contrato

- `js/estrellas.js`: `SolarStars.limitingMagnitude`, dibujo/picking de panorama;
  `SolarStarField.setSelected(id)`, `direction(id)`,
  `pick(camera,width,height,x,y)` en píxeles CSS del visor. Nombres antes que líneas;
  la escena debe comprobar los cuerpos antes del fondo estelar.
- `js/constelaciones.js`: interfaz modular creada dentro de un contenedor.
  `new SolarConstellations(container,{starField,sky,onEnable,onFocus})`.
  `select(id,{focus,reveal,enable})`, `clear()`, `update(data,location)`, `selectedId`.
  Al restaurar estado usar `focus:false,reveal:false,enable:false` para respetar
  cámara, desplegables y casillas guardadas. `onFocus(direction,item)` entrega un
  `THREE.Vector3` unitario en los ejes de la escena.
- `js/cielo.js`: `setLightPollution`, `setSelectedConstellation`,
  `focusConstellation`, `onConstellationSelect`, propiedad `lightPollution`.
- `js/rendimiento.js`: `SolarLazySky` conserva estas opciones antes de construir
  el panorama; el getter de contaminación consulta la elección actual de su UI.
- `css/constelaciones.css`: controles compactos y ficha adaptable.

Sin un bucle nuevo: se reutiliza el reloj coordinador. La selección sólo recompone
una geometría pequeña; el picking espacial se calcula al pulsar, no en cada frame.
Los datos locales de la ficha se actualizan cada diez segundos simulados. Los
nombres mantienen tamaño 22 px y la selección recibe prioridad frente a colisiones.

## Comprobaciones

`node tests/constelaciones-v11.cjs`: catálogo de 88, Serpiente doble, búsquedas con
tildes/nombres, magnitudes, selección sin cambiar coordenadas y picking de texto y
líneas en la proyección. `node tests/cielo-v11.cjs`: orden de visibilidad de los
tres presets, atenuación por altura/crepúsculo/Luna, ninguna estrella diurna,
selección guardada antes del renderer y lectura de la UI para escenas guardadas.
También pasan los tests existentes de estrellas, rótulos y rendimiento.
