# Copérnico: terreno lunar con geometría real

La vista **Relieve 3D** representa una región de aproximadamente **200 × 200 km** alrededor de Copérnico, en **9,62° N, 20,08° O**. El nombre y la localización se pueden consultar en el [catálogo de nomenclatura planetaria IAU/USGS](https://planetarynames.wr.usgs.gov/Feature/1296).

Cada vértice tiene una elevación procedente del altímetro LOLA de la sonda LRO. Las montañas y depresiones cambian la forma de la malla, su silueta y las sombras. Se conserva la curvatura de la Luna y **no hay exageración vertical ni montañas generadas aleatoriamente**. La altura no se calcula a partir del brillo de la fotografía.

## Datos y límites

El original es [ldem_16_uint.tif](https://svs.gsfc.nasa.gov/vis/a000000/a004700/a004720/ldem_16_uint.tif), del [NASA CGI Moon Kit](https://svs.gsfc.nasa.gov/4720/), con 5760 × 2880 píxeles. NASA define sus enteros de 16 bits en unidades de medio metro con un desplazamiento de 10 km. El radio de referencia es 1737,4 km. La conversión utilizada es `altura_m = valor / 2 - 10000`.

Créditos: **NASA's Scientific Visualization Studio; Ernie Wright. LRO / LOLA**. El mapa de color procede de LROC y es el mismo que utiliza la esfera lunar. Fuentes y condiciones comerciales completas en [recursos-v02.md](recursos-v02.md) y [textures.md](textures.md). No se ha instalado ningún complemento ni contratado un servicio para esta vista.

La región generada contiene 257 × 257 muestras, 66.049 vértices y 131.072 triángulos. La malla interpola los datos cada unos 781 m; el detalle nativo del DEM es aproximadamente **1,90 km norte-sur y 1,87 km este-oeste** en esta región. La interpolación suaviza las transiciones, pero no inventa detalle adicional. No permite inspeccionar piedras, huellas ni cráteres de unos metros. El mapa de color global tiene menos resolución que la geometría local.

En este recorte, las alturas respecto al radio de referencia van de **−3.567 a +507 m**. Son elevaciones respecto a una esfera de referencia, no respecto al fondo del cráter. El plano tangente de la vista es solo un sistema de coordenadas; la geometría incluye la caída debida a la curvatura lunar.

## Iluminación y navegación

**Luz solar** utiliza la dirección del Sol correspondiente a la fecha de la simulación, expresada en el sistema local del cráter. Si es de noche allí, el terreno se ve oscuro. **Luz de estudio** utiliza una dirección fija y se identifica expresamente: permite examinar el relieve a cualquier hora sin modificar sus alturas ni la fecha. En ese modo no se aplican eclipses a la luz de estudio.

Las sombras entre las montañas se generan con la geometría y una luz direccional. Son una aproximación gráfica con mapa de sombras de 2048 píxeles; pequeños errores o suavizado en los bordes son posibles. Fuera del recorte, el horizonte se aproxima por la esfera lunar y no por montañas remotas. El módulo de eclipses atenúa la luz solar por la Tierra utilizando las coordenadas físicas de cada punto. El tenue relleno y el color de un eclipse total son ayudas de visualización, no radiometría ni predicción del polvo atmosférico.

Arrastrar gira alrededor de la región; la rueda o el gesto de pinza acerca y aleja. El encuadre inicial abarca el recorte. La cámara se mantiene por encima del terreno. Esta escena local usa kilómetros y se dibuja aparte de las esferas del sistema para evitar que una esfera ideal tape el fondo de los cráteres.

## Archivos y regeneración

- `assets/terrain-data.js`: alturas locales en metros y metadatos. JavaScript normal para funcionar también al abrir el HTML con doble clic.
- `assets/build-terrain-data.py`: recorte, interpolación y empaquetado reproducibles. Solo se usa para desarrollar; el visitante no necesita Python.
- `js/terreno.js`: construcción de geometría, coordenadas locales, cámara inicial, luz y sombras.
- `tests/terreno.cjs`: verifica alturas, curvatura, normales, textura, transformación para eclipses y encuadres de escritorio y móvil.

Descargar el TIFF original y ejecutar con Python, NumPy y Pillow instalados:

```text
python assets/build-terrain-data.py --source RUTA/ldem_16_uint.tif
node tests/terreno.cjs
```

El SHA-256 del original empleado es `45a2b32d56e81ed30db07fead8abc842b249b6511219d9ca2c53f81bc2dc5d62`. También se guarda dentro del archivo de datos para identificar exactamente el origen.

La preparación calcula latitud y longitud de cada punto sobre la esfera. Muestrea el TIFF mediante interpolación bilineal, respetando el centro de cada píxel, y redondea el resultado a un metro. En la escena, X apunta al este, Y al cielo y −Z al norte. `bodyFromTerrain` convierte ese sistema al sistema lunar que usa la astronomía. La GPU utiliza coordenadas próximas al origen para conservar precisión.
