Atractores extraños (Strange Attractors)
(blog.shashanktomar.com)- 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
aproducen 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
- Estructura fractal: patrones complejos que se repiten a distintas escalas
- Sensibilidad a las condiciones iniciales: un pequeño cambio lleva a un resultado completamente distinto
- Trayectorias no periódicas: no repite exactamente el mismo recorrido
- 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
adel 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
cubeysphere 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
pingypongalmacenan 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
- Los buffers
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
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
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
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
Por ejemplo Hypster by Nonlinear Circuits y Orbit 3 by Joranalogue, y es muy divertido cómo añaden al sonido movimientos impredecibles pero periódicos
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
https://fractint.org/
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