2 puntos por GN⁺ 2025-11-01 | 1 comentarios | Compartir por WhatsApp
  • Proyecto que visualiza Atractores extraños (Strange Attractors) con Three.js, mostrando cómo a partir de ecuaciones matemáticas simples se generan patrones complejos y hermosos
  • Explica los conceptos básicos de los sistemas dinámicos (Dynamical Systems) y la teoría del caos (Chaos Theory), centrándose en el estado de un sistema que cambia con el tiempo y en las reglas que determinan su evolución
  • Los atractores extraños se definen por cuatro características: estructura fractal, sensibilidad a las condiciones iniciales, trayectorias no periódicas y orden dentro del caos
  • Muestra el efecto mariposa con una visualización del Thomas Attractor, presentando cómo cambios mínimos en el parámetro a producen patrones completamente distintos
  • Implementa visualización en tiempo real calculando y renderizando eficientemente miles de partículas mediante la técnica de ping-pong rendering basada en GPU

Sistemas dinámicos y teoría del caos

  • Un sistema dinámico es una forma de modelar matemáticamente fenómenos que cambian con el tiempo, e incluye ejemplos variados como el movimiento de los planetas, el crecimiento de la población o el mercado bursátil

    • Está compuesto por el espacio de fases (Phase Space), que representa todos los estados posibles del sistema, y por la dinámica (Dynamics), que lo hace pasar de un estado al siguiente
    • Por ejemplo, en un modelo de crecimiento poblacional, el tamaño de la población y la tasa de crecimiento forman el estado dentro del espacio de fases, mientras que la tasa de natalidad, la tasa de mortalidad y la capacidad de carga del entorno determinan la dinámica
  • La teoría del caos (Chaos Theory) es el campo que estudia sistemas impredecibles, y muchos fenómenos de la naturaleza pertenecen a este tipo de sistemas no lineales y sensibles

    • Explica fenómenos en los que existen reglas, pero la predicción se vuelve imposible debido a información incompleta
    • Una característica representativa es el efecto mariposa, donde pequeñas diferencias en las condiciones iniciales cambian drásticamente el resultado

Atractor (Attractor) y atractor extraño (Strange Attractor)

  • Un atractor (Attractor) es un conjunto de estados hacia el que el sistema converge con el paso del tiempo; por ejemplo, el punto de reposo de un péndulo

    • La convergencia hacia un atractor ocurre por factores como la estabilidad, la disipación de energía (Dissipation) y la contracción (Contraction)
  • Un atractor extraño (Strange Attractor) es un atractor que, debido a ecuaciones no lineales complejas, muestra trayectorias impredecibles y presenta las siguientes características

    1. Estructura fractal: patrones complejos que se repiten a distintas escalas
    2. Sensibilidad a las condiciones iniciales: un pequeño cambio lleva a un resultado completamente distinto
    3. Trayectorias no periódicas: no repite exactamente el mismo recorrido
    4. Orden dentro del caos: aunque parece aleatorio, existe una estructura interna consistente

Efecto mariposa y visualización del Thomas Attractor

  • El efecto mariposa es el fenómeno por el cual un pequeño cambio genera una gran diferencia a largo plazo, y suele explicarse con la metáfora de que “el aleteo de una mariposa en China provoca un huracán en el Caribe”
  • Si se cambia el valor del parámetro a del Thomas Attractor a 0.10, 0.13, 0.19 o 0.21, la trayectoria de las partículas y la forma general cambian por completo
  • Si el estado inicial se cambia entre cube y sphere surface, las partículas siguen rutas distintas, pero al final convergen al mismo estado atractor

Detalles de implementación

  • La visualización usa Three.js para calcular y renderizar directamente en la GPU una gran cantidad de partículas
  • Mediante la técnica de ping-pong rendering, minimiza la transferencia de datos entre CPU y GPU y alterna entre dos frame buffer objects (FBO)
    • Los buffers ping y pong almacenan respectivamente el estado actual y el siguiente
    • El programa de shaders actualiza la posición de cada partícula según las ecuaciones del atractor
    • En cada frame se intercambian los buffers y se renderiza el nuevo estado de las partículas

