Play: Difference between revisions

From OLPC
Jump to navigation Jump to search
No edit summary
No edit summary
Line 39: Line 39:
=Timeline & Deliverables=
=Timeline & Deliverables=
I have separated the project into 3 parts. This will allow easy evaluation of project progress, and will allow the mentor to catch problems early if progress is not proceeding as planned.
I have separated the project into 3 parts. This will allow easy evaluation of project progress, and will allow the mentor to catch problems early if progress is not proceeding as planned.
[[image:milestone1.png | milestone 1 | left]] <br>
[[image:milestone1.png | milestone 1 | left]] <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
[[image:milestone2.png | milestone 2 | left]]<br>
[[image:milestone2.png | milestone 2 | left]]<br><br><br><br><br>
[[image:milestone3.png | milestone 3 | left]]<br>
[[image:milestone3.png | milestone 3 | left]]<br><br><br><br><br><br><br><br><br><br><br><br>

=About Me=
My name is Erik Beerepoot, I’m a 3rd year, mechatronics student at McMaster university,in Hamilton, Ontario, Canada. I have experience in c#, c, c++, obj-c,python, basic, javascript, html & css. I’m familiar with Mac OS X, linux & windows programming, and have experience in FOSS. Most notably, I participated in the development of AdiumX, an instant messaging client for Mac OS X.
I share a house with my Partner Chloe, and nearly 16-month-old daughter Maaike. Besides developing software, I enjoy tinkering with electronics, taking nature walks, cooking, gardening, reading & mycology.

Revision as of 18:10, 1 April 2008

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:

  1. Extend the elements API
  2. Document the element API
  3. 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.

Convex-concave.png

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

Benefits to the community

Probably the largest benefit of this summer of code project is the extension I propose to do on the physics simulator. The python language is a primary development language on the OLPC platform, so having a full-featured physics API accessible through python will be of great benefit to the community, specifically with regards to games. The documentation that I will write will make the adoption of Elements easier, which will serve as a catalyst to the previous point. The “Play!” activity will provide a science-learning tool the users of the XO laptop. As science is a very important part of the education of a child, this tool will be of great benefit to those trying to teach science (specifically physics).

Timeline & Deliverables

I have separated the project into 3 parts. This will allow easy evaluation of project progress, and will allow the mentor to catch problems early if progress is not proceeding as planned.

milestone 1
















milestone 2






milestone 3













About Me

My name is Erik Beerepoot, I’m a 3rd year, mechatronics student at McMaster university,in Hamilton, Ontario, Canada. I have experience in c#, c, c++, obj-c,python, basic, javascript, html & css. I’m familiar with Mac OS X, linux & windows programming, and have experience in FOSS. Most notably, I participated in the development of AdiumX, an instant messaging client for Mac OS X. I share a house with my Partner Chloe, and nearly 16-month-old daughter Maaike. Besides developing software, I enjoy tinkering with electronics, taking nature walks, cooking, gardening, reading & mycology.