Simulaciones Interactivas de Gravedad N-Cuerpos y Multi-Atractor en el Navegador

Las simulaciones de gravedad N-cuerpos permiten colocar múltiples cuerpos celestes que se atraen entre sí según la mecánica newtoniana y observar en tiempo real las órbitas, colisiones y movimientos caóticos resultantes. Esta guía original explica las ideas centrales — suma de fuerzas, colisiones suaves, rastros que se desvanecen, brillo de cuerpos, presets, controles de cámara y límites de rendimiento — y muestra cómo el Simulador de Gravedad N-Cuerpos en vivo de UtiliHub las implementa.

¿Qué es una simulación N-cuerpos?

En un problema de N-cuerpos cada cuerpo ejerce una fuerza gravitatoria sobre todos los demás. No existe solución analítica cerrada para N mayor que 2, por lo que integramos las ecuaciones de movimiento numéricamente. Cada cuerpo lleva masa, posición y velocidad. En cada paso de tiempo calculamos la fuerza neta sobre cada cuerpo, la convertimos en aceleración y actualizamos velocidad y posición.

Las implementaciones en el navegador ejecutan este bucle dentro de requestAnimationFrame (o un acumulador de paso fijo) para que el movimiento se mantenga fluido e interactivo. Los usuarios pueden añadir cuerpos, cambiar condiciones iniciales, pausar, hacer zoom y compartir el estado inicial exacto mediante URL.

Suma de fuerzas newtonianas

La fuerza gravitatoria entre dos masas puntuales es

F = G · m₁ · m₂ / r²

La dirección es a lo largo de la línea que une los cuerpos. En código trabajamos normalmente con vectores:

aᵢ = Σⱼ≠ᵢ G · mⱼ · (xⱼ − xᵢ) / (|xⱼ − xᵢ|³ + ε)

El parámetro de suavizado ε (o una constante pequeña añadida en el término de distancia) evita que la fuerza se vuelva infinita cuando dos cuerpos ocupan casi la misma posición. Cada cuerpo suma las contribuciones de todos los demás — una operación O(N²) que es perfectamente viable para los números modestos de cuerpos usados en demos interactivas.

El Simulador de Gravedad N-Cuerpos usa exactamente esta suma por pares con un factor de suavizado configurable para que las órbitas permanezcan estables y visualmente interesantes en lugar de explotar en acercamientos cercanos.

Prueba el simulador en vivo

Añade cuerpos, elige presets (estrellas binarias, mini sistema solar, cúmulo caótico, figura-8), haz zoom, pan y comparte la escena.

Abrir Simulador de Gravedad N-Cuerpos

Integración numérica en el navegador

Una vez conocidas las aceleraciones, el simulador debe avanzar posiciones y velocidades. El esquema más simple es Euler hacia adelante:

v ← v + a · Δt
x ← x + v · Δt

Euler es fácil de programar pero puede añadir energía con el tiempo, haciendo que las órbitas espiralen hacia fuera. Una mejor elección práctica para gravedad interactiva es el Euler semi-implícito (simpléctico), que actualiza primero la velocidad y luego usa la nueva velocidad para el paso de posición. Esto conserva mejor una energía cercana y mantiene las órbitas largas más estables con casi ningún coste extra.

Existen Velocity Verlet y métodos de orden superior, pero para demos en tiempo real en el navegador con un límite de ~20 cuerpos el paso de Euler semi-implícito suele ser suficiente. El simulador de UtiliHub usa un paso de tiempo fijo o limitado para que la integración se mantenga estable incluso si baja la tasa de fotogramas, y aplica la repulsión de colisión suave dentro de la misma evaluación de fuerzas antes de la actualización de velocidad.

La deriva numérica es inevitable: el preset figura-8 abandona lentamente su órbita periódica exacta tras muchos minutos. Eso es esperado y educativo — muestra por qué los códigos de astrofísica de producción usan integradores de orden superior y pasos adaptativos, mientras que los juguetes interactivos priorizan la respuesta y la claridad visual.

Energía, estabilidad y la intuición virial

La energía mecánica total E = cinética + potencial. Para un sistema gravitatorio aislado las ecuaciones continuas verdaderas conservan E exactamente. Los esquemas numéricos solo aproximan esa conservación. El Euler semi-implícito mantiene el error acotado durante muchas órbitas, por eso las estrellas binarias y la figura-8 permanecen reconocibles durante minutos de tiempo real.