Referencias y material adicional

  • Como material relacionado se citan la visualización de atractores de Maxim, Wikipedia: Attractor, List of Chaotic Maps y WebGLFundamentals: Ping Pong Rendering
  • También se presentan ejemplos adicionales de visualizaciones 3D de atractores en chaoticatmospheres.com, dynamicmath.xyz y Reddit r/generative
  • Están recibiendo comentarios en la página de GitHub Discussion del blog, con planes de integrarlo al blog más adelante

1 comentarios

 
GN⁺ 2025-11-01
Comentarios de Hacker News
  • Este tipo de visualización de espacio de fases 3D muestra muy bien cuánta información podemos obtener
    Pero al mismo tiempo también hace sentir cuánta riqueza nos estamos perdiendo en mundos de más de 3 dimensiones
    Me pregunto si sería posible visualizar 4D o más viendo secciones 3D, o siguiendo partículas lagrangianas y expresando con color los cambios en el valor D
    Este tipo de visualización me recuerda los primeros días de la mecánica estadística, cuando Boltzmann y Gibbs, entre otros, discutían sobre el espacio de fases y el concepto de equilibrio

    • La conclusión a la que llegué después de ver cosas como Flatland o 4D Toys es que los circuitos neuronales humanos no están diseñados para entender intuitivamente más de 3 dimensiones
      Podemos acercarnos mediante inferencia o comprensión parcial, pero no llegar a captarlo por completo
      De hecho, creo que el pensamiento en 3D en sí mismo es una gran capacidad adaptativa que los humanos recibimos en comparación con otros animales
  • ¡Está increíble! Estaría genial que hubiera una función para ir ajustando los valores de a y b y encontrar cada quien sus propios patrones de atractor extraño (strange attractor)
    Algo como un modo libre también sonaría divertido

    • Soy el autor. Esa función ya está incluida
      En móvil está en la barra de menú inferior, y en escritorio se ve de inmediato
  • Cuando era adolescente, hace unos 25 años, hice por mi cuenta un visualizador de atractores caóticos en 2D
    Pero de pronto pensé: “¿y si en vez de visualizarlo lo renderizo como sonido?”
    Hice corresponder la frecuencia al ángulo y la amplitud a la magnitud, y al manipular directamente el formato WAV aprendí por primera vez el concepto de endianness
    El resultado no era completamente imposible de escuchar, y sonaba como los efectos de computadora en viejas películas de ciencia ficción

  • En la preparatoria jugaba con atractores, casi en la era jurásica
    En ese entonces, con una computadora 486 tardaba de 20 a 30 minutos en dibujar una sola imagen, así que impresiona que ahora sea posible el renderizado 3D en tiempo real
    Esa experiencia influyó mucho en mi forma de pensar en sistemas, como órbitas e inestabilidad

  • Esta visualización me hace pensar en Phong
    https://phong.com/

  • Justo esta semana saqué un proyecto generador de fractales que hice en 2002, cuando iba en 11.º grado de preparatoria, y lo modernicé con la librería gráfica SFML
    https://github.com/gradientwolf/fractals_SFML
    Ver esta publicación me da muchísima alegría. Estos pequeños proyectos me llevan de vuelta a esa época de curiosidad simple y pura de la adolescencia

  • Respecto a eso de “no sé si es una extensión matemáticamente correcta”, en realidad al extender hacia dimensiones superiores no existe una sola respuesta correcta
    Puede haber varias posibilidades, o incluso ninguna
    Aun así, el intento en sí de hacer algo “lo bastante aproximado” resulta interesante
    Por ejemplo, si buscas intentos de crear un Mandelbrot 3D, no hay una respuesta perfecta, pero sí posibilidades muy interesantes

  • Es realmente hermoso. Parece una danza de una bandada de estorninos
    https://www.youtube.com/watch?v=V4f_1_r80RY

  • La forma de explicar la teoría matemática es muy intuitiva y fresca
    Sería realmente interesante que escribiera también sobre otros temas

  • Esta visualización me recuerda el módulo “strange” de xscreensaver