# Mundos adicionales · modelo y precisión (versión 17)

Se añaden Plutón (planeta enano), Caronte, Titán, Encélado, Fobos y Deimos. Todos responden al reloj de la simulación. Las posiciones son geométricas, simultáneas y heliocéntricas: no son una fotografía ni incorporan tiempo de viaje de la luz hasta el observador.

## Archivos y API

- `js/mundos-datos.js`: catálogo, radios, descripciones y fuentes.
- `assets/mundos/efemerides.js`: tablas numéricas JPL locales (aproximadamente 5,2 MB). No hay peticiones a JPL mientras se usa el simulador.
- `js/mundos-modelo.js`: interpolación, Kepler, orientación y lecturas. No depende de THREE.
- `SolarWorldsModel.calculate(fecha, datosAstronomicos?)`: objeto por identificador, con `position`, `relativePosition`, `velocity`, `orientation`, distancias, dirección solar y `accuracy`.
- `relativeAt(id, fecha)` y `sampleOrbit(id, fecha, segmentos)`: posiciones de una luna relativas a su padre; no recalculan todo el sistema.
- `precision(id, fecha)`: modelo usado, cobertura, diferencia medida y advertencia cuando corresponde.
- `tests/mundos-modelo.test.cjs`: contraste independiente y comprobaciones geométricas.

Todas las posiciones y velocidades devueltas usan AU y AU/día. La escena utiliza x=eclíptica.x, y=eclíptica.z, z=−eclíptica.y, con marco J2000. El cuaternión usa norte local +Y, meridiano cero +X y este −Z.

## Posiciones entre 2020 y el inicio de 2036

Se descargaron efemérides de JPL Horizons: MAR099 (Marte), SAT441 (Saturno), PLU060 (Plutón y Caronte). La cobertura anunciada va de **2020-01-01 00:00 UTC a 2036-01-01 00:00 UTC**, inclusive. Las tablas contienen márgenes para interpolar los extremos.

Para cada luna se emplean elementos osculadores eclípticos J2000 referidos al centro de su planeta. El muestreo es diario salvo Encélado, para el que se usan tres horas; sus perturbaciones rápidas exigieron mayor frecuencia. Los ángulos singulares se transforman en componentes del vector de excentricidad y del plano orbital. Se interpola con cúbicas de Catmull–Rom; la longitud media se desenvuelve por continuidad y se almacena como residuo respecto a un movimiento medio. Después se resuelve Kepler. Así se evitan saltos de 359° a 0° y periapsis inestables en órbitas casi circulares.

Para Plutón se interpolan vectores heliocéntricos del baricentro del sistema (identificador JPL 9), con posición y velocidad cada 16 días, mediante Hermite cúbica. Se obtiene el centro de Plutón descontando el desplazamiento hacia Caronte multiplicado por su fracción de masa, 106,1/(869,3+106,1), a partir de los GM de JPL. No se modela el pequeño desplazamiento adicional causado por las otras lunas de Plutón. La posición de Caronte suma su vector relativo a ese centro de Plutón.

Los tiempos de las tablas son TDB. Desde 2017 se usa TT−UTC=69,184 segundos y se desprecia la variación TDB−TT, inferior a 2 milisegundos. Se supone que no se introducen nuevos segundos intercalares antes de 2036; si los hubiera, habrá que actualizar esa conversión. El reloj del usuario debe tener fecha y hora correctas.

## Contraste independiente

Se consultaron **72 fechas por mundo**, combinando 47 muestras uniformes cada 127 días con 25 instantes de horas variadas, extremos del intervalo y la fecha de desarrollo. Los vectores de referencia son geométricos, eclípticos J2000, en kilómetros y con tiempos UTC. No son los elementos utilizados para construir la interpolación. Datos y consultas reproducibles: `mundos-horizons-v17.json`.

| Mundo | Diferencia espacial máxima observada | Referencia |
|---|---:|---|
| Plutón | 0,333 km | Centro de Plutón respecto al Sol |
| Caronte | 0,0023 km | Respecto al centro de Plutón |
| Titán | 7,392 km | Respecto al centro de Saturno |
| Encélado | 2,314 km | Respecto al centro de Saturno |
| Fobos | 8,869 km | Respecto al centro de Marte |
| Deimos | 4,755 km | Respecto al centro de Marte |

