Play
Play - A summer of code project
This wiki page is about a summer of code project proposed by Erik Beerepoot. The mailing list entry is here A pdf version of this proposal is also available at my website
Introduction
This summer of code project proposes to extend Elements, a python wrapper around a 2D physics engine called box2d. After extending elements & writing extensive documentation for use with the XO laptop, I will use it to create a physics educational tool called "Play!" - for Physical science Learning And Discovery. "Play!" will provide an intuitive interface for kids to learn elementary physics concepts like Gravity, Projectile motion, Angular motion, and more.
Detailed Description
This project consists of three main parts:
- Extend the elements API
- Document the element API
- Write "Play!"
1. Extend the elements API
The first thing that will be done in this summer of code project will be the extension of the Elements API to larger subset of the desired functionality.
Currently, elements supports only part of what is possible with the Box2D engine, and I propose to change this.
First off, I will implement support for concave polygons. As you can see on the picture on the right, a convex polygon is a polygon that has no interior angles greater than 180 degrees.
This means there can be no "indentation" - not having this option makes many shapes impossible. I will add this functionality to Elements.
Secondly, I will add support for joints to the elements API. I will implement Revolute, prismatic, distance, pulley, gear and mouse joints. This will make it possible to create simple transmission systems, hinging systems, pulleys, rotation, and much more. Thus, this is a crucial feature for a Elements to support. After implementing these features, developers for the XO laptop will have a simple to use, accurate & extensive physics API available, and it will be trivial to support physics and their activities & games.
2. Document the elements API
Documentation is crucial for any Open Source project. To effectively be able to use the Elements API, I propose to write extensive documentation to cover all aspects of the elements API. This will lower the so-called "activation energy" of using the Elements API, and will make it even simpler to use physics simulation in XO activities. It will also increase developers interest in the API, which ultimately will lead to a more stable, well supported, more accurate & more extensive physics simulator, at the benefit of the OLPC community. In addition, I will also write several examples specifically geared towards the XO laptop to illustrate the proper use of the Elements API in developers activities and games.
3. Write "Play!"
The last part of the summer will be devoted to writing an educational physics tool I have dubbed "Play!" for "Physical science Learning And discoverY." This tool will use the power of elements, to provide an intuitive physics learning activity for young children. It will include the following features:
- Use the features of elements in an intuitive manner, using simple pictorial demonstration of actions [1].
- Learn physical concepts like Gravity, Torque, Project motion, angular, etc. Through a very realistic interaction with the objects present in a given scene.
- Provide simple ways to create a wide variety of objects and then interact with them by means of moving, scaling, throwing, linking, and other simple motions.
- The user can create objects and watch the scene “come to life” through the interaction with other objects in the scene.
- Use the XO networking capabilities to share user created scenarios