Compare commits
2 Commits
082acc4451
...
e9f90bd11c
Author | SHA1 | Date | |
---|---|---|---|
|
e9f90bd11c | ||
|
87b4febc5d |
59
README.md
Normal file
59
README.md
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
# From Flying Balls to Colliding Polygons
|
||||||
|
|
||||||
|
## Abstract
|
||||||
|
|
||||||
|
> (text taken from the abstract of my report that you can find
|
||||||
|
> [here](https://github.com/karma-riuk/bachelor-project-report/blob/main/bachelorproject.pdf)
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
## Before vs After
|
||||||
|
|
||||||
|
A little of context for the follow videos:
|
||||||
|
|
||||||
|
- in the first video, the special ball with an arrow inside is a "spaceship",
|
||||||
|
that can be controlled by the user;
|
||||||
|
- the yellow bar that appears after midway through both videos represent the
|
||||||
|
restitution coefficient of the collision resolution (the lower it is, the
|
||||||
|
greater the dampening on impact between objects);
|
||||||
|
- the white line with a ball at the end that appears after the restitution
|
||||||
|
coefficient bar represents the gravity vector that gets applied to the speed
|
||||||
|
of each object at each frame, the ball is the direction the vector is pointing
|
||||||
|
it.
|
||||||
|
|
||||||
|
### Before
|
||||||
|
|
||||||
|
[before video](before.mp4)
|
||||||
|
|
||||||
|
### After
|
||||||
|
|
||||||
|
[after video](after.mp4)
|
||||||
|
|
||||||
|
<!-- ## Controls -->
|
||||||
|
<!---->
|
||||||
|
<!-- ## Installation -->
|
||||||
|
|
||||||
|
## Contact
|
||||||
|
|
||||||
|
If you have any question concerning this work, feel free to contact me at [arno.fauconnet@gmail.com](mailto:arno.fauconnet@gmail.com)
|
BIN
before.mp4
Normal file
BIN
before.mp4
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user