/** * Add force at centre of mass of body in absolute coordinates. * @param b b * @param fx fx * @param fy fy * @param fz fz * */ //ODE_API public static void dBodyAddForce (DBody b, double fx, double fy, double fz){ b.addForce(fx, fy, fz); }
/** * Add force at centre of mass of body in absolute coordinates. * @param b b * @param fx fx * @param fy fy * @param fz fz * */ //ODE_API public static void dBodyAddForce (DBody b, double fx, double fy, double fz){ b.addForce(fx, fy, fz); }
private void addOscillatingForce (double fscale) { //TZ static double a=0; body[0].addForce (fscale*Math.cos(2*a_3),fscale*Math.cos(2.7183*a_3), fscale*Math.cos(1.5708*a_3)); a_3 += 0.01; }
private void addSpringForce (double ks) { DVector3C p1 = body[0].getPosition(); DVector3C p2 = body[1].getPosition(); DVector3 tmp = new DVector3(); //dBodyAddForce (body[0],ks*(p2.v[0]-p1.v[0]),ks*(p2.v[1]-p1.v[1]),ks*(p2.v[2]-p1.v[2])); tmp.eqDiff(p2, p1).scale(ks); body[0].addForce(tmp); //dBodyAddForce (body[1],ks*(p1.v[0]-p2.v[0]),ks*(p1.v[1]-p2.v[1]),ks*(p1.v[2]-p2.v[2])); tmp.eqDiff(p1, p2).scale(ks); body[1].addForce(tmp); }
private void addSpringForce (double ks) { DVector3C p1 = dBodyGetPosition (body[0]); DVector3C p2 = dBodyGetPosition (body[1]); DVector3 tmp = new DVector3(); //dBodyAddForce (body[0],ks*(p2.v[0]-p1.v[0]),ks*(p2.v[1]-p1.v[1]),ks*(p2.v[2]-p1.v[2])); tmp.eqDiff(p2, p1).scale(ks); body[0].addForce(tmp); //dBodyAddForce (body[1],ks*(p1.v[0]-p2.v[0]),ks*(p1.v[1]-p2.v[1]),ks*(p1.v[2]-p2.v[2])); tmp.eqDiff(p1, p2).scale(ks); body[1].addForce(tmp); }
box2_body.addForce(0,500,0); box2_body.addForce(0,-500,0); System.out.print((pos.get1()-pos.get1())); break; case 'd': box2_body.addForce(500,0,0); System.out.print((pos.get0()-pos.get0())); break; case 'a': box2_body.addForce(-500,0,0); System.out.print((pos.get0()-pos.get0())); break; break; case 'o': box2_body.addForce(10000,0,0); break; case 'v':
@Override public void step (boolean pause) { int i; if (!pause) { //static double angle = 0; angle += 0.05; body[NUM-1].addForce(0,0,1.5*(Math.sin(angle)+1.0)); space.collide(0,myNearCallback); world.step(0.05); /* remove all contact joints */ contactgroup.empty(); } dsSetColor (1,1,0); dsSetTexture (DS_TEXTURE_NUMBER.DS_WOOD); for (i=0; i<NUM; i++) dsDrawSphere (body[i].getPosition(), body[i].getRotation(),RADIUS); }
@Override public void step (boolean pause) { if (!pause) { // static double angle = 0; angle += 0.05; body[NUM-1].addForce (0,0,1.5*(Math.sin(angle)+1.0)); space.collide (0,nearCallback); world.step (0.05); // remove all contact joints contactgroup.empty(); } DVector3 sides = new DVector3(SIDE,SIDE,SIDE); dsSetColor (1,1,0); dsSetTexture (DS_TEXTURE_NUMBER.DS_WOOD); for (int i=0; i<NUM; i++) dsDrawBox (body[i].getPosition(),body[i].getRotation(),sides); }
private void simLoop (boolean pause) { int i; if (!pause) { // apply forces to all bodies for (i=0; i<N1; i++) { for (int j=0; j<N2; j++) { body[i][j].addForce (FORCE*(i+1),0,0); } } OdeHelper.spaceCollide (space,0,nearCallback); world.step (0.05); // remove all contact joints contactgroup.empty(); } dsSetColor (1,0,1); DVector3 sides = new DVector3(LENGTH,LENGTH,HEIGHT); for (i=0; i<N1; i++) { for (int j=0; j<N2; j++) { dsDrawBox (box[i][j].getPosition(), box[i][j].getRotation(), sides); } } }
@Override public void step (boolean pause) { if (!pause) { // static double angle = 0; angle += 0.05; body[NUM-1].addForce (0,0,1.5*(sin(angle)+1.0)); space.collide (0,nearCallback); world.step (0.05); // remove all contact joints contactgroup.empty(); } DVector3 sides = new DVector3(SIDE,SIDE,SIDE); dsSetColor (1,1,0); dsSetTexture (DS_TEXTURE_NUMBER.DS_WOOD); for (int i=0; i<NUM; i++) dsDrawBox (body[i].getPosition(),body[i].getRotation(),sides); }
@Override public void step (boolean pause) { if (!pause) { // add random forces and torques to all bodies int i; final double scale1 = 5; final double scale2 = 5; for (i=0; i<NUM; i++) { body[i].addForce ( scale1*(dRandReal()*2-1), scale1*(dRandReal()*2-1), scale1*(dRandReal()*2-1)); body[i].addTorque ( scale2*(dRandReal()*2-1), scale2*(dRandReal()*2-1), scale2*(dRandReal()*2-1)); } world.step (0.05); createTest(); } // float sides[3] = {SIDE,SIDE,SIDE}; dsSetColor (1,1,0); for (int i=0; i<NUM; i++) dsDrawSphere (body[i].getPosition(), body[i].getRotation(), RADIUS); }
if (BOX) { body[bodies-1].addForce(speed,0,0);