[ODE] [PATCH] dBodyAddImpulse() etc functionality

Russ Smith russ at q12.org
Sat Jul 13 13:15:02 2002


> The attached patch adds impulse accumulators and the following
> functions to ODE:
> 
> dBodyAddImpulse
> dBodyAddRelImpulse
> dBodyAddImpulseAtPos
> dBodyAddImpulseAtRelPos
> dBodyAddRelImpulseAtPos
> dBodyAddRelImpulseAtRelPos


i thought about adding these impulse functions to ODE, but in the end i
have replaced these six functions (and the 8 extra reals in dBody) by a
much simpler solution: a single function called dWorldImpulseToForce().
to apply impulses to bodies, you can do this:

    // convert impulse ix,iy,iz to a force
    dVector3 force;
    dWorldImpulseToForce (world,stepsize, ix,iy,iz, force);
    // add the force
    dBodyAddForceXXX (body, force[0],force[1],force[2])
    ...
    dWorldStep (world, stepsize);

if that seems like a mouthful then you can just do this directly

    // add the scaled impulse as a force
    dBodyAddForceXXX (body, ix/stepsize,iy/stepsize,iz/stepsize);
    ...
    dWorldStep (world, stepsize);

the dWorldImpulseToForce() function is basically just a bit of
code-as-documentation for the above division by stepsize.

this is a lot simpler for ODE, i think. this will be checked into CVS
later today, and the new docs uploaded.

russ.

-- 
Russell Smith
http://www.q12.org