Bachelor Project (thesis) @USI. Extension of https://github.com/carzaniga/flying-balls. A simple 2D simulation/game of flying balls and polygons
Go to file
2023-08-02 17:34:11 +02:00
.gitignore Added entry to gitignore 2023-05-18 11:19:58 +02:00
balls.cc GUI controls for restitution coefficient and gravity field 2022-12-28 18:50:12 +01:00
balls.h GUI controls for restitution coefficient and gravity field 2022-12-28 18:50:12 +01:00
c_index.cc 2D vector objects for positions, velocities, etc. 2022-06-01 11:09:35 +02:00
c_index.h basic modularization of ball and ball_face classes 2022-05-30 18:05:53 +02:00
collisions.cc Reformated collisions.cc 2023-05-19 16:29:05 +02:00
collisions.h Now when polygons collide, they get moved by the overlap to ensure that 2023-05-19 15:24:11 +02:00
color.cc Added random color generation to the polygons, also made so that the 2023-06-13 13:50:07 +02:00
color.h Added random color generation to the polygons, also made so that the 2023-06-13 13:50:07 +02:00
game.cc first, basic transition to C++ 2022-05-30 15:59:45 +02:00
game.h Now when polygons collide, they get moved by the overlap to ensure that 2023-05-19 15:24:11 +02:00
gravity.cc Added the gravity vector method for polygons (kinda blindly copied and 2023-05-17 13:27:11 +02:00
gravity.h Added gravity vector for polygons in gravity.h 2023-05-17 13:30:05 +02:00
main.cc Added random color generation to the polygons, also made so that the 2023-06-13 13:50:07 +02:00
Makefile Added random color generation to the polygons, also made so that the 2023-06-13 13:50:07 +02:00
matrix.h Generator now makes the polygons origin at their center of mass, easier for rotation 2023-03-20 15:33:35 +01:00
polygon_generator.cc Removed the passing of the mass through parameters. Now the mass is 2023-05-19 16:31:38 +02:00
polygon_generator.h Removed the passing of the mass through parameters. Now the mass is 2023-05-19 16:31:38 +02:00
polygons.cc Added random color generation to the polygons, also made so that the 2023-06-13 13:50:07 +02:00
polygons.h Added random color generation to the polygons, also made so that the 2023-06-13 13:50:07 +02:00
README.md Added README with abstract 2023-08-02 17:34:11 +02:00
spaceship.cc Reformated main.cc and spaceship.cc 2023-03-14 21:45:20 +01:00
spaceship.h basic modularization of ball and ball_face classes 2022-05-30 18:05:53 +02:00
stats.cc first, basic transition to C++ 2022-05-30 15:59:45 +02:00
stats.h modularization: main, game, balls, c_index, spaceship, gravity 2021-12-11 21:32:48 +01:00
vec2d.h Added random color generation to the polygons, also made so that the 2023-06-13 13:50:07 +02:00

From Flying Balls to Colliding Polygons

Abstract

(text taken from the abstract of my report that you can find here

Physics engines are a fun and interesting way to learn about the laws of physics, as well as computer science. They provide a real-time simulation of common physical phenomena, and therefore illustrate theoretical concepts such as the equations that dictate the motion of objects.

The goal of this project was to extend an existing physics engine built for demonstration purposes. This engine was initially designed and developed to simulate circular objects ("balls") in 2D.

With this project, we intended to extend this engine to also simulate arbitrary polygons, again in a physically accurate way. The main technical challenges of the project is therefore the correct simulation of the dynamics of rigid, polygonal objects. In particular, we developed a model of polygonal rigid objects:

  • we implemented a simulation of their inertial motion, possibly in the presence of a constant force field such as gravity;
  • we detect collisions between objects;
  • we compute and then simulate the dynamic effects of collisions.

The simulations are animated and displayed in real-time. It is also therefore crucial that the simulation code be efficient to obtain smooth animations.