# Júpiter y sus cuatro grandes lunas · Versión 11

Abre «Las lunas de Júpiter» en Sigue explorando y pulsa «Ver Júpiter y sus lunas». El reloj existente mueve Ío, Europa, Ganímedes y Calisto; sus nombres permiten acercarse. El checkbox oculta las lunas. «Mostrar trayectorias», sobre el visor, también controla las cuatro órbitas jovianas. Ninguna de estas acciones acelera automáticamente el reloj.

## Cálculo y alcance

- [Astronomy Engine, JupiterMoons](https://github.com/cosinekitty/astronomy/tree/master/source/js#jupitermoonsdate--jupitermoonsinfo), biblioteca MIT ya incluida: estados jovicéntricos EQJ, AU y AU/día. Una rotación fija EQJ→ECL J2000 y el cambio de ejes `(x,z,-y)` coinciden con el sistema de referencia de los planetas.
- Son posiciones geométricas simultáneas en la fecha seleccionada. No representan la luz recibida ahora desde Júpiter ni incluyen su retraso hasta la Tierra. Las trayectorias son muestras del modelo durante un período alrededor de esa fecha, no círculos decorativos.
- Comparación independiente con [JPL Horizons](https://ssd.jpl.nasa.gov/horizons/): 12 estados jovicéntricos en 2000-01-01, 2026-09-20 y 2030-01-01, UTC. Los resultados y las URL exactas están en [jupiter-horizons-v11.json](jupiter-horizons-v11.json). Diferencia máxima de estos casos: **545,2 km**, Calisto en 2026. Es una comprobación puntual del modelo, no una garantía uniforme de precisión ni un sistema de navegación espacial. La prueba rechaza desviaciones superiores a 700 km para estos casos.
- Radios medios: Ío 1821,49 km; Europa 1560,80 km; Ganímedes 2631,20 km; Calisto 2410,30 km. Fuente: [JPL, parámetros físicos de satélites](https://ssd.jpl.nasa.gov/sats/phys_par/). Períodos aproximados para dibujar las trayectorias: [JPL, elementos medios](https://ssd.jpl.nasa.gov/sats/elem/sep.html). Los períodos no sustituyen las efemérides calculadas.
- Los vectores de órbita y velocidad definen una orientación síncrona aproximada: el meridiano cero mira hacia Júpiter y el norte sigue la normal orbital. No reproduce el modelo IAU completo ni libraciones físicas; la orientación de accidentes cartográficos no tiene precisión geodésica.

## Tamaños y luz

En **escala física**, las distancias y radios de las lunas usan AU reales. En **escala didáctica**, sus separaciones conservan la proporción respecto del radio ecuatorial de Júpiter dibujado; los radios de las lunas se amplían por 3 para encontrarlas. La vista didáctica aísla Júpiter y sus lunas: no mezcla estas proporciones con las distancias solares comprimidas, que colocarían otros planetas artificialmente cerca. Conserva las estrellas, las constelaciones y el eje joviano si están activados. Al cambiar de destino reaparecen los demás cuerpos. Esta ampliación se avisa en el panel y no interviene en los cálculos físicos de sombra o en las distancias leídas.

Las cuatro mallas comparten la dirección solar real de Júpiter (el error direccional a lo largo del sistema joviano es pequeño). El shader existente de discos solares finitos calcula por fragmento la ocultación del Sol por Júpiter usando kilómetros reales. Para la sombra del planeta sobre sus lunas, se aproxima Júpiter por una esfera de radio ecuatorial 71 492 km, sin achatamiento. No representa eclipses entre lunas. La versión 22 añade también [sombras de las cuatro lunas sobre el esferoide de Júpiter](sombras-jupiter-v22.md), con umbra y penumbra calculadas en dimensiones físicas. La exposición y luz ambiente son visuales, no radiometría científica.

## Mapas gratuitos y reutilizables

Se descargaron el 20 de septiembre de 2026 cuatro JPEG originales globales de USGS Astrogeology, de 1024 × 512 píxeles, sin modificar. Cada página de producto declara ausencia de restricciones de uso; Ío, Ganímedes y Calisto además identifican dominio público. Europa es un mosaico oficial USGS con acceso y uso sin restricciones. La [política USGS sobre derechos](https://www.usgs.gov/faqs/are-usgs-reportspublications-copyrighted) distingue estos materiales oficiales de imágenes de terceros con avisos propios. Se conservaron créditos y fuentes, sin logos ni sugerencia de patrocinio. No se ha incorporado ningún recurso de pago.

| Archivo en assets/jupiter | Producto oficial | Tratamiento visual y licencia |
|---|---|---|
| io-source.jpg | [Io Galileo SSI Global Color Merge Mosaic 1km](https://astrogeology.usgs.gov/search/map/io_galileo_ssi_global_color_merge_mosaic_1km) | NASA/JPL–USGS; color realzado, más saturado que al ojo. Dominio público, uso sin restricciones. |
| europa-source.jpg | [Europa Voyager–Galileo SSI Global Mosaic 500m](https://astrogeology.usgs.gov/search/map/europa_voyager_galileo_ssi_global_mosaic_500m) | NASA/JPL–USGS, Voyager/Galileo; monocromo. Acceso y uso sin restricciones. |
| ganymede-source.jpg | [Ganymede Voyager–Galileo SSI Color Global Mosaic 1.4km](https://astrogeology.usgs.gov/search/map/ganymede_voyager_galileo_ssi_color_global_mosaic_1_4km) | NASA/JPL–USGS, Voyager/Galileo; color. Dominio público, uso sin restricciones. |
| callisto-source.jpg | [Callisto Galileo/Voyager Global Mosaic 1km](https://astrogeology.usgs.gov/search/map/callisto_galileo_voyager_global_mosaic_1km) | NASA/JPL–USGS, Voyager/Galileo; monocromo. Dominio público, uso sin restricciones. |

Son mosaicos históricos, no imágenes en directo. Sus distintas resoluciones originales se reducen en los JPEG de distribución: no se presenta 1 km/píxel como resolución efectiva del visor. Hay huecos oscuros cerca de algunos polos y uniones visibles entre imágenes; se conservan los originales y no se inventa terreno para rellenarlos. Sus proyecciones son cilíndricas simples, norte arriba y longitud positiva oeste. En runtime, el desplazamiento horizontal de textura centra 0° para los mapas de dominio 0–360; Ío usa −180–180 y ya lo tiene centrado.

[fuentes.json](../assets/jupiter/fuentes.json) contiene por archivo la URL de descarga, crédito, declaración de uso, proyección, dimensiones y SHA-256. `mapas.js` contiene los mismos JPEG en base64 para permitir apertura `file://`; solo se carga cuando se visita Júpiter. No requiere servidor ni API de pago.

Fichas breves basadas en NASA: [Ío](https://science.nasa.gov/jupiter/moons/io/), [Europa](https://science.nasa.gov/jupiter/moons/europa/), [Ganímedes](https://science.nasa.gov/jupiter/moons/ganymede/), [Calisto](https://science.nasa.gov/jupiter/moons/callisto/).

## Módulos para desarrollar

- `js/jupiter.js`: modelo `SolarJupiterModel` y complemento `SolarJupiterSystem`; `css/jupiter.css`: tarjeta, botones y rótulos.
- Crear `scene.jupiter = new SolarJupiterSystem(scene, {onVisit})`; `mount(host)` monta la tarjeta cerrada. `onVisit('jupiter')` puede devolver una Promise al cambiar la vista principal.
- Ejecutar `scene.jupiter.update(data)` al final de `scene.update`, y `.project()` al final del render normal. No se crea otro contexto WebGL, temporizador ni `requestAnimationFrame`.
- `.showSystem()` encuadra el sistema; `.focusMoon(id)` sigue una luna; `.setEnabled(bool)` controla visibilidad. `.getState()` / `.setState()` serializan `{enabled, focus}` sin cambiar por sí solos el encuadre guardado.
- `node tests/jupiter.cjs` valida Horizons, escalas, movimiento, velocidad, sombras finitas y la integridad de las texturas.