Una regla práctica útil es la relación virial para un sistema auto-gravitante en equilibrio aproximado: 2·KE + PE ≈ 0. Si lanzas cuerpos con demasiada velocidad el sistema no está ligado (energía total positiva) y todo se separa. Si los empiezas casi en reposo colapsan en un cúmulo compacto de alta velocidad. Los presets integrados se sitúan en el punto medio interesante donde coexisten órbitas ligadas, encuentros cercanos y eyecciones ocasionales.

El suavizado y las colisiones suaves alteran ligeramente el potencial, por lo que la cantidad conservada no es exactamente la energía newtoniana. Es un compromiso deliberado: la simulación permanece visualmente estable e interactiva en lugar de producir singularidades numéricas.

Colisiones suaves

Las colisiones de esferas rígidas requieren detección precisa y resolución de impulsos, lo que puede ser costoso y visualmente abrupto. Las colisiones suaves aproximan el contacto añadiendo una fuerte repulsión de corto alcance (o aumentando temporalmente el suavizado) cuando la distancia entre centros cae por debajo de la suma de radios.

En el simulador, los cuerpos que se solapan reciben una aceleración repulsiva extra proporcional a la profundidad de penetración. Combinada con la atracción gravitatoria habitual, esto produce rebotes de aspecto elástico sin una tubería de colisión separada, manteniendo el código simple y el presupuesto de fotograma predecible.

Rastros que se desvanecen y brillo de cuerpos

Los rastros hacen legibles las trayectorias orbitales. En lugar de almacenar historiales largos de posiciones, el canvas se limpia con un relleno semi-transparente cada fotograma (desvanecimiento alfa). Las posiciones anteriores permanecen visibles unos fotogramas y luego desaparecen, creando el clásico aspecto de “motion blur” de las visualizaciones de gravedad.

El brillo de los cuerpos es un simple degradado radial o círculo aditivo dibujado bajo cada cuerpo. Un resalte especular (un pequeño punto más brillante desplazado hacia una dirección de luz) da a las esferas sensación de volumen. Ambos efectos son operaciones baratas de canvas 2D y se mantienen seguras para CWV incluso en móvil cuando el número de cuerpos está limitado.

Presets y condiciones iniciales interesantes

El simulador incluye varios estados iniciales cuidadosamente elegidos:

  • Estrellas binarias — dos cuerpos de masa igual en órbita circular alrededor de su centro de masa común.
  • Mini sistema solar — un cuerpo central pesado más varios orbitadores más ligeros con velocidades aproximadamente circulares.
  • Cúmulo caótico — muchos cuerpos de masas mixtas y velocidades aleatorias que rápidamente producen encuentros cercanos y eyecciones.
  • Figura-8 — una solución periódica conocida de tres cuerpos (Chenciner–Montgomery) que traza una trayectoria en forma de ocho. Una buena demostración de que no todo problema de tres cuerpos es caótico.

Cada preset se puede cargar al instante y luego modificar. El estado resultante es serializable en la URL para que un enlace compartido reconstruya las condiciones iniciales exactas.

Construir un binario circular a mano

Un binario circular limpio es una excelente forma de entender el equilibrio de fuerzas. Para dos masas iguales M orbitando su centro de masa común a una separación a (cada una a distancia a/2 del CM):

v = sqrt(G · M / a)

Cada cuerpo se mueve perpendicular a la línea que los une, en direcciones opuestas, con esa velocidad. La aceleración centrípeta v² / (a/2) es suministrada exactamente por la aceleración gravitatoria G·M / a².

En el simulador de UtiliHub el preset de estrellas binarias carga esencialmente esta configuración (suavizada ligeramente para comodidad numérica). Puedes recrearlo manualmente: coloca dos cuerpos de masa igual, dales velocidades tangenciales iguales y opuestas de la magnitud correcta, y observa una órbita estable. Si la velocidad es un poco baja la órbita se vuelve elíptica; si es demasiado alta los cuerpos se separan. El suavizado y el paso de tiempo finito hacen que la velocidad circular “perfecta” sea ligeramente distinta de la fórmula newtoniana pura — otro recordatorio educativo de las aproximaciones que aceptamos por interactividad.

Pruébalo y luego compara con el preset de un clic. La diferencia entre “yo afiné los números” y “la biblioteca lo hizo” es exactamente el tipo de insight que esta guía pretende dar.

Afinando G, suavizado, paso de tiempo y escala

El carácter visual de una escena N-cuerpos lo controlan un puñado de parámetros libres. Llevarlos al rango “interesante” es más arte que ciencia exacta, pero unas pocas reglas prácticas mantienen la simulación educativa en lugar de explosiva o congelada.

