Este projeto é um simulador de gravidade que utiliza o algoritmo de Barnes-Hut para calcular as forças gravitacionais entre corpos. O simulador é implementado em Python usando a biblioteca Pygame para renderização gráfica.
- Simulação de corpos celestes com gravidade.
- Utilização do algoritmo de Barnes-Hut para otimizar os cálculos gravitacionais.
- Adição de novos corpos com clique do mouse.
- Visualização das forças atuando em cada corpo.
- Body: Representa cada objeto na simulação. Contém métodos para atualizar a posição, aplicar gravidade, verificar colisões e desenhar o corpo na tela.
- QuadTree: Utilizada para dividir o espaço e aplicar o algoritmo de Barnes-Hut. Contém métodos para inserir corpos, subdividir o espaço e calcular a gravidade.
A função main() inicializa a simulação, cria corpos aleatórios e gerencia o loop principal do Pygame. Dentro do loop, a função:
- Processa eventos do Pygame (como cliques do mouse).
- Calcula as forças gravitacionais usando a QuadTree.
- Verifica colisões e mescla corpos se necessário.
- Atualiza as posições dos corpos e redesenha a tela.
- Certifique-se de ter o Python e a biblioteca Pygame instalados.
- Execute o script
app.py:
python app.py- A simulação será iniciada e você poderá adicionar novos corpos clicando e arrastando o mouse.
- Python 3.x
- Pygame
Você pode instalar o Pygame usando pip:
pip install pygame- Clique e arraste: Adiciona um novo corpo com velocidade inicial baseada no movimento do mouse.
Sinta-se à vontade para contribuir com melhorias ou novas funcionalidades. Para isso, faça um fork deste repositório, crie uma branch para suas alterações e envie um pull request.
Este projeto está licenciado sob a MIT License.