Simulatio  0.5.2
A flexible physic engine
Simulatio

Build Version Language Roadmap License

Project

This project started from a personal challenge: recreate physical principles in a simulation running in real time. I also wanted this project to easily convey some understanding of how it works, as well as analysis and debugging tools.

Note
This project is currently in active development.
You can see a very messy roadmap here.
If you want to report a bug or request a feature, see here.

Objectives

The objective was to learn more about such topics as:

  • Gravity (Classical mecanics one, he goal was not to model objects at the molecular level)
  • Collisions (With Newton's 3rd law)
  • Friction (Approximation with dissipation in heat)
  • Electromagnetic fields (IN WORK, see https://github.com/mlhoutel/Fields)
  • Fluids (IN WORK)

This project also allows me to familiarize myself with several areas of programming, such as:

  • Graph Theory and advanced Data structures like Quadtrees
  • C++ programs/libraries compilation (Mingw batch/ CMake)
  • Memory allocation and Classes Inheritances
  • Optimisation and Algoritmics
  • Threads and Graphical acceleration with CUDA (?)

Modularity

As this program is oriented towards testing and comparison, a modular structure has been set up.

Modularity:

  • Precision (at build time):
    • [x] float
    • [x] double
  • Dimension (at build time):
    • [x] 2D
    • [ ] 3D
  • Broad phase structure (at run time):
    • [ ] Spacial grid
    • [x] Quad-tree
    • [ ] kD-tree
  • Integration method (at run time):
    • [ ] Euler
    • [x] Verlet
    • [ ] RK4

Summary

To summarize this is an introduction to the basic concepts and functions of 2D physical simulation (applicable to 3D thereafter).

The ultimate goal would be to present an easy-to-use and optimized physical engine, a bit like a simplified "Algodoo".

Built With

Documented With