mirror of
https://github.com/processing/processing4.git
synced 2026-02-21 22:35:36 +01:00
63 lines
1.3 KiB
Plaintext
63 lines
1.3 KiB
Plaintext
// The Nature of Code
|
|
// <http://www.shiffman.net/teaching/nature>
|
|
// Spring 2010
|
|
// PBox2D example
|
|
|
|
// A fixed boundary class (now incorporates angle)
|
|
|
|
class Boundary {
|
|
|
|
// A boundary is a simple rectangle with x,y,width,and height
|
|
float x;
|
|
float y;
|
|
float w;
|
|
float h;
|
|
// But we also have to make a body for box2d to know about it
|
|
Body b;
|
|
|
|
Boundary(float x_,float y_, float w_, float h_, float a) {
|
|
x = x_;
|
|
y = y_;
|
|
w = w_;
|
|
h = h_;
|
|
|
|
// Define the polygon
|
|
PolygonShape sd = new PolygonShape();
|
|
// Figure out the box2d coordinates
|
|
float box2dW = box2d.scalarPixelsToWorld(w/2);
|
|
float box2dH = box2d.scalarPixelsToWorld(h/2);
|
|
// We're just a box
|
|
sd.setAsBox(box2dW, box2dH);
|
|
|
|
|
|
// Create the body
|
|
BodyDef bd = new BodyDef();
|
|
bd.type = BodyType.STATIC;
|
|
bd.angle = a;
|
|
bd.position.set(box2d.coordPixelsToWorld(x,y));
|
|
b = box2d.createBody(bd);
|
|
|
|
// Attached the shape to the body using a Fixture
|
|
b.createFixture(sd,1);
|
|
}
|
|
|
|
// Draw the boundary, if it were at an angle we'd have to do something fancier
|
|
void display() {
|
|
noFill();
|
|
stroke(0);
|
|
strokeWeight(1);
|
|
rectMode(CENTER);
|
|
|
|
float a = b.getAngle();
|
|
|
|
pushMatrix();
|
|
translate(x,y);
|
|
rotate(-a);
|
|
rect(0,0,w,h);
|
|
popMatrix();
|
|
}
|
|
|
|
}
|
|
|
|
|