2
\$\begingroup\$

As far as I know, the unit in Box2D is meters. When I use Box2D in Processing with JBox2D, I set the "world size" as the window size specified in the setup().

Now I'm wondering if there is any function that scales down the world. For example, how can I simulate the throw of tennis ball within a room, without using a window of only 5 x 5 pixels?

Additionally, is there any good documentation like the Java API?

\$\endgroup\$
1
  • 3
    \$\begingroup\$ How you render the world and how your physics simulate the world are entirely different. You don't need nor want each unit in the physics simulation to represent a single pixel. \$\endgroup\$ Nov 5, 2013 at 2:17

1 Answer 1

5
\$\begingroup\$

To expand on Sean's comment, you should create a separate class or set of classes to connect your physics world with your rendering.

I'm not entirely familiar with Processing, but usually it'd be something like this:

class Box2DObject{
    final float PHYSICS_SCALE = 100.0;
    b2Body body;
    Image image;
    Box2DObject(b2Body ibody, Image iimage){
        body = ibody;
        image = iimage;
    }

    void update(){
        image.x = body.GetPosition().x * PHYSICS_SCALE;
        image.y = body.GetPosition().y * PHYSICS_SCALE;
        image.draw();
    }
}

update() is called every rendering update on each Box2DObject, after calling box2d's world.step() method. The hard work is done by the PHYSICS_SCALE constant defined at the top of the class. This effectively sets a ratio of 1 meter to be 100 pixels (in this case). This means that a tennis ball with a box2d diameter of 67mm, would have a display size of 6.7 pixels. Increasing/decreasing the PHYSICS_SCALE constant increases/decreases the display size.

As far as API documentation goes, most ports I have seen are largely similar to the original C++ library. The C++ API documentation can be found online at http://www.learn-cocos2d.com/api-ref/1.0/Box2D/html/index.html or in the C++ distribution which can be downloaded here https://code.google.com/p/box2d/downloads/list.

I hope this helps.

\$\endgroup\$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .