This is a work in progress. I will be creating a new project with a data structure and a improved physics engine. Many optimizations are still to come. This program for instance checks every object for each object to sense collision. Therefore if I wanted to have 100 objects I would need to perform 10000 collision checks! Thats O(n^2) complexity! There are many methods that use constant complexity with implementing data structures to find nearest neighbor.
Its funny too watch when two spheres spawn inside each other and spawn particles like crazy! fixed flickering with both filled and unfilled circle (thanks to Naboosf for pointing it out and how to fix!) circle algorithm is now not bresenham's circle algorithm just a basic sin and cos circle drawer.