Physics (activity)
|
Physics
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)!
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!)
Progress
Here is what we have so far:
- Draw the following shapes:
- Boxes
- non-rotated box of any dimension
- 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
- click (center of base) drag + release (tip)
- Polygons
- Click for each point of the polygon
- Right click to end OR left click in the circle around the original point
- Magic Pen
- Click and hold to draw any shape you'd like!
- Boxes
- Use the following tools
- Grab
- Drag existing objects around with the mouse
- Joint
- Click on any object, drag to another object + release to create a distance joint
- Click on any object to add a revolute joint (fixed joint)
- Destroy
- Click on an object to destroy it
- Grab
- Menus
- Using elements built in menus
Plan to Add / Requests
These are the features we would like to add, and if you think you can help us out please do!
- There are some tools that need to be added
- delete / remove tool -- done!
- fixate tool (object doesn't move / hangs in space)
- fixed joint tool (a joint that doesn't move / hangs in space) -- done!
- Need a way to change the properties of an object
- density
- rotation
- strength (for breaking)
- bounciness
- friction
- color
- Activity needs to be "Sugarized"
- Needs a sugar toolbar and sugar friendly context menus
- More physics!
- Magnetism
- Springs
- Motors
- 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:
- 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
- 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)
- 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
- We need a way to save / export the state of a scene
- Should set up a standard format for an elements scene
- 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!