Changes

3,300 bytes added ,  22:28, 2 March 2020
Line 24: Line 24:  
|+
 
|+
 
|valign="top"|[[Image:physics_pen.png|thumb|none|280px|Example illustrating the pen tool attached to the end of a pendulum.]]
 
|valign="top"|[[Image:physics_pen.png|thumb|none|280px|Example illustrating the pen tool attached to the end of a pendulum.]]
 +
|valign="top"|[[Image:physics-tracing.png|thumb|none|280px|Tracing multiple objects]]
 +
|+
 +
|valign="top"|[[File:TAGearTA.png|thumb|none|280px|A simple gear and motor generated in Turtle Art]]
 +
|valign="top"|[[File:TAGear.png|thumb|none|280px|rendered in Physics]]
 +
|+
 +
|valign="top"|[[File:Chain.png|thumb|none|280px|a chain generated in Turtle Art]]
 
|}
 
|}
    
== Ideas to try ==
 
== Ideas to try ==
    +
*Build a catapult to simulate Angry Birds
 
*Build a machine that sorts different sized balls in to two buckets, large and small, with no ball jams.  
 
*Build a machine that sorts different sized balls in to two buckets, large and small, with no ball jams.  
 
*A cyclic mechanism for lifting balls from the bottom of the screen to the top, again and again.
 
*A cyclic mechanism for lifting balls from the bottom of the screen to the top, again and again.
Line 45: Line 52:  
[[Image:Physics-main-toolbar.png|800px]]
 
[[Image:Physics-main-toolbar.png|800px]]
   −
;Activity Toolbar Button: Opens the activity toolbar (where you can share Physics for collaboration)
+
;Activity Toolbar Button: Opens the activity toolbar (See Below)
 
;Tools Toolbar Button: Opens the tools toolbar (See below)
 
;Tools Toolbar Button: Opens the tools toolbar (See below)
 
;Play/Pause Button: allows you to stop time and start it again, allowing you to build constructions without them falling to the ground while you work. You can now use the Grab tool while time is stopped to easily re-arrange the position of objects. ''<Ctrl+space>''
 
;Play/Pause Button: allows you to stop time and start it again, allowing you to build constructions without them falling to the ground while you work. You can now use the Grab tool while time is stopped to easily re-arrange the position of objects. ''<Ctrl+space>''
;Erase Tool Button: click on an object to erase it, or click and hold to draw a line of destruction--erasing everything in its path! ''<Ctrl+E>''
+
;Erase Pen Button: Erase all the points drawn by the pen tool
 
;Erase-all Button: Erase all objects in current simulation
 
;Erase-all Button: Erase all objects in current simulation
 +
 +
[[Image:Physics-activity-toolbar.png|800px]]
 +
 +
;Activity Title: Change the name of your project here
 +
;Activity Description: Open the description palette to write about your project
 +
;Collaboration: Open the collaboration palette to share your project
 +
;Save pen data: Save pen data to the Journal as a JSON-encoded stream
 +
;Save pen data (CSV): Save pen data to the Journal as a comma-separated values database
    
[[Image:physics-toolbar.png|800px]]
 
[[Image:physics-toolbar.png|800px]]
Line 64: Line 79:  
;Chain Tool Button: add a flexible chain to connect two objects together. Click and hold to draw any shape. If you start or stop on an object, it becomes connected to the end of the chain (like the joint tool)
 
;Chain Tool Button: add a flexible chain to connect two objects together. Click and hold to draw any shape. If you start or stop on an object, it becomes connected to the end of the chain (like the joint tool)
 
;Pen Tool Button: add a pen to any object to trace the motion of that object
 
;Pen Tool Button: add a pen to any object to trace the motion of that object
 +
;Erase Tool Button: click on an object to erase it, or click and hold to draw a line of destruction--erasing everything in its path! ''<Ctrl+E>''
    
[[Image:Physics-object-properties.png]]
 
[[Image:Physics-object-properties.png]]
Line 69: Line 85:  
All of the objects have palette menus to adjust object properties:
 
All of the objects have palette menus to adjust object properties:
 
;Mass: feather, wood, and anvil represent light to dense
 
;Mass: feather, wood, and anvil represent light to dense
;Bounciness: bowling ball, baseball, and basketball represent inelastic to very bouncy
+
;Bounciness: basketball, baseball, and bowling ball represent very bouncy to inelastic
 
;Friction: ice skate, shoe, and sneaker represent low to high coefficient of friction
 
;Friction: ice skate, shoe, and sneaker represent low to high coefficient of friction
    
[[Image:Physics-motor-properties.png]]
 
[[Image:Physics-motor-properties.png]]
   −
The motor has a palette to set speed (fast and slow) and direction (clockwise and counterclockwise)
+
The motor has a palette to set speed (fast and slow) and direction (counter-clockwise and clockwise)
    
