[ODE] how exactly Contact Joints work?

Roland Plüss roland at rptd.dnsalias.net
Tue Aug 29 13:51:52 MST 2006

scanning through the documentation i could not really find this one out.
so far i know that a contact joint composes of a Hit-Point, a Normal and
a Depth. ode has no knowledge about the shape of the colliding geometry
hence it only knows the current Body Position, Body Velocity, Body
Momentum and those three values there. now how exactly does it work with
the quick step function?

so let's take an example of a box like this:

|  | \   velocity: down-right
+--+  \

there exist hence two contact points: one with the sloped wall and one
with the floor. this yields two contact joints with two different
depths. now does ode calculate the force needed to push the object out
of each contact point once or for every iteration? how does it know when
to stop? using the current object position compared with the position at
the start of the function and then comparing with depth?

how in this situation?

|      |    velocity: down
--+  +--
  |  |

the box now rests on a slit in the ground. there are two contact joints.
calculating the force needed to push the object away from the ground for
each of the contact results twice the force needed.

how does ode handle these double-contact situations? i try to figure out
how i need to use contact joints to obtain a correct result and just
can't get my head around it.


Leader and Head Programmer
- Game: Epsylon ( http://epsylon.rptd.dnsalias.net/ )
- Game Engine: Drag(en)gine (
http://epsylon.rptd.dnsalias.net/dragengine.php )
- Normal Map Generator: DENormGen (
http://epsylon.rptd.dnsalias.net/denormgen.php )

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 252 bytes
Desc: OpenPGP digital signature
Url : http://q12.org/pipermail/ode/attachments/20060829/fbe59cde/signature.bin

More information about the ODE mailing list