public static void dMassAdjust (DMass m, double newmass) { m.adjust(newmass); }
public static void dMassSetCapsule (DMass m, double density, int direction, double radius, double length) { m.setCapsule(density, direction, radius, length); } //ODE_API
public static void dMassAdd (DMass m, DMassC b) { m.add(b); }
m.setBox (DENSITY,sides[0], sides[1], sides[2]); obj[i].geom[0] = OdeHelper.createBox (space,sides[0], sides[1], sides[2]); m.setCapsule (DENSITY,3,sides[0],sides[1]); obj[i].geom[0] = OdeHelper.createCapsule (space,sides[0],sides[1]); } else if (cmd == 'v') { m.setBox (DENSITY,0.25,0.25,0.25); obj[i].geom[0] = OdeHelper.createConvex (space, ConvexCubeGeom.planes, m.setCylinder (DENSITY,3,sides[0],sides[1]); obj[i].geom[0] = OdeHelper.createCylinder (space,sides[0],sides[1]); m.setSphere (DENSITY,sides[0]); obj[i].geom[0] = OdeHelper.createSphere (space,sides[0]); m.setTrimesh( DENSITY, (DTriMesh) obj[i].geom[0] ); DVector3 c = new DVector3( m.getC() ); System.out.println("mass at " + c); c.scale(-1); obj[i].geom[0].setPosition( c ); m.translate( c ); m.setZero (); double radius = dRandReal()*0.25+0.05; obj[i].geom[k] = OdeHelper.createSphere (space,radius); m2.setSphere (DENSITY,radius);
m.setZero (); m.setParameters (10, 0,0,0, 1,2,3, 4,5,6); println(" FAILED (1)");//ifnomsg ; } catch (ExpectedException e) { m.setZero (); DMatrix3 I =(DMatrix3) m.getI(); if (m.getMass()==10 && m.getC().get0()==0.1 && m.getC().get1()==0.2 && m.getC().get2()==0.15 && I.get00()==3 && I.get11()==5 && I.get22()==14 && I.get01()==3.1 && I.get02()==3.2 && I.get12()==4 && I.get10()==3.1 && I.get20()==3.2 && I.get21()==4) println ("\tpassed (3)"); else println ("\tFAILED (3)"); m.setZero (); m.setSphere (1.4, 0.86); I = (DMatrix3)m.getI(); if (cmp(m.getMass(),3.73002719949386) && m.getC().get0()==0 && m.getC().get1()==0 && m.getC().get2()==0 && cmp(I.get00(),1.10349124669826) && cmp(I.get11(),1.10349124669826) && m.setZero (); m.setCapsule (1.3,1,0.76,1.53); I = (DMatrix3)m.getI(); if (cmp(m.getMass(),5.99961928996029) && m.getC().get0()==0 && m.getC().get1()==0 && m.getC().get2()==0 && cmp(I.get00(),1.59461986077384) && cmp(I.get11(),4.21878433864904) &&
private static void computeMassParams (DMass m, DVector3[] q, DVectorN pm) { double pmi, q0, q1, q2; m.setZero (); DVector3 C = m.getC().clone(); DMatrix3 I = m.getI().clone(); for (int i=0; i<NUM; i++) { pmi = pm.get(i); m.setMass(m.getMass() + pmi);// += pmi; C.eqSum( C, q[i], pmi); q0 = q[i].get0(); q1 = q[i].get1(); q2 = q[i].get2(); I.add(0,0, pmi*(q1*q1 + q2*q2)); I.add(1,1, pmi*(q0*q0 + q2*q2)); I.add(2,2, pmi*(q0*q0 + q1*q1)); I.sub(0,1, pmi*(q0*q1)); I.sub(0,2, pmi*(q0*q2)); I.sub(1,2, pmi*(q1*q2)); } //for (j=0; j<3; j++) m.c.v[j] /= m.mass; C.scale(1./m.getMass()); I.set(1,0, I.get(0,1)); I.set(2,0, I.get(0,2)); I.set(2,1, I.get(1,2)); m.setC(C); m.setI(I); }
q[i].sub( m.getC() ); anchor_m.setBox (1,SIDE,SIDE,SIDE); anchor_m.adjust (0.1); anchor_body.setMass (anchor_m); pos1.get1()+ q[i].get1(), pos1.get2()+ q[i].get2()); m.setBox (1,SIDE,SIDE,SIDE); m.adjust (pm.get(i)); particle[i].setMass (m); test_body.setPosition (pos2); computeMassParams (m,q,pm); m.setMass( m.getMass() + anchor_m.getMass()); //+= anchor_m._mass; m.setI( m.getI().clone().add(anchor_m.getI()) ); test_body.setMass (m);
private void constructWorldForTest (double gravity, int bodycount, /* body 1 pos */ double pos1x, double pos1y, double pos1z, /* body 2 pos */ double pos2x, double pos2y, double pos2z, /* body 1 rotation axis */ double ax1x, double ax1y, double ax1z, /* body 1 rotation axis */ double ax2x, double ax2y, double ax2z, /* rotation angles */ double a1, double a2) { // create world world = OdeHelper.createWorld(); world.setERP (0.2); world.setCFM (1e-6); world.setGravity (0,0,gravity); DMass m = OdeHelper.createMass(); m.setBox (1,SIDE,SIDE,SIDE); m.adjust (MASS); body[0] = OdeHelper.createBody (world); body[0].setMass (m); body[0].setPosition(pos1x, pos1y, pos1z); DQuaternion q = new DQuaternion(); dQFromAxisAndAngle (q,ax1x,ax1y,ax1z,a1); body[0].setQuaternion (q); if (bodycount==2) { body[1] = OdeHelper.createBody (world); body[1].setMass (m); body[1].setPosition (pos2x, pos2y, pos2z); dQFromAxisAndAngle (q,ax2x,ax2y,ax2z,a2); body[1].setQuaternion (q); } else body[1] = null; }
m.setBox( DENSITY,sides[0],sides[1],sides[2] ); obj[i].geom[0] = OdeHelper.createBox( space,sides[0],sides[1],sides[2] ); m.setCapsule( DENSITY,3,sides[0],sides[1] ); obj[i].geom[0] = OdeHelper.createCapsule( space,sides[0],sides[1] ); m.setCylinder (DENSITY,3,sides[0],sides[1]); obj[i].geom[0] = OdeHelper.createCylinder (space,sides[0],sides[1]); m.setSphere( DENSITY,sides[0] ); obj[i].geom[0] = OdeHelper.createSphere( space,sides[0] ); m.setTrimesh( DENSITY, triMesh ); DVector3 mc = new DVector3( m.getC() ); m.translate( mc );
m.setBox (1, BODY2_SIDES[0], BODY2_SIDES[1], BODY2_SIDES[2]); m.adjust (Mass1); geom[BODY2] = OdeHelper.createBox (space, BODY2_SIDES[0], BODY2_SIDES[1], BODY2_SIDES[2]); geom[BODY2].setBody (body[BODY2]); m.setCapsule (1, 1, RADIUS, BODY1_LENGTH); m.adjust(Mass1); geom[BODY1] = OdeHelper.createCapsule (space, RADIUS, BODY1_LENGTH); geom[BODY1].setBody (body[BODY1]); mRect.setBox(1, RECT_SIDES[0], RECT_SIDES[1], RECT_SIDES[2]); m.add(mRect);
m.setBox (1,LENGTH,WIDTH,HEIGHT); m.adjust (CMASS/2.0); body[bodyI].setMass (m); box[boxI] = OdeHelper.createBox (space,LENGTH,WIDTH,HEIGHT); dQFromAxisAndAngle (q,1,0,0,M_PI*0.5); body[bodyI+i].setQuaternion (q); m.setSphere (1,RADIUS); m.adjust (WMASS); body[bodyI+i].setMass (m); sphere[sphereI+i-1] = OdeHelper.createSphere (space,RADIUS); m.setBox (1,LENGTH,WIDTH,HEIGHT); m.adjust (CMASS/2.0); b.setMass (m); DFixedJoint j = OdeHelper.createFixedJoint(world, null);
m.setBox (1,WBOXSIZE,WBOXSIZE,WBOXSIZE); m.adjust (WALLMASS); wall_bodies[wb].setMass (m); wall_boxes[wb] = OdeHelper.createBox (space,WBOXSIZE,WBOXSIZE,WBOXSIZE); m.setSphere (1,RADIUS); m.adjust (BALLMASS); b.setMass (m); sphere[spheres] = OdeHelper.createSphere (space,RADIUS); b = OdeHelper.createBody (world); b.setPosition (0,0,2); m.setSphere (1,RADIUS); m.adjust (1); b.setMass (m); sphere[spheres] = OdeHelper.createSphere (space,RADIUS); m.setSphere (1,RADIUS); m.adjust (0.1); b.setMass (m); sphere[spheres] = OdeHelper.createSphere (space,RADIUS); m.setBox (1,WIDTH,LENGTH,HEIGHT); m.adjust (CMASS); body[bodies].setMass (m); box[boxes] = OdeHelper.createBox (space,WIDTH,LENGTH,HEIGHT); m.setSphere(1, RADIUS); m.adjust(WMASS);
m.setBox (DENSITY,sides[0],sides[1],sides[2]); obj[i].geom[0] = OdeHelper.createBox (space,sides[0],sides[1],sides[2]); m.setCapsule (DENSITY,3,sides[0],sides[1]); obj[i].geom[0] = OdeHelper.createCapsule (space,sides[0],sides[1]); m.setCylinder (DENSITY,3,sides[0],sides[1]); obj[i].geom[0] = OdeHelper.createCylinder (space,sides[0],sides[1]); m.setSphere (DENSITY,sides[0]); obj[i].geom[0] = OdeHelper.createSphere (space,sides[0]);
public static void dMassSetBox (DMass m, double density, double lx, double ly, double lz) { m.setBox(density, lx, ly, lz); } //ODE_API
DBody body = OdeHelper.createBody(world); DMass m = OdeHelper.createMass(); m.setCapsule(1, 3, radius, cyllen); body.setMass(m); DCapsule geom = OdeHelper.createCapsule(space, radius, cyllen); totalMass += m.getMass(); DxRagdollBody bone = new DxRagdollBody(body, cyllen, radius, body.getPosition(), body.getQuaternion()); bones.add(bone);
public static void dMassSetCylinderTotal (DMass m, double total, int direction, double radius, double length) { m.setCylinderTotal(total, direction, radius, length); }