SIMple Physics is an interactive, scriptable physics engine made to help teach physics.


The core of SIMple Physics is the 2D scene UI. Through this UI, you can inspect and interact with physics objects, viewing properties such as position, mass, and velocity. SIMple Physics comes with a very minimal physics engine built in; the real power comes from the scripting engine. Through the scripting engine, users can disable the built-in physics engine and write custom physics code. This allows two main lab types:

  • Labs where the instructor creates a scene, and the students experiment on it
  • Labs where the student implements a physics concept from scratch, and then experiment with it

For more info, see the tutorial, or take a look at a lab.

Example Labs

Before diving deeper into the details of SIMple Physics, let's look at some lab ideas:

Orbital Velocity

The default scene of SIMple Physics is a planet orbiting a star -- universal gravitation is one of the built-in physics concepts. A very simple lab would be to have students calculate the necessary velocity for a planet to go into circular orbit around the star, given all masses and the radius. Then, they can test their answer by creating a planet with the correct velocity and seeing if it goes into orbit.

An alternative version of this lab would be for students to interactively create elliptical orbits ad-hoc. Then, they can inspect the planet's velocity and position at a certain instant to see the relation between the planet's radius and speed.

Elastic Collisions

By default, SIMple Physics has inelastic collisions. In a lab used this past summer, students were tasked with implementing elastic collisions through the scripting engine. The magic comes from the engine retaining its interactivity with custom physics; after successfully implementing elastic collisions, students could interactively collide objects and see the results.

The lab handout for this lab can be found here. The class in which it was used was meant to expose students to programming without emphasizing it, so the handout gives most of the code and has students fill in the blanks.


In progress