Examples
Accelerometer
Using the MacBook Accelerometer, you can interact with gravity. This is made by using the excellent Daniel Shiffman SMS Library. ONLY WORKS ON MACBOOKs AND MACBOOK PROs. LOCAL ONLY. Try it yourself!
Applet
Not available.
Code
//Import all Phys2D libraries
import pphys2d.bodies.*;
import pphys2d.joints.*;
import pphys2d.shapes.*;
import pphys2d.phys2d.raw.collide.*;
import pphys2d.phys2d.raw.strategies.*;
import pphys2d.phys2d.raw.forcesource.*;
import pphys2d.phys2d.util.*;
import pphys2d.phys2d.raw.shapes.*;
import pphys2d.*;
import pphys2d.phys2d.raw.*;
import pphys2d.phys2d.math.*;
import sms.*;
//Create a PPhys2D world
PPWorld world = new PPWorld();
//Create circle array
PPCircle[] balls = new PPCircle[8];
//Gravity value
float theta = 1.5;
void setup () {
//Set size and framerate
frameRate(50);
size(500,500);
//Set a standard world gravity
world.setGravity(0, 0);
world.setEdges(this, new Color (40, 40, 40));
//Create balls
for(int i=0; i <8; i++) {
balls[i] = new PPCircle(random(20,50));
balls[i].setFillColor(new Color((int)random(100,140), (int)random(100,140), (int)random(100,140)));
balls[i].setStrokeColor(new Color(190,190,190));
balls[i].setStrokeWidth(3);
balls[i].setPosition(random(150,350), random(150,350));
world.add(balls[i]);
}
}
void draw() {
//Clear
background(10);
//Refresh gravity force
float factor = 0.5;
int[] vals = Unimotion.getSMSArray();
float x = vals[0]*-factor;
float y = vals[1]*factor;
world.setGravity(x,y);
//Draw a line representing gravity force
line(250,250, x+250, y+250);
ellipseMode(CENTER);
fill(255);
ellipse(250,250, 10,10);
//Draw PPhys2D world
world.draw(this);
}
import pphys2d.bodies.*;
import pphys2d.joints.*;
import pphys2d.shapes.*;
import pphys2d.phys2d.raw.collide.*;
import pphys2d.phys2d.raw.strategies.*;
import pphys2d.phys2d.raw.forcesource.*;
import pphys2d.phys2d.util.*;
import pphys2d.phys2d.raw.shapes.*;
import pphys2d.*;
import pphys2d.phys2d.raw.*;
import pphys2d.phys2d.math.*;
import sms.*;
//Create a PPhys2D world
PPWorld world = new PPWorld();
//Create circle array
PPCircle[] balls = new PPCircle[8];
//Gravity value
float theta = 1.5;
void setup () {
//Set size and framerate
frameRate(50);
size(500,500);
//Set a standard world gravity
world.setGravity(0, 0);
world.setEdges(this, new Color (40, 40, 40));
//Create balls
for(int i=0; i <8; i++) {
balls[i] = new PPCircle(random(20,50));
balls[i].setFillColor(new Color((int)random(100,140), (int)random(100,140), (int)random(100,140)));
balls[i].setStrokeColor(new Color(190,190,190));
balls[i].setStrokeWidth(3);
balls[i].setPosition(random(150,350), random(150,350));
world.add(balls[i]);
}
}
void draw() {
//Clear
background(10);
//Refresh gravity force
float factor = 0.5;
int[] vals = Unimotion.getSMSArray();
float x = vals[0]*-factor;
float y = vals[1]*factor;
world.setGravity(x,y);
//Draw a line representing gravity force
line(250,250, x+250, y+250);
ellipseMode(CENTER);
fill(255);
ellipse(250,250, 10,10);
//Draw PPhys2D world
world.draw(this);
}