Catalejo: anatomía de un planetario
Catalejo es un planetario interactivo que escribí en Punk, mi propio lenguaje (que transpila a C y dibuja con Raylib). Renderiza el cielo real a partir de 28 catálogos astronómicos —estrellas, cúmulos, galaxias, nebulosas y todo el medio interestelar— más el Sistema Solar calculado con efemérides JPL y más de mil millones de objetos del Minor Planet Center. Lo proyecta con coordenadas reales (ecuatoriales, alt-azimutales, eclípticas y galácticas), con el color físico de cada estrella, control del tiempo, magnitudes y etiquetas ajustables, y las figuras clásicas de las constelaciones. Y, sobre el mapa vectorial, puede superponer imágenes fotográficas reales del cielo (DSS2 del CDS).
Todo se maneja desde una barra de comandos (56 órdenes), se puede guionizar con Rumbo —un mini-lenguaje con variables, condicionales y bucles para grabar recorridos por el cielo— y exportar a SVG vectorial hasta 8K, capturas PNG o PDF. Esto es lo que hay dentro.
- 28 catálogos
- 1.326.955+ objetos catalogados
- ~70 módulos de render
- + ~905 Millones fuentes Gaia DR3 en tiles
Capturas
Tres shots reales de Catalejo — el nombre del archivo lleva su RA · Dec ·
fecha, como los genera el comando shot. Se ven mucho mejor a
pantalla completa: haz clic en cualquiera para ampliarla.
Los catálogos que se renderizan
28 catálogos curados a mano, cada uno con su referencia científica. Los marcados como tiles son surveys gigantes que se sirven por región del cielo.
6 catálogos de Estrellas
-
bsc9 096 objetosYale Bright Star Catalog V/50
Las estrellas brillantes visibles a simple vista; el catálogo de referencia clásico.
Hoffleit & Warren 1991 · hasta mag 7.1
-
hip117 955 objetosHipparcos I/311
Astrometría de precisión de la misión Hipparcos: posiciones, distancias y movimientos.
van Leeuwen 2007 · paralajes mejoradas
-
cns55 907 objetosNearby Stars CNS5
Las estrellas más cercanas al Sol, dentro de 25 pársecs (la vecindad solar).
Golovin+ 2023 · J/A+A/670/A19
-
gaia3~905 millones objetosGaia DR3 (bins de magnitud G)
El mapa más detallado de la Vía Láctea, de la misión Gaia; servido en tiles por magnitud.
Gaia Collaboration 2022 · tiles binarios
-
carbon3 546 objetosCarbon Stars LAMOST DR7
Estrellas ricas en carbono, evolucionadas, identificadas por su espectro con LAMOST.
Ji+ 2024 · J/ApJS/271/12
-
gcvs58 200 objetosVariables GCVS 5.1
Estrellas variables: las que cambian de brillo con el tiempo.
Samus+ 2017 · B/gcvs
4 catálogos de Cúmulos
-
hao3 794 objetosOpen Clusters Hao+ 2022
Cúmulos abiertos (grupos jóvenes de estrellas) identificados con datos de Gaia.
identificados con Gaia EDR3
-
dias2 167 objetosOpen Clusters Dias 2014
Cúmulos abiertos visibles ópticamente y candidatos.
Dias+ 2002–2015 · B/ocl
-
youngcl272 objetosNearby Young Star Clusters
Cúmulos estelares jóvenes y cercanos, a menos de 500 pársecs.
Swiggum+ 2024 · Nature 631.49
-
gaiagcl170 objetosGlobular Clusters Gaia EDR3
Cúmulos globulares: densas bolas de estrellas antiguas que orbitan la galaxia.
Vasiliev & Baumgardt 2021
7 catálogos de Galaxias
-
ngc13 957 objetosNGC/IC NI2023
El catálogo clásico de cielo profundo: nebulosas, cúmulos y galaxias.
Verheijen & Trager 2023
-
pgc983 261 objetosHyperLeda VII/237
Una base de datos enorme de galaxias, cada una con su tamaño angular.
Makarov+ 2014
-
evcc1 589 objetosExtended Virgo Cluster Catalog
Las galaxias del cúmulo de Virgo, en su versión extendida.
Kim+ 2014 · J/ApJS/215/22
-
pcc5 437 objetosPerseus Cluster Catalog
Las galaxias del cúmulo de Perseo.
Wittmann+ 2019
-
glxsc~58 objetosSupercúmulos J/A+A/656/A144
Supercúmulos: las mayores estructuras del universo local (z ≤ 0,03).
Böhringer+ 2021
-
desi540 432 objetosDESI Galaxy Clusters
Cúmulos de galaxias detectados en los sondeos de imagen DESI (z ≤ 1).
Zou+ 2021 · J/ApJS/253/56 · tiles
-
pngal32 035 objetosNebulosas Planetarias Gaia DR3
Nebulosas planetarias (cáscaras de gas de estrellas moribundas), afinadas con Gaia.
González-Santamaría+ 2021
11 catálogos de Medio interestelar
-
hii1 442 objetosRegiones HII J/A+A/397/213
Regiones HII: nubes de hidrógeno ionizado donde nacen estrellas.
Paladini+ 2003 · catálogo de síntesis
-
southii1 317 objetosSouthern HII Wenger+ 2021
Regiones HII del hemisferio sur (sondeo de descubrimiento).
Wenger+ 2021 · J/ApJS/254/36
-
wise_hii8 399 objetosWISE HII Anderson+ 2014
Regiones HII de todo el plano galáctico, vistas en infrarrojo por WISE.
Anderson+ 2014 · J/ApJS/212/1
-
dark2mass7 614 objetosDark Clouds 2MASS
Nubes oscuras de polvo que tapan la luz de las estrellas de detrás.
Dobashi 2011 · fotometría J-band
-
irdcpari18 845 objetosIRDCs Pari+ 2020
Nubes oscuras infrarrojas: frías y densas, las semillas de la formación estelar.
Peretto & Fuller / Pari+ 2020
-
molclouds567 objetosNubes Moleculares 439/351
Grandes nubes de gas molecular (trazado por CO), las fábricas de estrellas.
Chen+ 2020 · J/MNRAS/493/351
-
frmreg66 887 objetosStar-Forming Regions V/112A
Regiones de la galaxia donde se están formando estrellas.
Avedisova 2002 · V/112A
-
msxirdc10 931 objetosMSX IRDC J/ApJ/639/227
Nubes oscuras infrarrojas candidatas, vistas por el satélite MSX (8,3 µm).
Simon+ 2006
-
mwpbub2 600 objetosMW Bubbles J/MNRAS/488/1141
Burbujas IR sopladas por estrellas masivas en el plano galáctico (Milky Way Project DR2).
Jayasinghe+ 2019 · Spitzer GLIMPSE/MIPSGAL
-
mwpbow599 objetosMW Bowshocks J/MNRAS/488/1141
Bowshocks: ondas de choque de estrellas que cruzan el medio interestelar.
Jayasinghe+ 2019 · candidatos DR2
-
snr310 objetosRemanentes de Supernova VII/297
Remanentes de supernova: los restos en expansión de estrellas que explotaron.
Green 2025 · JApA 46,14
Sistema Solar
Los planetas no son catálogos: sus posiciones se calculan con efemérides JPL (kernels SPICE) para cualquier fecha. Los cuerpos menores sí son catálogos orbitales del Minor Planet Center.
-
MPC~1 540 000 objetosAsteroides (MPCORB, todos)
-
MPC41 693 objetosNear-Earth Asteroids (NEA)
-
MPC2 533 objetosPotentially Hazardous (PHA)
-
MPC~4 600 objetosCometas (todos)
-
MPC~1 950 objetosCometas visibles ahora
-
MPC6 992 objetosTrans-Neptunian Objects (TNO)
Estrategia de renderizado
Cómo se pasa de una tabla de coordenadas a un cielo dibujado en pantalla.
-
Punk → C → Raylib
Toda la app está escrita en Punk, mi lenguaje, que transpila a C. El dibujado real lo hace Raylib, y los arrays de puntos viven en memoria estática de C para no recrearlos cada frame.
-
Proyección estereográfica
Cada objeto pasa de coordenadas ecuatoriales (ascensión recta / declinación) a píxeles con una proyección estereográfica. Los puntos que caen detrás del hemisferio visible se descartan antes de dibujar.
-
Cuatro sistemas de coordenadas
Rejillas conmutables: ecuatorial, horizontal (alt-azimutal, lo que ves desde un sitio y hora), eclíptica y galáctica. Convertir entre ellas es pura trigonometría esférica.
-
Nivel de detalle por magnitud
A cada catálogo se le pone una magnitud límite que sube o baja con el zoom (FOV = 2·atan(1/zoom)). Al alejar, solo se pintan los objetos brillantes; al acercar, aparecen los débiles.
-
Binarios y tiles
Los catálogos grandes se preprocesan a formato binario (.bin) para cargarlos al instante. Los surveys gigantes —Gaia DR3, DESI— se sirven en tiles por región: solo se lee la porción de cielo que estás mirando.
-
Planetas con efemérides JPL
El Sol, la Luna y los planetas no son catálogos: sus posiciones se calculan con las efemérides de la NASA/JPL (kernels SPICE DE421 y satélites), para una fecha y hora cualesquiera.
-
Sectores fotográficos reales (render / HiPS)
El comando render (tecla [R] con el modo Glass activo) descarga una imagen fotográfica real del campo que estás mirando —el sondeo DSS2 en color, servido por el CDS de Estrasburgo vía HiPS/hips2fits— y la superpone como un sector encima del mapa vectorial. [C] lo cancela.
Control visual
Todo se enciende, apaga y ajusta en vivo desde la barra de comandos.
Líneas y overlays
Conmutables uno a uno: líneas de constelación (const), bordes IAU (borders), rejilla (grid), ecuador y rejilla galácticos (galeq, galgrid), M31/M33 y el buscador Telrad.
Figuras de constelación
El arte clásico de las constelaciones según el atlas de Hevelius (1690), superpuesto como figuras sobre las estrellas.
Color físico real
Una paleta HSL dinámica para los overlays, y para cada estrella su color real: derivado del índice B-V (y V-I en las frías), convertido de XYZ a sRGB (D65). El cielo sale con sus colores de verdad.
Etiquetas flexibles
Cada capa tiene su propio límite de magnitud para etiquetas (label <capa> N), independiente del de los puntos, más un tamaño angular mínimo (size). Tú decides cuántos nombres aparecen y cuándo.
Comandos
Todo se controla desde la barra de comandos (se abre con /). Una idea
clave: los nombres de los catálogos (bsc, hip,
ngc…) no son comandos, son capas; los
comandos de verdad son los verbos (on, mag,
label…) que se aplican a esas capas. Busca por nombre
o por lo que hace.
31 comandos
-
goto RA DecSalta a unas coordenadas (RA en horas, Dec en grados). Navegación -
goto <constel>Salta al centro de una constelación (abreviatura IAU, p. ej. ori). Navegación -
center <cuerpo>Centra el Sol, la Luna o un planeta. Navegación -
slide[:G] <destino>El mismo salto, pero animado. Navegación -
zoom N° | +N° | -N°Campo de visión absoluto o relativo. Navegación -
slidezoom[:F] N°Zoom cinético hasta el FOV indicado. Navegación -
move up|down|left|right NDesplaza la vista N pasos. Navegación -
horizonMuestra u oculta el horizonte alt-azimutal. Navegación -
time nowSalta al instante real actual. Tiempo -
time live on|offSincroniza el reloj con el del sistema. Tiempo -
time play on|offAnima el tiempo cuadro a cuadro. Tiempo -
time real on|offAvance en tiempo real (1 s = 1 s). Tiempo -
time track on|offMantiene el objeto centrado mientras avanza. Tiempo -
(tecla numérica)Sostenida, multiplica la velocidad de la animación. Tiempo -
<capa> on | off | toggleEnciende, apaga o conmuta una capa de catálogo. <capa> es cualquiera de los nombres de abajo. Sobre las capas -
mag <capa> N | +N | -NMagnitud límite de la capa: al alejar, solo se ven los objetos brillantes. Sobre las capas -
label <capa> N | +N | -NMagnitud límite de las etiquetas de la capa. Sobre las capas -
size <capa> N | +N | -NTamaño angular mínimo para que la capa se muestre (p. ej. pgc, gaiagcl). Sobre las capas -
sp bsc O|B|A|F|G|K|M on|offFiltra una capa por tipo espectral (solo BSC). Sobre las capas -
labelsize NTamaño de fuente de las etiquetas. Sobre las capas -
stars on | offInterruptor maestro de todas las capas de estrellas. Sobre las capas -
planets on | offInterruptor maestro de los planetas. Sobre las capas -
viewmode night|print|blackFondo nocturno, blanco (para imprimir) o negro. Pantalla -
panelMuestra u oculta el panel lateral. Pantalla -
glassActiva el modo Glass (lupa) para pedir imágenes reales del cielo. Imagen real -
render — [R] (con Glass)Descarga un sector fotográfico real del campo: DSS2 color del CDS (HiPS) y lo superpone. Imagen real -
[C] (con Glass)Cancela / quita el último sector fotográfico cargado. Imagen real -
shotCaptura PNG (nombrada con RA · Dec · fecha). Exportar y scripts -
svg NExporta SVG vectorial de N×1024 px (hasta 8K). Exportar y scripts -
run <script>Ejecuta un guion de Rumbo (.s). Exportar y scripts -
shutdownCierra la app (útil al final de un guion). Exportar y scripts
Las capas (a las que aplicas los comandos)
Estos son los nombres de capa. Por ejemplo: bsc on,
mag hip 6, label ngc 9, mars on.
Estrellas
stars · bsc · hip · cns · carbon · gcvs · gaia3 · gaia3live · xiang
Cielo profundo
ngc · pgc · galaxy · glxsc · desi · gaiagcl · pngal3 · haocl · diasocl · youngcl
Medio interestelar
milky · hii · southii · wisehii · mwpbub · mwpbow · dark2mass · irdcpari · molclouds · dust · frmreg · msxirdc · snr
Líneas y overlays
const · borders · grid · galeq · galgrid · m31 · m33 · telrad
Sistema Solar
sun · moon · mercury · venus · mars · jupiter · saturn · uranus · neptune · pluto · planets
MPC
comets · curcomets · allaster · nea · pha · tno · minorplanets
Rumbo: el lenguaje de tours
Catalejo se puede guionizar con Rumbo, un mini-lenguaje de
líneas numeradas (estilo BASIC). No es solo una lista de comandos: tiene
variables (set), condicionales
(if) y transferencias (jumpline), así
que con if + jumpline puedes montar bucles.
Un guion se lanza con run <archivo>.
10 set n 0
20 slide jupiter
30 wait animation
40 shot
50 set n n+1
60 if n < 5 jumpline 20
70 shutdown Exportar y generar datos
SVG vectorial hasta 8K
El comando svg N exporta las capas visibles a un SVG vectorial de N×1024 px de ancho — hasta 8×1024 = 8192 px (8K). Al ser vectorial no pierde nitidez al ampliar, y reproduce tanto el fondo HiPS como cada capa.
Capturas (shots)
El comando shot guarda un PNG de la pantalla, nombrado con la ascensión recta, la declinación y la fecha. Con viewmode print el fondo se vuelve blanco para imprimir o exportar.
Render a PDF
Punk trae su propio backend de PDF (PDF 1.4 en C puro, sin dependencias externas): páginas A4, las 14 fuentes estándar, imágenes JPEG y Markdown básico. El cielo puede acabar en un documento imprimible.
Generación de datos binarios
Los catálogos en bruto (Hipparcos, MPCORB, HyperLeda…) se preprocesan con scripts de Python (hip_to_bin, mpcorb_to_bin, pgc_to_bin) a un formato binario compacto, para que Catalejo los cargue al instante en vez de parsear millones de líneas de texto.