# Ocho planetas: modelo, datos y contraste independiente

Versión 07. Consulta y descarga de referencias: 20 de septiembre de 2026.

## Qué calcula la aplicación

`js/planetas-datos.js` contiene las fichas y constantes. `js/astronomia.js`
calcula la posición, orientación, dirección al Sol y distancias de los ocho
planetas para el mismo instante que la Tierra y la Luna. No depende de una
conexión a Internet ni acumula vueltas aproximadas desde que se abrió la página.
El botón «Ahora» utiliza el reloj del equipo: un reloj incorrecto dará una fecha
incorrecta.

Se mantiene Astronomy Engine 2.1.19, incluido localmente y con licencia MIT.
`HelioVector` calcula posiciones geométricas heliocéntricas a partir de su modelo
VSOP87. `RotationAxis` aplica los elementos de orientación IAU 2015. Las
posiciones originales ecuatoriales J2000 se convierten una sola vez a la
eclíptica J2000 y a los ejes del visor: **x = X, y = Z, z = −Y**. La unidad física
es la unidad astronómica, **149 597 870,7 km**.

Fuentes primarias del modelo:

- [Astronomy Engine, objetivo de precisión y validaciones](https://github.com/cosinekitty/astronomy).
- [API JavaScript: HelioVector, RotationAxis, AstroTime y sistemas de coordenadas](https://github.com/cosinekitty/astronomy/blob/master/source/js/README.md).
- [Informe IAU WGCCRE 2015 enlazado por Astronomy Engine](https://astropedia.astrogeology.usgs.gov/download/Docs/WGCCRE/WGCCRE2015reprint.pdf).

El objetivo general anunciado por Astronomy Engine es aproximadamente un minuto
de arco. No significa que cada textura, longitud atmosférica o píxel de esta
aplicación tenga esa exactitud. La validación concreta de abajo mide posiciones,
no la precisión de todas las funciones de la interfaz.

## Tiempo, iluminación y orientación

Los cuerpos se muestran en sus posiciones **simultáneas**, sin tiempo de viaje de
la luz. No equivalen a una fotografía telescópica recibida en la Tierra. El cielo
local conserva sus cálculos de observación con sus correcciones correspondientes.

`data.planets[id].sunDirection` es el vector unitario real del planeta hacia el
centro del Sol. Este vector determina el lado diurno incluso si el visor amplía
los cuerpos o separa sus órbitas para poder explorarlos. `subsolar` expresa la
latitud y longitud del punto orientado hacia el Sol; `geometricPhaseFraction`
es la fracción iluminada vista desde el centro de la Tierra, sin retardo. Para
la propia Tierra esa fase es `null`, pues no se puede observar desde su centro.
La respuesta de los materiales y la exposición son una aproximación visual, no
una calibración fotométrica de una cámara real.

La esfera local usa +Y hacia el polo norte IAU, +X en el meridiano cero y −Z
hacia 90° este. Venus y Urano tienen giro retrógrado. El polo norte IAU de Urano
y el signo de su giro ya contienen su orientación: **no hay que añadir otra
rotación de 97,77°**. La Tierra conserva el meridiano de Greenwich basado en el
tiempo sidéreo y la transformación de precesión/nutación usada en versiones
anteriores.

En los gigantes, el giro es el de un sistema de referencia. Las nubes no forman
una superficie rígida; las bandas, tormentas y manchas de un mapa histórico no
pueden presentarse como meteorología actual. También la atmósfera de Venus
circula a una velocidad distinta del suelo. Los créditos de texturas describen
por separado las representaciones visuales y sus procedencias.

## Datos físicos de las fichas

Los radios de los gigantes corresponden al nivel convencional de presión de
1 bar. El radio medio y los radios ecuatorial/polar son distintos; la geometría
puede usar estos últimos para representar el achatamiento. Los períodos de la
ficha son valores medios y **no se usan para reemplazar las efemérides** por un
movimiento circular uniforme.

| Planeta | Radio medio km | Radio ecuatorial km | Radio polar km | Período orbital días | Giro sidéreo horas |
|---|---:|---:|---:|---:|---:|
| Mercurio | 2 439,7 | 2 440,5 | 2 438,3 | 87,969 | 1 407,6 |
| Venus | 6 051,8 | 6 051,8 | 6 051,8 | 224,701 | −5 832,6 |
| Tierra | 6 371 | 6 378,137 | 6 356,752 | 365,256363004 | 23,9345 |
| Marte | 3 389,5 | 3 396,2 | 3 376,2 | 686,98 | 24,6229 |
| Júpiter | 69 911 | 71 492 | 66 854 | 4 332,589 | 9,925 |
| Saturno | 58 232 | 60 268 | 54 364 | 10 755,699 | 10,656 |
| Urano | 25 362 | 25 559 | 24 973 | 30 685,4 | −17,24 |
| Neptuno | 24 622 | 24 764 | 24 341 | 60 189,018 | 16,11 |

Fuentes NASA NSSDCA: [Mercurio](https://nssdc.gsfc.nasa.gov/planetary/factsheet/mercuryfact.html),
[Venus](https://nssdc.gsfc.nasa.gov/planetary/factsheet/venusfact.html),
[Tierra](https://nssdc.gsfc.nasa.gov/planetary/factsheet/earthfact.html),
[Marte](https://nssdc.gsfc.nasa.gov/planetary/factsheet/marsfact.html),
[Júpiter](https://nssdc.gsfc.nasa.gov/planetary/factsheet/jupiterfact.html),
[Saturno](https://nssdc.gsfc.nasa.gov/planetary/factsheet/saturnfact.html),
[Urano](https://nssdc.gsfc.nasa.gov/planetary/factsheet/uranusfact.html) y
[Neptuno](https://nssdc.gsfc.nasa.gov/planetary/factsheet/neptunefact.html).
La Tierra conserva el período más detallado de la implementación previa.

## Órbitas

`orbitSamples(fecha, id, segmentos)` admite los ocho identificadores del catálogo
y `moon`. Cada punto proviene de una efeméride real durante un período orbital
medio centrado en la fecha. La Luna continúa usando posiciones relativas a la
Tierra. Las demás curvas son heliocéntricas. Las perturbaciones hacen que los
extremos no necesariamente coincidan: son líneas abiertas, no círculos ni
elipses obligadas a cerrar.

El punto central de una curva con un número par de segmentos coincide con la
posición del astro en la fecha solicitada. En Neptuno la curva recorre unos
165 años; cerca de los límites 1900–2100 del selector puede mostrar partes de
la trayectoria fuera de ese intervalo. Hay un máximo de 4096 segmentos y una
caché de 18 curvas inmutables; no se guardan todas las fechas arrastradas.

## Comparación con JPL Horizons

Se descargaron **32 posiciones independientes**, ocho planetas por cuatro
instantes: 1900-01-01 00:00, 2000-01-01 12:00, 2026-09-20 12:00 y
2100-01-01 00:00. El archivo `horizons-planetas-v07.json` conserva las respuestas
completas, URL de cada consulta y procedencia de la efeméride. Las pruebas usan
ese archivo local, nunca comparan el motor consigo mismo para esta medición.

Configuración: centros planetarios 199…899; origen `500@10` (centro del Sol);
`EPHEM_TYPE=VECTORS`; `REF_PLANE=ECLIPTIC`; `REF_SYSTEM=ICRF`;
`VEC_CORR=NONE`; `OUT_UNITS=AU-D`; `TIME_TYPE=UT`; `VEC_TABLE=1`.

| Planeta | Mayor separación espacial en las 4 fechas, km | Mayor separación angular heliocéntrica, segundos de arco |
|---|---:|---:|
| Mercurio | 5 601,893 | 17,560752 |
| Venus | 6 380,555 | 12,106027 |
| Tierra | 4 115,672 | 5,587603 |
| Marte | 5 043,000 | 4,472990 |
| Júpiter | 28 298,522 | 6,456450 |
| Saturno | 109 398,594 | 15,271933 |
| Urano | 180 517,563 | 12,492034 |
| Neptuno | 374 493,729 | 15,432116 |

Esos son **máximos medidos en la muestra**, no cotas demostradas para todas las
fechas, ni errores angulares vistos desde Granada. La separación espacial crece
con la distancia del planeta: no debe ocultarse detrás de una cifra angular.
El 20 de septiembre de 2026 los errores angulares medidos van de 1,071194″
(Tierra) a 15,006819″ (Neptuno).

La comparación incluye las distintas aproximaciones de tiempo: Horizons usa
UT1 antes de 1962 y UTC después; Astronomy Engine aproxima UTC y UT1 y estima
TT con un modelo de ΔT. En el futuro no conocemos aún los segundos intercalares
ni la rotación terrestre exacta. Horizons prolonga el último segundo intercalar
conocido. Además, ambas eclípticas J2000 emplean convenciones de oblicuidad
ligeramente distintas. No se ajustaron los datos ni se cambiaron las fechas para
reducir artificialmente el error de la comparación.

Fuentes: [documentación oficial de la API Horizons](https://ssd-api.jpl.nasa.gov/doc/horizons.html)
y [manual de marcos y tiempos de Horizons](https://ssd.jpl.nasa.gov/horizons/manual.html).

## Verificaciones

`node tests/planetas.cjs` comprueba las 32 posiciones frente a JPL, cuaterniones
unitarios y bases ortogonales, polos IAU publicados de Venus/Urano, sentido del
giro de siete planetas, normal subsolar y lado nocturno, fases mediante la ley
del coseno, nueve trayectorias y la expulsión de curvas antiguas de la caché.
Los límites de aceptación posicional son 60 segundos de arco heliocéntricos y
0,04 % de distancia relativa; los errores medidos son los de la tabla.

`node tests/escena-planetas.cjs` recorre esas cuatro fechas y las dos escalas
del visor. Verifica 72 direcciones solares y radios, la órbita lunar relativa a
la Tierra, la visibilidad de trayectorias, reutilización de efemérides al cambiar
de escala, renovación por antigüedad y liberación de la geometría sustituida.
Usa objetos Three.js reales sin crear un contexto WebGL; la apariencia final de
los materiales requiere además la comprobación en navegador.

Una medición local de 1000 llamadas completas a `calculate` tardó 128,6 ms en
Node en este equipo. Es una referencia del coste matemático, no una garantía
de fotogramas por segundo: no incluye GPU, materiales ni composición del visor.
