/jbox2d-testbed/src/main/java/org/jbox2d/testbed/tests/FreePendulumTest.java

http://jbox2d.googlecode.com/ · Java · 80 lines · 65 code · 15 blank · 0 comment · 1 complexity · b1896bd22ecc4def3b601a4b3bbc55ae MD5 · raw file

  1. package org.jbox2d.testbed.tests;
  2. import org.jbox2d.collision.shapes.CircleShape;
  3. import org.jbox2d.collision.shapes.PolygonShape;
  4. import org.jbox2d.collision.shapes.Shape;
  5. import org.jbox2d.common.Vec2;
  6. import org.jbox2d.dynamics.Body;
  7. import org.jbox2d.dynamics.BodyDef;
  8. import org.jbox2d.dynamics.BodyType;
  9. import org.jbox2d.dynamics.joints.RevoluteJointDef;
  10. import org.jbox2d.testbed.framework.TestbedTest;
  11. public class FreePendulumTest extends TestbedTest
  12. {
  13. private final boolean switchBodiesInJoint;
  14. public FreePendulumTest(boolean switchBodiesInJoint)
  15. {
  16. this.switchBodiesInJoint = switchBodiesInJoint;
  17. }
  18. @Override
  19. public void initTest(boolean argDeserialized)
  20. {
  21. Body pendulum;
  22. Body base;
  23. Body ground;
  24. {
  25. CircleShape circleShape = new CircleShape();
  26. circleShape.m_radius = 1;
  27. Shape shape = circleShape;
  28. BodyDef bodyDef = new BodyDef();
  29. bodyDef.type = BodyType.DYNAMIC;
  30. bodyDef.position.set(-5, 0);
  31. bodyDef.allowSleep = false;
  32. pendulum = getWorld().createBody(bodyDef);
  33. pendulum.createFixture(shape, 1);
  34. }
  35. {
  36. PolygonShape shape = new PolygonShape();
  37. shape.setAsBox(1, 1);
  38. BodyDef bodyDef = new BodyDef();
  39. bodyDef.type = BodyType.DYNAMIC;
  40. bodyDef.position.set(0, 2);
  41. bodyDef.allowSleep = false;
  42. base = getWorld().createBody(bodyDef);
  43. base.createFixture(shape, 1);
  44. }
  45. {
  46. PolygonShape shape = new PolygonShape();
  47. shape.setAsBox(3, 1);
  48. BodyDef bodyDef = new BodyDef();
  49. bodyDef.type = BodyType.STATIC;
  50. ground = getWorld().createBody(bodyDef);
  51. ground.createFixture(shape, 0);
  52. }
  53. RevoluteJointDef jointDef = new RevoluteJointDef();
  54. if (switchBodiesInJoint)
  55. jointDef.initialize(pendulum, base, new Vec2(0, 0));
  56. else
  57. jointDef.initialize(base, pendulum, new Vec2(0, 0));
  58. getWorld().createJoint(jointDef);
  59. }
  60. @Override
  61. public String getTestName()
  62. {
  63. return "Free Pendulum " + (switchBodiesInJoint ? "1" : "0");
  64. }
  65. }