Estas son **diferencias de interpolación observadas frente a JPL**, no incertidumbres físicas de las efemérides ni cotas garantizadas para cualquier instante. La interfaz redondea hacia arriba y explica esa distinción. Para las lunas, las cifras se refieren al movimiento relativo; la posición absoluta y la iluminación también dependen del modelo del planeta padre (Astronomy Engine para Marte y Saturno). La incertidumbre observacional de los modelos JPL no se estima aquí. No se promete precisión métrica real para Caronte.

En una primera comprobación, interpolar Encélado solo una vez al día producía diferencias de unos 789 km. Aumentar el muestreo y añadir un margen inicial redujo el máximo de las pruebas anteriores a 2,314 km.

## Fuera de la cobertura

Se conserva la navegación por otras fechas, con la advertencia visible **«Extrapolación educativa»** y sin cifra de precisión. Las lunas prolongan la fase orbital con el movimiento medio ajustado al intervalo y mantienen la forma/plano orbitales del extremo más próximo: esto pierde precesión, evolución secular y perturbaciones, y puede desviarse mucho lejos del intervalo. Plutón vuelve a Astronomy Engine y usa ese centro orbital aproximado junto a la corrección binaria; no se le aplica la precisión de las tablas JPL. En el ensayo inicial, Astronomy Engine difería de Horizons hasta unos 193.000 km para Plutón durante 2020–2036: la corrección tabulada mejora ese caso dentro del intervalo, pero no se extrapola con esa precisión.

No se usan como efemérides los elementos medios redondeados del catálogo JPL: el propio catálogo advierte que sirven para describir las órbitas, no para calcular posiciones precisas.

## Orientación, formas y mapas

El eje y giro de Plutón proceden de `Astronomy.RotationAxis('Pluto', fecha)`, con su convención IAU. En las cinco lunas se emplea una orientación síncrona aproximada: el meridiano cero mira al padre y el norte coincide con la normal orbital instantánea. No incluye libraciones físicas, un ajuste completo IAU de los polos o una orientación cartográfica de precisión. Los ejes dibujados son coherentes con ese modelo.

Fobos y Deimos son elipsoides con semiejes de referencia (13,1×11,1×9,3 km y 7,8×6,0×5,1 km). La malla adapta esos ejes a la convención local del visor; no equivale a un modelo digital de sus cráteres. Los radios medios y los semiejes responden a estimaciones distintas. Las imágenes son mapas históricos; las notas de cada cuerpo explican su cobertura. Los colores, diámetros visuales y distancias pueden estar adaptados por la escala didáctica del simulador.

## Fuentes primarias y reproducción

- [JPL Horizons: manual](https://ssd.jpl.nasa.gov/horizons/manual.html) y [API](https://ssd-api.jpl.nasa.gov/doc/horizons.html).
- [JPL: efemérides de satélites](https://ssd.jpl.nasa.gov/sats/ephem/).
- [JPL: parámetros físicos](https://ssd.jpl.nasa.gov/sats/phys_par/).
- [JPL: alcance de los elementos medios](https://ssd.jpl.nasa.gov/sats/elem/).
- [Astronomy Engine: código y licencia MIT](https://github.com/cosinekitty/astronomy).
- [NASA: Plutón](https://science.nasa.gov/dwarf-planets/pluto/facts/) y [Caronte](https://science.nasa.gov/dwarf-planets/pluto/moons/charon/).

Crédito de los datos numéricos: NASA/JPL Solar System Dynamics. Las licencias y créditos de las imágenes figuran por separado en la documentación de recursos de la versión 17.

Para regenerar, ejecutar primero `references/descargar-efemerides-v17.ps1` con conexión; después `python references/generar-efemerides-v17.py`. El script consulta secuencialmente y guarda las respuestas originales en `references/horizons-v17-raw` para auditoría local. Esas respuestas de trabajo no son necesarias para ejecutar el simulador y no se incluyen en la entrega. La tabla compacta, la muestra independiente y las consultas de origen sí se distribuyen. Ejecutar `node tests/mundos-modelo.test.cjs` para repetir las comprobaciones sin conexión.
