[ODE] Restoring Force

Patrick Enoch Hendrix_ at gmx.net
Mon Jul 9 15:31:09 MST 2007


I think you can add a rotation-limot with histop=lostop=0 and  
maxforce=f. That should do all the work for you. You need to check  
the joint.cpp.
I dont know if the universal joint suports limiting the agnles, but  
you can easily duplicate the joint-type and make up a new joint that  
adds those 2 limots.
Or enhance the universal joint.


On 08.07.2007, at 22:06, Tobias Zimmer wrote:

> Hi all!
> I'm still working at my brushes and returned to the matter of the
> restoring force.
> The restoring forces are mostly calculated over the objects distance
> to the position
> where it should be. But if an object is turning around in space this
> distance isn't fix.
> So I decided to take the way over the angle of the segments in the
> bristles. If the
> angle is zero and the bristle such is not bended the force is zero as
> well. With
> growing angle the force gets bigger. This is the way I programmed it:
>    dReal force= -0.00000000015;
>    for (i=25; i<100; i++) {
>        dReal angle1 = dJointGetUniversalAngle1(joint[i]);
>        dReal angle2 = dJointGetUniversalAngle2(joint[i]);
>        dBodyAddForce (segment[i],-1*force*sin(angle1),-1*force*sin
> (angle2),0);
>        }
> Pitily it doesn't really work, the bristles are not returning to
> their position. The
> angles even get values which they are forbidden to get because of the
> hi- and
> lostop-params.
> So, any idea, what I did wrong? How would you program a flexible
> "stick"?
> Imagine a carbone bar or something similar. You should be able to
> bend it, but
> it has to return to its straight form after the deformation.
> desperate sunday-evening regards,
> Tobias
> _______________________________________________
> ODE mailing list
> ODE at ode.org
> http://ode.org/mailman/listinfo/ode

More information about the ODE mailing list