Search in sources :

Example 16 with Body

use of org.jbox2d.dynamics.Body in project Bytecoder by mirkosertic.

the class JBox2DTest method testSimpleBall.

@Test
public void testSimpleBall() {
    World world = new World(new Vec2(0, -9.8f));
    float ballRadius = 0.15f;
    BodyDef ballDef = new BodyDef();
    ballDef.type = BodyType.DYNAMIC;
    FixtureDef fixtureDef = new FixtureDef();
    fixtureDef.friction = 0.3f;
    fixtureDef.restitution = 0.3f;
    fixtureDef.density = 0.2f;
    CircleShape shape = new CircleShape();
    shape.m_radius = ballRadius;
    fixtureDef.shape = shape;
    int i = 0;
    int j = 0;
    float x = (j + 0.5f) * (ballRadius * 2 + 0.01f);
    float y = (i + 0.5f) * (ballRadius * 2 + 0.01f);
    ballDef.position.x = 3 + x;
    ballDef.position.y = 3 + y;
    Body theBall = world.createBody(ballDef);
    theBall.createFixture(fixtureDef);
    for (int k = 0; k < 100; k++) {
        world.step(0.01f, 20, 40);
    }
    Vec2 thePosition = theBall.getPosition();
    int theX = (int) (thePosition.x * 1000);
    int theY = (int) (thePosition.y * 1000);
    System.out.println("Finally ended at ");
    System.out.println(theX);
    System.out.println(theY);
}
Also used : CircleShape(org.jbox2d.collision.shapes.CircleShape) Vec2(org.jbox2d.common.Vec2) World(org.jbox2d.dynamics.World) BodyDef(org.jbox2d.dynamics.BodyDef) Body(org.jbox2d.dynamics.Body) FixtureDef(org.jbox2d.dynamics.FixtureDef) ManifoldPoint(org.jbox2d.collision.ManifoldPoint) Test(org.junit.Test)

Example 17 with Body

use of org.jbox2d.dynamics.Body in project opennars by opennars.

the class DrawPhy2D method drawJoint.

private void drawJoint(Joint joint) {
    Body bodyA = joint.getBodyA();
    Body bodyB = joint.getBodyB();
    Transform xf1 = bodyA.getTransform();
    Transform xf2 = bodyB.getTransform();
    Vec2 x1 = xf1.p;
    Vec2 x2 = xf2.p;
    joint.getAnchorA(p1);
    joint.getAnchorB(p2);
    color.set(0.5f, 0.8f, 0.8f);
    switch(joint.getType()) {
        // TODO djm write after writing joints
        case DISTANCE:
            drawSegment(p1, p2, color);
            break;
        case PULLEY:
            {
                PulleyJoint pulley = (PulleyJoint) joint;
                Vec2 s1 = pulley.getGroundAnchorA();
                Vec2 s2 = pulley.getGroundAnchorB();
                drawSegment(s1, p1, color);
                drawSegment(s2, p2, color);
                drawSegment(s1, s2, color);
            }
            break;
        case CONSTANT_VOLUME:
        case MOUSE:
            // don't draw this
            break;
        default:
            drawSegment(x1, p1, color);
            drawSegment(p1, p2, color);
            drawSegment(x2, p2, color);
    }
// pool.pushVec2(2);
}
Also used : Vec2(org.jbox2d.common.Vec2) IViewportTransform(org.jbox2d.common.IViewportTransform) AffineTransform(java.awt.geom.AffineTransform) Transform(org.jbox2d.common.Transform) Body(org.jbox2d.dynamics.Body) PulleyJoint(org.jbox2d.dynamics.joints.PulleyJoint)

Example 18 with Body

use of org.jbox2d.dynamics.Body in project opennars by opennars.

the class ParticleVelocityQueryCallback method spawnMouseJoint.

