Examples

Dynamic gravity

This example presents a world where gravity is constantly changing using polar coordinates.

Applet

This browser does not have a Java Plug-in.
Get the latest Java Plug-in here.

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.*;

//Create a PPhys2D world
PPWorld world = new PPWorld();

//Create an Array to hold the balls
PPCircle[] balls = new PPCircle[8];

//Value to increment the gravity
float theta = 1.5;

void setup () {
  
  //Set size and framerate
  frameRate(30);
  size(500,500);

  //Set a NO world gravity
  world.setGravity(0, 0);
  
  //Set world edges in dark gray
  world.setEdges(this, new Color (40, 40, 40));
   
  //Create balls and add them to the world
  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 = 100;
  float x = factor * cos(theta);
  float y = factor * sin(theta);  
  world.setGravity(x, y);
  theta += 0.0065;

  //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);
}