https://github.com/jonatasperaza/gavity_simulator
Simulador de Gravidade - Algoritmo de Barnes-Hut
https://github.com/jonatasperaza/gavity_simulator
barnes-hut-algorithm barnes-hut-simulation gravity pygame python simulation
Last synced: 11 months ago
JSON representation
Simulador de Gravidade - Algoritmo de Barnes-Hut
- Host: GitHub
- URL: https://github.com/jonatasperaza/gavity_simulator
- Owner: jonatasperaza
- License: mit
- Created: 2024-12-20T02:10:02.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-12-20T02:11:08.000Z (over 1 year ago)
- Last Synced: 2025-07-03T13:59:35.812Z (12 months ago)
- Topics: barnes-hut-algorithm, barnes-hut-simulation, gravity, pygame, python, simulation
- Language: Python
- Homepage:
- Size: 4.88 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Simulador de Gravidade - Algoritmo de Barnes-Hut
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.
## Funcionalidades
- 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.
## Estrutura do Código
### Classes Principais
- **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.
### Função Principal
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:
1. Processa eventos do Pygame (como cliques do mouse).
2. Calcula as forças gravitacionais usando a QuadTree.
3. Verifica colisões e mescla corpos se necessário.
4. Atualiza as posições dos corpos e redesenha a tela.
## Como Executar
1. Certifique-se de ter o Python e a biblioteca Pygame instalados.
2. Execute o script `app.py`:
```bash
python app.py
```
3. A simulação será iniciada e você poderá adicionar novos corpos clicando e arrastando o mouse.
## Requisitos
- Python 3.x
- Pygame
## Instalação do Pygame
Você pode instalar o Pygame usando pip:
```bash
pip install pygame
```
## Controles
- **Clique e arraste**: Adiciona um novo corpo com velocidade inicial baseada no movimento do mouse.
## Contribuição
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.
## Licença
Este projeto está licenciado sob a [MIT License](LICENSE.txt).