Inspiration

Physics!!

What it does

There's two parts to our project: a game-based simulation of particle movement, and a mathematical model of particle movement via Brownian motion, with the Wiener process.

In our game, we simulate the movement and collisions between many particles in a closed container. You can adjust the speed, size and mass of the particles you add to the screen, and see how they interact with the other particles. You can also generate a random set of particles with random speeds, masses and sizes to put on the screen.

In our mathematical model, we simulate the movement of a single particle in space using the Wiener process. The Wiener process is a stochastic mathematical model for the random movement of particles. known as Brownian motion. Using the Wiener process, we plotted out the motion of a particle in 1, 2 and 3 dimensions.

How we built it

We built our game using pygame, creating an interactive program where users can control the particles that go on the screen and watch as they interact in real-time. The particle-particle and particle-wall collisions were modelled as perfectly elastic 2D collisions.

The Wiener process plots of Brownian motion were made using a Python implementation of the Wiener process, and the matplotlib package for making the 1/2/3 dimension plots.

Challenges we ran into

It was our first hackathon, so getting to know each other and working effectively as a team was a challenge initially. Also, GUIs are really tricky.

Also, one of group members was having trouble recording video on his laptop, so the demonstration of our game had to be recorded on his phone.

Accomplishments that we're proud of

We made some fun stuff in a short time!

What we learned

Some of us didn't have much background in physics, so we learned a lot about physics. In particular, we learned a lot about collisions and momentum for making the interactive game. We also got to flex our programming skills :)

What's next for Many Body Interactions

We're done for now :)

Built With

Share this project:

Updates