[[Image:Physics-chain-properties.png]]
 
[[Image:Physics-chain-properties.png]]
Line 83: Line 99:  
|'''Hints and tips''': Single clicking (no drag) with the circle, triangle or box tool, will add a default sized shape. Once you have used a shape tool, it remembers the last shape you made with it, a single click will add a clone of that last shape.
 
|'''Hints and tips''': Single clicking (no drag) with the circle, triangle or box tool, will add a default sized shape. Once you have used a shape tool, it remembers the last shape you made with it, a single click will add a clone of that last shape.
 
|}
 
|}
 +
 +
== Did you know? ==
 +
 +
There is a Plugin for [[Activities/TurtleArt|Turtle Blocks]] that lets you create projects for the Physics Activity:
 +
 +
[[File:Physics pallette.jpg]]
 +
 +
Use these blocks to create objects that are added to the bodylist and jointlist of a Box2d database used by the Physics Activity. Objects are positioned by the turtle x,y and colored based on the current pen attributes. From left to right:
 +
* density: set the object density (0 is light; 1 is heavy)
 +
* friction: set the object friction (0 is slippery; 1 is sticky)
 +
* bounciness: set the object restitution (0 is rigid; 1 is bouncy)
 +
* start polygon: use the current turtle x,y position to specify the first vertex of a polygon
 +
* add point: use the current turtle x,y position to add a vertex to a polygon
 +
* end polygon: use the current turtle x,y position to specify the last vertex of a polygon
 +
* end filled polygon: use the current turtle x,y position to specify the last vertex of a ''filled'' polygon
 +
: '''Note:''' The polygon must be 'normal', e.g., no crossed lines; no holes. Since Box2d does not support concave polygons, all polygons are converted to triangles (triangulation). (In Turtle Blocks, these triangles are shown by slight variations in color.)
 +
* triangle: add a triangle object at the current turtle x,y position
 +
* circle: add a circle object at the current turtle x,y position
 +
* rectangle: add a rectangle object at the current turtle x,y position
 +
* gear: add a gear object at the current turtle x,y position with the number of teeth as the argument
 +
* gear radius: returns the radius of a gear with the number of teeth as the argument (useful for positioning gears)
 +
* motor: add a motor at the current turtle x,y position (attached to the object at this position)
 +
* pin: add a pin at the current turtle x,y position (attached to the object at this position) to prevent movement
 +
* pen: add a pen at the current turtle x,y position (attached to the object at this position) to trace motion
 +
* joint: add a joint between the object at the current turtle x,y position and the object at x, y
 +
* save as Physics project: save the current bodylist and jointlist as a Physics project in the Journal
 +
'''Note:''' The current model is cleared whenever the Erase button is pressed or a Clean block is run.
 +
 +
===== Examples =====
 +
'''For Turtle Blocks versions 107 - 183'''
 +
[[File:TAgear.ta]] [[File:Gear.physics]]
 +
 +
'''For Turtle Blocks verisons 184 - '''
 +
[http://people.sugarlabs.org/walter/physics-plugin.tar.gz]
 +
 +
'''Chain'''
 +
Turtle Blocks project file: [http://people.sugarlabs.org/walter/chain.tb]
 +
 +
===Downloads===
 +
 +
[[File:Physics-plugin.tar.gz]] Physics plugin
 +
 +
[http://github.com/walterbender/physics-plugin git repository]
    
= Development =
 
= Development =
 
[[Image:PhysicsElements.png|160px|right]]
 
[[Image:PhysicsElements.png|160px|right]]
There are quite a few code layers to contend with. A regular Python Activity acts as a Sugar wrapper to Physics which is written using OLPCGames which itself wraps Pygame, Physics then uses Elements as a wrapper for Box2D.
+
There are quite a few code layers to contend with. A regular Python Activity acts as a Sugar wrapper to Physics which is written using SugarGames which itself wraps Pygame, Physics then uses Elements as a wrapper for Box2D.
    
==Video==
 
==Video==
Line 205: Line 264:     
* [http://activities.sugarlabs.org/en-US/sugar/addon/4193 Activity bundle]
 
* [http://activities.sugarlabs.org/en-US/sugar/addon/4193 Activity bundle]
* [http://git.sugarlabs.org/projects/physics GIT repository]
+
* [https://github.com/sugarlabs/physics/ GIT repository]
 
* [http://download.sugarlabs.org/sources/honey/Physics/ Source tarball]
 
* [http://download.sugarlabs.org/sources/honey/Physics/ Source tarball]
* [http://bugs.sugarlabs.org/query?component=Physics&groupdesc=1&group=resolution&col=id&col=summary&col=owner&col=type&col=status&col=priority&col=milestone&col=time&col=changetime&col=reporter&order=priority Bug tracker]