/** Get the world coordinates of a point given the local coordinates. * @param localPoint a point on the body measured relative to the the body's origin. * @return the same point expressed in world coordinates. */ public Vector2 getWorldPoint (Vector2 localPoint) { tmp.set(localPoint.x, localPoint.y); Vec2 wp = body.getWorldPoint(tmp); return worldPoint.set(wp.x, wp.y); }
jd.localAnchorA.set(-10.0f, 0.0f); jd.localAnchorB.set(-0.5f, -0.5f); p1 = jd.bodyA.getWorldPoint(jd.localAnchorA); p2 = jd.bodyB.getWorldPoint(jd.localAnchorB); d = p2.sub(p1); jd.length = d.length(); jd.localAnchorA.set(10.0f, 0.0f); jd.localAnchorB.set(0.5f, -0.5f); p1 = jd.bodyA.getWorldPoint(jd.localAnchorA); p2 = jd.bodyB.getWorldPoint(jd.localAnchorB); d = p2.sub(p1); jd.length = d.length(); jd.localAnchorA.set(10.0f, 20.0f); jd.localAnchorB.set(0.5f, 0.5f); p1 = jd.bodyA.getWorldPoint(jd.localAnchorA); p2 = jd.bodyB.getWorldPoint(jd.localAnchorB); d = p2.sub(p1); jd.length = d.length(); jd.localAnchorA.set(-10.0f, 20.0f); jd.localAnchorB.set(-0.5f, 0.5f); p1 = jd.bodyA.getWorldPoint(jd.localAnchorA); p2 = jd.bodyB.getWorldPoint(jd.localAnchorB); d = p2.sub(p1); jd.length = d.length(); jd.localAnchorA.set(0.5f, 0.0f);
@Override public void step(TestbedSettings settings) { // TODO Auto-generated method stub super.step(settings); // Traverse the contact results. Apply a force on shapes // that overlap the sensor. for (int i = 0; i < e_count; ++i) { if (m_touching[i].tf == false) { continue; } Body body = m_bodies[i]; Body ground = m_sensor.getBody(); CircleShape circle = (CircleShape) m_sensor.getShape(); Vec2 center = ground.getWorldPoint(circle.m_p); Vec2 position = body.getPosition(); Vec2 d = center.sub(position); if (d.lengthSquared() < Settings.EPSILON * Settings.EPSILON) { continue; } d.normalize(); Vec2 F = d.mulLocal(100f); body.applyForce(F, position); } }
@Override public void step(TestbedSettings settings) { super.step(settings); addTextLine("Use 'wasd' to move, 'e' and 's' drift."); if (getModel().getKeys()['w']) { Vec2 f = m_body.getWorldVector(new Vec2(0.0f, -30.0f)); Vec2 p = m_body.getWorldPoint(m_body.getLocalCenter().add(new Vec2(0.0f, 2.0f))); m_body.applyForce(f, p); } else if (getModel().getKeys()['q']) { Vec2 f = m_body.getWorldVector(new Vec2(0.0f, -30.0f)); Vec2 p = m_body.getWorldPoint(m_body.getLocalCenter().add(new Vec2(-.2f, 0f))); m_body.applyForce(f, p); } else if (getModel().getKeys()['e']) { Vec2 f = m_body.getWorldVector(new Vec2(0.0f, -30.0f)); Vec2 p = m_body.getWorldPoint(m_body.getLocalCenter().add(new Vec2(.2f, 0f))); m_body.applyForce(f, p); } else if (getModel().getKeys()['s']) { Vec2 f = m_body.getWorldVector(new Vec2(0.0f, 30.0f)); Vec2 p = m_body.getWorldCenter(); m_body.applyForce(f, p); } if (getModel().getKeys()['a']) { m_body.applyTorque(20.0f); } if (getModel().getKeys()['d']) { m_body.applyTorque(-20.0f); } }
public MouseJoint createMouseJoint(AnimatedSprite box , float x, float y) { final Body boxBody = this.mPhysicsWorld.getPhysicsConnectorManager().findBodyByShape(box); Vector2 v = boxBody.getWorldPoint( new Vector2(x/pixelToMeteRatio, y/pixelToMeteRatio) ); MouseJointDef mjd = new MouseJointDef(); mjd.bodyA = groundBody; mjd.bodyB = boxBody; mjd.dampingRatio = 0.2f; mjd.frequencyHz = 30; mjd.maxForce = (float) (200.0f * boxBody.getMass()); mjd.collideConnected = true; mjd.target.set(v); return (MouseJoint) this.mPhysicsWorld.createJoint(mjd); }
jd.localAnchorA.set(-10.0f, 0.0f); jd.localAnchorB.set(-0.5f, -0.5f); p1 = jd.bodyA.getWorldPoint(jd.localAnchorA); p2 = jd.bodyB.getWorldPoint(jd.localAnchorB); d = p2.sub(p1); jd.length = d.length(); jd.localAnchorA.set(10.0f, 0.0f); jd.localAnchorB.set(0.5f, -0.5f); p1 = jd.bodyA.getWorldPoint(jd.localAnchorA); p2 = jd.bodyB.getWorldPoint(jd.localAnchorB); d = p2.sub(p1); jd.length = d.length(); jd.localAnchorA.set(10.0f, 20.0f); jd.localAnchorB.set(0.5f, 0.5f); p1 = jd.bodyA.getWorldPoint(jd.localAnchorA); p2 = jd.bodyB.getWorldPoint(jd.localAnchorB); d = p2.sub(p1); jd.length = d.length(); jd.localAnchorA.set(-10.0f, 20.0f); jd.localAnchorB.set(-0.5f, 0.5f); p1 = jd.bodyA.getWorldPoint(jd.localAnchorA); p2 = jd.bodyB.getWorldPoint(jd.localAnchorB); d = p2.sub(p1); jd.length = d.length(); jd.localAnchorA.set(0.5f, 0.0f);
@Override public void step(TestbedSettings settings) { // TODO Auto-generated method stub super.step(settings); // Traverse the contact results. Apply a force on shapes // that overlap the sensor. for (int i = 0; i < e_count; ++i) { if (m_touching[i].tf == false) { continue; } Body body = m_bodies[i]; Body ground = m_sensor.getBody(); CircleShape circle = (CircleShape) m_sensor.getShape(); Vec2 center = ground.getWorldPoint(circle.m_p); Vec2 position = body.getPosition(); Vec2 d = center.sub(position); if (d.lengthSquared() < Settings.EPSILON * Settings.EPSILON) { continue; } d.normalize(); Vec2 F = d.mulLocal(100f); body.applyForce(F, position); } }
@Override public void step(TestbedSettings settings) { super.step(settings); addTextLine("Use 'wasd' to move, 'e' and 's' drift."); if (getModel().getKeys()['w']) { Vec2 f = m_body.getWorldVector(new Vec2(0.0f, -30.0f)); Vec2 p = m_body.getWorldPoint(m_body.getLocalCenter().add(new Vec2(0.0f, 2.0f))); m_body.applyForce(f, p); } else if (getModel().getKeys()['q']) { Vec2 f = m_body.getWorldVector(new Vec2(0.0f, -30.0f)); Vec2 p = m_body.getWorldPoint(m_body.getLocalCenter().add(new Vec2(-.2f, 0f))); m_body.applyForce(f, p); } else if (getModel().getKeys()['e']) { Vec2 f = m_body.getWorldVector(new Vec2(0.0f, -30.0f)); Vec2 p = m_body.getWorldPoint(m_body.getLocalCenter().add(new Vec2(.2f, 0f))); m_body.applyForce(f, p); } else if (getModel().getKeys()['s']) { Vec2 f = m_body.getWorldVector(new Vec2(0.0f, 30.0f)); Vec2 p = m_body.getWorldCenter(); m_body.applyForce(f, p); } if (getModel().getKeys()['a']) { m_body.applyTorque(20.0f); } if (getModel().getKeys()['d']) { m_body.applyTorque(-20.0f); } }