private void spawnMouseJoint(Vec2 p) {
    if (mouseJoint != null) {
        return;
    }
    queryAABB.lowerBound.set(p.x - .001f, p.y - .001f);
    queryAABB.upperBound.set(p.x + .001f, p.y + .001f);
    callback.point.set(p);
    callback.fixture = null;
    m_world.queryAABB(callback, queryAABB);
    if (callback.fixture != null) {
        Body body = callback.fixture.getBody();
        MouseJointDef def = new MouseJointDef();
        def.bodyA = groundBody;
        def.bodyB = body;
        def.collideConnected = true;
        def.target.set(p);
        def.maxForce = 1000f * body.getMass();
        mouseJoint = (MouseJoint) m_world.createJoint(def);
        body.setAwake(true);
    }
}
Also used : Body(org.jbox2d.dynamics.Body) MouseJointDef(org.jbox2d.dynamics.joints.MouseJointDef)

Example 19 with Body

use of org.jbox2d.dynamics.Body in project opennars by opennars.

the class RobotArm method initTest.

@Override
public void initTest(boolean argDeserialized) {
    for (int i = 0; i < 10; i++) {
        getCamera().zoomToPoint(new Vec2(0, 0), PhysicsCamera.ZoomType.ZOOM_IN);
    }
    Body ground = null;
    {
        BodyDef bd = new BodyDef();
        ground = getWorld().createBody(bd);
        EdgeShape shape = new EdgeShape();
        shape.set(new Vec2(-40.0f, 0.0f), new Vec2(40.0f, 0.0f));
        ground.createFixture(shape, 0.0f);
    }
    {
        Body prevBody = ground;
        // Define upper arm.
        {
            PolygonShape shape = new PolygonShape();
            shape.setAsBox(0.5f, 4.0f);
            BodyDef bd = new BodyDef();
            bd.type = BodyType.DYNAMIC;
            bd.position.set(0.0f, 5.0f);
            upperArm = getWorld().createBody(bd);
            upperArm.createFixture(shape, 2.0f);
            RevoluteJointDef rjd = new RevoluteJointDef();
            rjd.initialize(prevBody, upperArm, new Vec2(0.0f, 2.0f));
            // 1.0f * MathUtils.PI;
            rjd.motorSpeed = 0;
            rjd.maxMotorTorque = 10000.0f;
            rjd.enableMotor = true;
            rjd.lowerAngle = -MathUtils.PI / 2f * 1.5f;
            rjd.upperAngle = MathUtils.PI / 2f * 1.5f;
            rjd.enableLimit = true;
            shoulderJoint = (RevoluteJoint) getWorld().createJoint(rjd);
            prevBody = upperArm;
        }
        // Define lower arm.
        {
            PolygonShape shape = new PolygonShape();
            shape.setAsBox(0.5f, 2.0f);
            BodyDef bd = new BodyDef();
            bd.type = BodyType.DYNAMIC;
            bd.position.set(0.0f, 11.0f);
            lowerArm = getWorld().createBody(bd);
            lowerArm.createFixture(shape, 1.0f);
            RevoluteJointDef rjd = new RevoluteJointDef();
            rjd.initialize(prevBody, lowerArm, new Vec2(0.0f, 9.0f));
            rjd.enableMotor = true;
            rjd.lowerAngle = -MathUtils.PI / 2f * 1.5f;
            rjd.upperAngle = MathUtils.PI / 2f * 1.5f;
            rjd.enableLimit = true;
            elbowJoint = (RevoluteJoint) getWorld().createJoint(rjd);
        }
        // Finger Right
        {
            PolygonShape shape = new PolygonShape();
            shape.setAsBox(0.1f, 0.75f);
            BodyDef bd = new BodyDef();
            bd.type = BodyType.DYNAMIC;
            bd.position.set(0.5f, 13.5f);
            Body body = getWorld().createBody(bd);
            body.createFixture(shape, 0.25f);
            RevoluteJointDef rjd = new RevoluteJointDef();
            rjd.initialize(lowerArm, body, new Vec2(0.5f, 13.0f));
            rjd.enableMotor = true;
            rjd.upperAngle = MathUtils.PI / 8f * 1.5f;
            rjd.lowerAngle = -MathUtils.PI / 4f * 1.5f;
            rjd.enableLimit = true;
            fingerRightJoint = (RevoluteJoint) getWorld().createJoint(rjd);
            prevBody = body;
        }
        // Finger Left
        {
            PolygonShape shape = new PolygonShape();
            shape.setAsBox(0.1f, 0.75f);
            BodyDef bd = new BodyDef();
            bd.type = BodyType.DYNAMIC;
            bd.position.set(-0.5f, 13.5f);
            Body body = getWorld().createBody(bd);
            body.createFixture(shape, 0.25f);
            RevoluteJointDef rjd = new RevoluteJointDef();
            rjd.initialize(lowerArm, body, new Vec2(-0.5f, 13.0f));
            rjd.enableMotor = true;
            rjd.upperAngle = MathUtils.PI / 4f * 1.5f;
            rjd.lowerAngle = -MathUtils.PI / 8f * 1.5f;
            rjd.enableLimit = true;
            fingerLeftJoint = (RevoluteJoint) getWorld().createJoint(rjd);
        }
    // // Define piston
    // {
    // PolygonShape shape = new PolygonShape();
    // shape.setAsBox(1.5f, 1.5f);
    // 
    // BodyDef bd = new BodyDef();
    // bd.type = BodyType.DYNAMIC;
    // bd.fixedRotation = true;
    // bd.position.set(0.0f, 17.0f);
    // Body body = getWorld().createBody(bd);
    // body.createFixture(shape, 2.0f);
    // 
    // RevoluteJointDef rjd = new RevoluteJointDef();
    // rjd.initialize(prevBody, body, new Vec2(0.0f, 17.0f));
    // getWorld().createJoint(rjd);
    // 
    // PrismaticJointDef pjd = new PrismaticJointDef();
    // pjd.initialize(ground, body, new Vec2(0.0f, 17.0f), new Vec2(0.0f, 1.0f));
    // 
    // pjd.maxMotorForce = 1000.0f;
    // pjd.enableMotor = false;
    // 
    // m_joint2 = (PrismaticJoint) getWorld().createJoint(pjd);
    // }
    // // Create a payload
    // {
    // PolygonShape shape = new PolygonShape();
    // shape.setAsBox(1.5f, 1.5f);
    // 
    // BodyDef bd = new BodyDef();
    // bd.type = BodyType.DYNAMIC;
    // bd.position.set(0.0f, 23.0f);
    // Body body = getWorld().createBody(bd);
    // body.createFixture(shape, 2.0f);
    // }
    }
}
Also used : EdgeShape(org.jbox2d.collision.shapes.EdgeShape) PolygonShape(org.jbox2d.collision.shapes.PolygonShape) Vec2(org.jbox2d.common.Vec2) Body(org.jbox2d.dynamics.Body) BodyDef(org.jbox2d.dynamics.BodyDef) RevoluteJoint(org.jbox2d.dynamics.joints.RevoluteJoint) RevoluteJointDef(org.jbox2d.dynamics.joints.RevoluteJointDef)

