[ODE] amotor bugfix

Rodrigo Hernandez kwizatz at aeongames.com
Sat Oct 22 22:09:10 MST 2005


It's fixed on UNSTABLE branch, it was probably fixed there, but not on HEAD.

Geoff Carlton wrote:

> Actually, the bug has been found before, on 30/9/04.  The result of 
> the discussion was apparently the patch file committed into cvs, so 
> I'm not sure why the bug is still there now, a year later.
>
> [ODE] bug in amotorComputeGlobalAxes:
>
> @@ -2301,20 +2301,20 @@
>    // relative to b1
>    dMULTIPLY0_331 (ax[i],joint->node[0].body->R,joint->axis[i]);
>      }
> -      if (joint->rel[i] == 2) {
> +      else if (joint->rel[i] == 2) {
>    // relative to b2
>    if (joint->node[1].body) {   // jds: don't assert, just ignore
>    dMULTIPLY0_331 (ax[i],joint->node[1].body->R,joint->axis[i]);
>
>
>
> Nagymáthé Dénes wrote:
>
>> Hi,
>>  
>> I've just realized a bug in amotor; it might be responsible for 
>> confusion of many people recently:
>> In amotorComputeGlobalAxes(), when mode is dAMotorUser (the else 
>> case), there's an else statement missing, causing the use of _global_ 
>> axis if the axis is set relative to b1!
>> The code looks like this:
>>  
>>       if (joint->rel[i] == 1) {
>>  // relative to b1
>>  dMULTIPLY0_331 (ax[i],joint->node[0].body->R,joint->axis[i]);
>>       } else  <----THIS WAS MISSING **********
>>       if (joint->rel[i] == 2) {
>>  // relative to b2
>>         dIASSERT(joint->node[1].body);
>>  dMULTIPLY0_331 (ax[i],joint->node[1].body->R,joint->axis[i]);
>>       }
>>       else {
>>  // global - just copy it
>>  ax[i][0] = joint->axis[i][0];
>>  ax[i][1] = joint->axis[i][1];
>>  ax[i][2] = joint->axis[i][2];
>>       }
>> I can't believe no one has realized it before. :o)
>>  
>> Denes
>>  
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> ODE mailing list
>> ODE at q12.org
>> http://q12.org/mailman/listinfo/ode
>>  
>>
> _______________________________________________
> ODE mailing list
> ODE at q12.org
> http://q12.org/mailman/listinfo/ode
>



More information about the ODE mailing list