[ODE] how to stopbody enabling by joint

Krystian Ligenza kxxl at poczta.onet.pl
Tue Oct 23 12:33:44 MST 2007


Hi again,

I have corrected that pull down of platform. It was problem with fixed 
joint and dJointSetFixed(...), becouse after I change position of 
platform small error was produced in fixed joint that hold my platform, 
and it tried to correct position of platform body, but when I call 
dJointSetFixed, that error was commited as correct position. Can I 
propose adding method to set fixed values from outside? I have written 
method that solved my problem:
//---------------
void dJointSetFixedBodies (dJointID j,const dVector3 p1,const 
dQuaternion q1,const dVector3 p2,const dQuaternion q2)
{
  dxJointFixed* joint = (dxJointFixed*)j;
  dUASSERT(joint,"bad joint argument");
  dUASSERT(joint->vtable == &__dfixed_vtable,"joint is not fixed");
  int i;
  if (joint->node[0].body) {
    if (joint->node[1].body) {
      dQMultiply1 (joint->qrel,q1,q2);
      dReal ofs[4];
      for (i=0; i<4; i++) ofs[i] = p1[i];
      for (i=0; i<4; i++) ofs[i] -= p2[i];
      dMULTIPLY1_331 (joint->offset,q1,ofs);
    }
    else {
      // set joint->qrel to the transpose of the first body's q
      joint->qrel[0] = q1[0];
      for (i=1; i<4; i++) joint->qrel[i] = -q1[i];
      for (i=0; i<4; i++) joint->offset[i] = p1[i];
    }
  }
}
//---------------
it is same as dJointSetFixed(...) but takes values from user. What you 
think about it?

BTW. still haven't solve error in collision with platform that sticks 
rope inside of box, any help?

Cheers,
Krystian

Krystian Ligenza pisze:
> here is how fixed joint behave:
>
> http://www.kxl.com.pl/ODE/KxL_Rope_platform_jointFixed.avi
>
> everything would be ok, except this pull down (I rotate, platform goes 
> down. I move side, same thing). Any idea to make it correct


More information about the ODE mailing list