Aggregations

Body (org.jbox2d.dynamics.Body)19 Vec2 (org.jbox2d.common.Vec2)11 Shape (org.jbox2d.collision.shapes.Shape)4 ManifoldPoint (org.jbox2d.collision.ManifoldPoint)3 CircleShape (org.jbox2d.collision.shapes.CircleShape)3 BodyDef (org.jbox2d.dynamics.BodyDef)3 PolygonShape (org.jbox2d.collision.shapes.PolygonShape)2 Transform (org.jbox2d.common.Transform)2 Fixture (org.jbox2d.dynamics.Fixture)2 World (org.jbox2d.dynamics.World)2 PulleyJoint (org.jbox2d.dynamics.joints.PulleyJoint)2 Test (org.junit.Test)2 GameOverScene (com.hackerhop.game.core.scenes.GameOverScene)1 AffineTransform (java.awt.geom.AffineTransform)1 ContactID (org.jbox2d.collision.ContactID)1 Manifold (org.jbox2d.collision.Manifold)1 WorldManifold (org.jbox2d.collision.WorldManifold)1 EdgeShape (org.jbox2d.collision.shapes.EdgeShape)1 IViewportTransform (org.jbox2d.common.IViewportTransform)1 FixtureDef (org.jbox2d.dynamics.FixtureDef)1