@terminalroot Gravidade de Partículas com C++ e SFML https://terminalroot.com.br/2025/04/gravidade-de-particulas-com-cpp-e-sfml.html
♬ Speed - Monge
#include <SFML/Graphics.hpp>
#include <cmath>
struct Particle {
sf::Vector2f position;
sf::Vector2f velocity;
float radius = 2.f;
Particle(float x, float y){
position = {x, y};
velocity = {0, 0};
}
void update(const sf::Vector2f& mouse_pos, float dt){
sf::Vector2f direction = mouse_pos - position;
float distance = std::sqrt(direction.x * direction.x + direction.y * direction.y);
if(distance < 100.f && distance > 1.f){
direction /= distance;
velocity += direction * (100.f / distance);
}
position += velocity * dt;
velocity *= 0.98f;
}
};
int main(){
sf::RenderWindow window(sf::VideoMode(450,800), "Gravity Particles");
window.setFramerateLimit(60);
std::vector<Particle> particles;
for(size_t i = 0; i < 500; ++i){
particles.emplace_back(rand() % window.getSize().x, rand() % window.getSize().y);
}
while( window.isOpen() ){
sf::Event event;
while( window.pollEvent(event)){
if( event.type == sf::Event::Closed ){
window.close();
}
}
sf::Vector2f mouse_pos = (sf::Vector2f)sf::Mouse::getPosition(window);
for(auto &var : particles){
var.update(mouse_pos, 0.1f);
}
window.clear();
for(auto& var : particles){
sf::CircleShape shape(var.radius);
shape.setPosition(var.position);
shape.setFillColor(sf::Color::White);
window.draw(shape);
}
window.display();
}
return EXIT_SUCCESS;
}
// g++ main.cpp -lsfml-graphics -lsfml-window -lsfml-system
animacao cpp sfml shorts reels tiktok