Physics (activity)

From OLPC
Revision as of 14:09, 10 July 2008 by Alexlevenson (talk | contribs) (Plan to Add / Requests)
Jump to: navigation, search
Activity-physics.svg

Physics

PhysicsElements.png

Physics is a physical world simulator and playground -- you can add squares, circles, triangles, or draw your own shapes, and see them come to life with forces (think gravity, Newton!), friction (scrrrrape), and inertia (ahh, slow down!).

We also plan to add forces such as: magnetism, springs, and motors

Shape Drawing

Now Implimented (mostly)!

PhysicsTriangleDraw.png PhysicsSquareDrawing.png PhysicsCircleDrawing.png

Some discussion is required here... most shapes can't be defined simply by a single line. Any shape with fixed (relative) dimensions can, but that's not always what you want.

Get Physics!

Click this link in browse: Physics-0.1.xo OR (for the newest version...) Open up the Terminal activity and follow these steps:

sudo yum install git
cd ~/Activities/
git clone git://dev.laptop.org/activities/physics
mv physics Physics.activity
# Then press ctrl + alt + erase to restart sugar.
# The newest version of physics is installed! (but may not be stable!)

Usage

Drawing objects

    • Boxes
      • Non-rotated box of any dimension
      • Use: click (top-left corner) drag + release (bottom left corner) -- like dragging a selection box in a photo editor
    • Circles
      • click (center) drag + release (outer edge)
    • Triangles
      • Equilateral triangle of any size and rotation
      • Use: click (center of base) drag + release (tip)
    • Polygons
      • Click for each point of the polygon
      • Use: Right click to end OR left click in the circle around the original point
    • Magic Pen
      • Use: Click and hold to draw any shape you'd like!

Using tools

  • Grab - Drag existing objects around with the mouse
  • Connect
    • Click on any object, drag to another object + release to create a distance joint
    • Click on any object to add a revolute joint (like a push pin!)
  • Destroy - Click on an object to destroy it, or draw a line of destruction--destroying everything in its path!

Plan to Add / Requests

These are the features we would like to add, and if you think you can help us out please do!

  1. There are some tools that need to be added
    • fixate tool (object doesn't move / hangs in space)
    • More complex joint tool
      • Need to implement gears, motors, prismatic and revolute joints in elements (already implemented in Box2D)
  2. Need a way to change the properties of an object
    • density
    • rotation
    • strength (for breaking)
    • bounciness
    • friction
    • color
  3. More physics!
    • Magnetism
    • Springs -- via prismatic joints
    • Breakable bodies
    • Note: We are using a rigid body simulator (box2D). All of the above need to be implemented using forces on rigid bodies. Breakable bodies can be achieved a few different ways:
      1. When a body 'breaks' it is removed from the physics engine and some kind of graphical animation indicates that it has been broken and dissipated
      2. When a body 'breaks' it is removed from the physics engine and is replaced by some new (smaller, fragment-like) rigid bodies (kind of like an explosion)
      3. When a body 'breaks' it is removed from the physics engine, it's shape is calculated and then split into smaller polygons which are then added as rigid bodies
  4. We need a way to save / export the state of a scene
    • Should set up a standard format for an elements scene
  5. Need to add objectives and limits
    • Incredible machine style objectives (get the ball into the basket, knock the triangle off the screen, etc)
    • You only have 4 boxes, 1 meter of magic pen, and one triangle, etc.

Photographs

Thanks to the Elements team and Alex Levenson for portions of this example code!

Physics-1.JPG Physics-2.jpg Physics-3.jpg PhysicsNew1.png PhysicsNew2.png PhysicsNew3.png