Atratores Estranhos (Strange Attractors)
(blog.shashanktomar.com)- Projeto que visualiza atratores estranhos (Strange Attractors) com Three.js, mostrando como padrões complexos e belos são gerados a partir de equações matemáticas simples
- Explica os conceitos básicos de sistemas dinâmicos (Dynamical Systems) e teoria do caos (Chaos Theory), com foco no estado de um sistema que muda ao longo do tempo e nas regras que determinam sua evolução
- Atratores estranhos são definidos por quatro características: estrutura fractal, sensibilidade às condições iniciais, trajetórias aperiódicas e ordem dentro do caos
- Mostra o efeito borboleta por meio da visualização do Thomas Attractor, apresentando como pequenas mudanças no parâmetro
acriam padrões completamente diferentes - Implementa visualização em tempo real ao calcular e renderizar milhares de partículas com eficiência usando a técnica de ping-pong rendering baseada em GPU
Sistemas dinâmicos e teoria do caos
-
Sistemas dinâmicos são uma forma de modelar matematicamente fenômenos que mudam com o tempo, incluindo exemplos como movimento dos planetas, crescimento populacional e mercado de ações
- São compostos pelo espaço de fases (Phase Space), que representa todos os estados possíveis do sistema, e pela dinâmica (Dynamics), que desloca o sistema de um estado para o próximo
- Por exemplo, em um modelo de crescimento populacional, o tamanho da população e a taxa de crescimento formam os estados no espaço de fases, enquanto taxa de natalidade, taxa de mortalidade e capacidade de suporte ambiental determinam a dinâmica
-
Teoria do caos (Chaos Theory) é o campo que estuda sistemas imprevisíveis, e muitos fenômenos naturais pertencem a esses sistemas não lineares e sensíveis
- Explica situações em que existem regras, mas a previsão se torna impossível por causa de informações incompletas
- Uma característica representativa é o efeito borboleta, em que pequenas diferenças nas condições iniciais alteram drasticamente o resultado
Atrator (Attractor) e atrator estranho (Strange Attractor)
-
Um atrator (Attractor) é um conjunto de estados para os quais o sistema converge com o passar do tempo; por exemplo, o ponto de repouso de um pêndulo
- A convergência para um atrator ocorre por fatores como estabilidade, dissipação de energia (Dissipation) e contração (Contraction)
-
Um atrator estranho (Strange Attractor) é um atrator que apresenta trajetórias imprevisíveis devido a equações não lineares complexas, com as seguintes características
- Estrutura fractal: padrões complexos que se repetem em diferentes escalas
- Sensibilidade às condições iniciais: pequenas mudanças levam a resultados completamente diferentes
- Trajetórias aperiódicas: não repetem o mesmo caminho
- Ordem dentro do caos: embora pareça aleatório, existe uma estrutura interna consistente
Efeito borboleta e visualização do Thomas Attractor
- O efeito borboleta é o fenômeno em que pequenas mudanças produzem grandes diferenças no longo prazo, frequentemente explicado pela metáfora de que “o bater de asas de uma borboleta na China provoca um furacão no Caribe”
- Ao alterar o valor do parâmetro
ado Thomas Attractor para 0.10, 0.13, 0.19, 0.21 etc., as trajetórias das partículas e a forma geral mudam completamente - Ao mudar o estado inicial entre
cubeesphere surface, as partículas seguem caminhos diferentes, mas acabam convergindo para o mesmo estado de atrator
Detalhes de implementação
- A visualização usa Three.js para calcular e renderizar diretamente na GPU um grande número de partículas
- Com a técnica de ping-pong rendering, minimiza a transferência de dados entre CPU e GPU usando alternadamente dois objetos de framebuffer (FBO)
- Os buffers
pingepongarmazenam, respectivamente, o estado atual e o próximo estado - Um programa de shader atualiza a posição de cada partícula de acordo com a equação do atrator
- A cada frame, os buffers são alternados e o novo estado das partículas é renderizado
- Os buffers
Referências e materiais adicionais
- Como materiais relacionados, são citados visualizações de atratores de Maxim, Wikipedia: Attractor, List of Chaotic Maps e WebGLFundamentals: Ping Pong Rendering
- Como exemplos adicionais, são apresentados casos de visualização 3D de atratores em chaoticatmospheres.com, dynamicmath.xyz e Reddit r/generative
- O autor está recebendo feedback na página GitHub Discussion do blog, com integração ao blog prevista para o futuro
1 comentários
Comentários no Hacker News
Esse tipo de visualização de espaço de fase em 3D mostra bem o quanto de informação conseguimos extrair
Mas, ao mesmo tempo, dá a sensação de quanto da riqueza de mundos com mais de três dimensões estamos deixando passar
Fico me perguntando se daria para visualizar 4D ou mais vendo seções 3D, ou seguindo partículas lagrangianas e usando cores para representar mudanças no valor de D
Essas visualizações me fazem lembrar os primórdios da mecânica estatística, quando Boltzmann e Gibbs debatiam espaço de fase e o conceito de equilíbrio
Podemos chegar lá por inferência ou por uma compreensão parcial, mas não conseguimos apreender isso por completo
Na verdade, acho que o próprio pensamento em 3D já é uma grande capacidade adaptativa dada aos humanos em comparação com outros animais
Muito legal! Seria ótimo se houvesse um recurso para ajustar os valores de a e b e encontrar seus próprios padrões de atratores estranhos (strange attractors)
Um modo livre também pareceria divertido
No celular, fica na barra de menu inferior; no desktop, está logo visível
Na adolescência, uns 25 anos atrás, eu mesmo fiz um visualizador de atratores caóticos em 2D
Aí me ocorreu: “e se, em vez de visualizar isso, eu renderizasse em som?”
Associei frequência ao ângulo e amplitude à magnitude, e foi assim que aprendi pela primeira vez o conceito de endianness ao lidar diretamente com o formato WAV
O resultado não era totalmente impossível de ouvir; soava como efeitos sonoros de computador de filmes antigos de ficção científica
Por exemplo, Hypster by Nonlinear Circuits e Orbit 3 by Joranalogue, que são muito divertidos por adicionar movimentos imprevisíveis, mas periódicos, ao som
No ensino médio, quase na era jurássica, eu brincava com atratores
Na época, um 486 levava de 20 a 30 minutos para desenhar uma imagem, então é impressionante que hoje seja possível fazer renderização 3D em tempo real
Essa experiência teve grande influência no meu pensamento sistêmico sobre órbitas, instabilidade e coisas do tipo
https://fractint.org/
Essa visualização me faz pensar em Phong
https://phong.com/
Por coincidência, esta semana eu peguei meu projeto gerador de fractais que fiz em 2002, no penúltimo ano do ensino médio, e o modernizei com a biblioteca gráfica SFML
https://github.com/gradientwolf/fractals_SFML
Ver este post me deixa realmente feliz. Projetinhos assim me levam de volta àquela fase simples e pura de curiosidade da adolescência
Sobre a frase “não sei se é uma extensão matematicamente correta”, na prática não existe uma única resposta certa para extensões em dimensões mais altas
Pode haver várias possibilidades, ou talvez nenhuma
Ainda assim, a tentativa de chegar a algo ‘bom o bastante’ já é interessante por si só
Por exemplo, se você procurar as tentativas de criar um Mandelbrot 3D, não existe uma solução perfeita, mas há possibilidades muito interessantes
É realmente lindo. Parece uma murmuração de estorninhos
https://www.youtube.com/watch?v=V4f_1_r80RY
A forma como a teoria matemática foi explicada é muito intuitiva e original
Seria muito interessante se escrevessem também sobre outros temas
Essa visualização me faz lembrar o módulo “strange” do xscreensaver