Re: damping functions
"Daniel K. O." <[email protected]> Sun, 25 Nov 2007 22:13:30 -0200
| Newsgroups | gmane.comp.lib.ode |
|---|---|
| Message-ID | <[email protected]> |
Right before applying the changes, I went to look how Bullet does it. Instead of calculating a damping force/torque, it just takes the linear/angular velocities from the last timestep and multiply them by a per-body damping factor. If the velocity is not above a lower bound, it is zeroed. Should we follow this approach? If we let the user specify a lower bound, the current proposal gets a bit cumbersome: dBodyDamp(body, linScale, linThreshold, angScale, angThreshold); Considering that the thresholds will probably not change, it makes sense to store them in the body; actually we already have them, in the auto-disable feature; is there any reason for the user not wanting to use auto-disabling while using the damping? Other idea: global damping, much like the global auto-disable settings. Is there any problem linking the damping to the auto-disabling? My idea now is to make it like this: // Defaults for newly created bodies void dWorldSetLinearDamp(world, scale); void dWorldSetAngularDamp(world, scale); void dBodySetLinearDamp(body, scale); // for symmetry with get void dBodySetAngularDamp(body, scale); // for symmetry with get void dBodySetDamp(body, linearScale, angularScale); // convenience // These just map to the auto-disable threshold functions, // defined only for consistency. void dWorldSetLinearDampThreshold(world, threshold); void dWorldSetAngularDampThreshold(world, threshold); void dBodySetLinearDampThreshold(body, threshold); void dBodySetAngularDampThreshold(body, threshold); Now the damping happens automatically during the step function. Considering the damping helps the auto-disabling, it would be more correct to add those functions to the AutoDisable group; but the function names would be too long. :) Please comment. -- Daniel K. O. "The only way to succeed is to build success yourself"