Constante gravitatoria G. En la física newtoniana pura G es minúscula (~6.67×10⁻¹¹). En una demo de navegador tratamos G como un factor de escala libre. Demasiado pequeña y los cuerpos apenas se mueven; demasiado grande y todo colapsa o se dispara fuera de pantalla en unos fotogramas. Un punto de partida práctico es elegir G para que un binario circular de las masas y separación que pretendes complete una órbita en aproximadamente 2–4 segundos de tiempo real. Los presets del simulador ya incorporan un G que produce esa cadencia.

Suavizado ε. El suavizado redondea la singularidad 1/r². Ajústalo comparable a una fracción del radio típico de cuerpo (o unos pocos píxeles en unidades de mundo). Demasiado pequeño y los encuentros cercanos producen picos enormes que el integrador no puede manejar; demasiado grande y la fuerza se vuelve casi constante a corto alcance, haciendo los cuerpos “pegajosos” y las órbitas excesivamente circulares. Las colisiones suaves y el suavizado trabajan juntos — la repulsión entra en acción antes de que la gravedad suavizada pura se vuelva extrema.

Paso de tiempo Δt. El paso de Euler semi-implícito necesita un Δt lo bastante pequeño para que el movimiento orbital o de colisión más rápido se resuelva en varios pasos. Si baja la tasa de fotogramas, el simulador limita el Δt efectivo para que la energía no explote. En la práctica un Δt fijo de 1/60 s (o ligeramente mayor cuando la escena está tranquila) es un buen valor por defecto. Los pasos adaptativos son posibles pero añaden complejidad que los juguetes interactivos suelen omitir.

Escala del mundo. Posiciones, velocidades y radios deben ser consistentes. Si colocas cuerpos a decenas de unidades pero les das velocidades medidas en píxeles, el movimiento se ve mal. El deep-link por URL y los presets mantienen todo en las mismas unidades internas; cuando construyes una escena a mano, mantén los números en el mismo orden de magnitud que los presets que ya te gustan.

Errores comunes: (1) velocidades que hacen la energía total fuertemente positiva → dispersión inmediata; (2) suavizado mucho más pequeño que los radios de cuerpo → explosiones numéricas en el primer contacto; (3) Δt demasiado grande respecto al periodo orbital → órbitas que espiralizan o precesan de forma salvaje. Los presets integrados evitan los tres, por eso cargar uno y luego ajustar es la forma más rápida de aprender los compromisos.

Cámara: zoom, pan y pellizco

Una transformación mundo-a-pantalla permite explorar sistemas grandes. El zoom se aplica con la rueda del ratón o el gesto de pellizco; el pan es un arrastre. La transformación se almacena como escala y desplazamiento y se aplica tanto al proyectar posiciones de cuerpos para dibujar como al convertir coordenadas de puntero de vuelta al espacio mundo para añadir nuevos cuerpos.

Atajos de teclado (Espacio para pausar, R para resetear cámara, C para limpiar, +/− para zoom) hacen la experiencia usable sin ratón. Todo esto está implementado en el simulador en vivo.

Límites de rendimiento y Core Web Vitals

La gravedad N-cuerpos interactiva es O(N²) por fotograma. El simulador por tanto limita el número de cuerpos (típicamente alrededor de 20) para que la actualización se mantenga bien por debajo de 16 ms en dispositivos de gama media. El canvas se carga de forma perezosa en su propia ruta, nunca se importa en la página de inicio, y usa un contenedor de relación de aspecto fija para evitar cambios de diseño.

Los rastros usan un único clear semi-transparente en lugar de arrays de historial por cuerpo. El brillo y los resaltes especulares se dibujan con unas pocas llamadas a canvas. El resultado es una experiencia visualmente rica que no regresa el CWV móvil.

Cómo el Simulador de Gravedad N-Cuerpos de UtiliHub implementa estas ideas

El componente mantiene un array de objetos cuerpo (masa, posición, velocidad, color, radio). Cada fotograma de animación:

  1. Calcula aceleraciones gravitatorias por pares con suavizado.
  2. Añade repulsión de colisión suave cuando los cuerpos se solapan.
  3. Integra velocidad y posición con un paso de tiempo fijo o limitado (estilo Euler semi-implícito).
  4. Aplica la transformación de cámara y dibuja rastros (clear con fade) + cuerpos brillantes con resaltes especulares.

Presets, zoom/pan, controles de teclado, exportación PNG (con título y branding horneados) y deep-linking por URL de condiciones iniciales forman parte de la misma superficie. Las rutas en inglés y español se mantienen sincronizadas.

Gravedad mutua versus atractores fijos

El simulador N-cuerpos trata cada cuerpo como fuente y objetivo de la gravedad: la fuerza sobre el cuerpo i depende de las posiciones actuales de todos los demás cuerpos, y esas posiciones cambian cada fotograma. Este acoplamiento mutuo es lo que produce el caos clásico de tres cuerpos, las eyecciones y la delicada figura-8.

Por contraste, muchos playgrounds de partículas (por ejemplo Partículas de gravedad) colocan un pequeño número de atractores fijos y dejan que miles de partículas ligeras o sin masa respondan a ellos. Los atractores no se mueven, por lo que el campo de fuerzas es estático desde el punto de vista de las partículas. El cálculo baja de O(N²) a O(N·M) donde M es el número de atractores, permitiendo conteos de partículas mucho mayores y hermosas cintas fluidas o efectos tipo aurora.

Ambos enfoques son útiles. El N-cuerpos mutuo enseña leyes de conservación, mecánica orbital y los límites de la integración numérica. Los sistemas de atractores fijos son mejores para exploración visual pura y composición dirigida por el usuario. La colección de UtiliHub los mantiene en rutas separadas para que cada uno pueda permanecer ligero y enfocado.

Si quieres sentir la diferencia, abre el Simulador de Gravedad N-Cuerpos, carga el cúmulo caótico, luego visita el playground de Partículas de gravedad y arrastra unos pocos atractores. El primero es un sistema dinámico; el segundo es una herramienta de pintura con campos de fuerza.

Preguntas frecuentes

¿Por qué a veces los cuerpos se separan volando? Si las velocidades iniciales son demasiado altas respecto a las masas, el sistema no está ligado. Los presets están afinados para mantenerse interesantes; siempre puedes bajar velocidades o aumentar masas.

¿El preset figura-8 es exacto? Usa las condiciones iniciales bien conocidas de la solución figura-ocho de Chenciner–Montgomery. La integración numérica introduce una pequeña deriva a lo largo del tiempo, pero la trayectoria característica es claramente visible.

¿Por qué la energía crece o disminuye lentamente? La mayoría de los integradores simples no son perfectamente simplécticos. El Euler semi-implícito mantiene el error acotado durante muchas órbitas, pero a lo largo de minutos de tiempo real verás pequeñas derivas — una demostración honesta de la aproximación numérica.

¿Algo se ejecuta en un servidor? No. Toda la integración, el dibujo y la generación de PNG ocurren en el navegador. Compartir una URL solo comparte los parámetros.

¿Puedo reproducir un enlace compartido? Sí. La URL codifica las masas, posiciones, velocidades y colores iniciales. Abrir el enlace restaura la configuración inicial exacta antes de que comience la integración.

¿Por qué está limitado el número de cuerpos? La evaluación de fuerzas por pares es O(N²). Limitar a unos 20 cuerpos mantiene el tiempo de fotograma cómodo en móviles y aun así permite dinámicas multi-cuerpo ricas.

¿Qué hace realmente el parámetro de suavizado? Sustituye la verdadera singularidad 1/r² por un potencial redondeado que permanece finito en r = 0. Un suavizado pequeño mantiene los encuentros cercanos dramáticos; un suavizado mayor hace el sistema más “pegajoso” y menos explosivo. El simulador elige un valor que se ve bien con los radios de cuerpo usados para las colisiones suaves.

¿En qué se diferencia del playground de Partículas de gravedad? En N-cuerpos cada masa atrae a todas las demás y todos los cuerpos se mueven. En Partículas de gravedad los atractores están fijos (o controlados por el usuario) y las partículas suelen ser respondedoras sin masa. El lenguaje visual puede parecer similar (rastros, brillo) pero la física subyacente y el presupuesto de rendimiento son distintos.

Experiencias relacionadas

Conclusión

Las simulaciones de gravedad N-cuerpos convierten un corto bucle de integración numérica en una experiencia atractiva y compartible. Al combinar suma newtoniana suavizada, colisiones suaves, rastros que se desvanecen, brillo de cuerpos y presets cuidadosamente elegidos, el navegador puede albergar dinámicas celestes sorprendentemente ricas sin dependencias pesadas ni cálculo del lado del servidor.

Abre el Simulador de Gravedad N-Cuerpos en vivo, prueba los presets y experimenta con tus propias condiciones iniciales. Todo se ejecuta del lado del cliente.