Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Rigid body dynamics

  1. Jun 14, 2006 #1

    I'm developing a video game, in which I'm making a charactar with rigid-body physics (sometimes called "ragdoll" physics). The way I've made it is probably not completely realistic, because I only use velocity vectors to calculate the position of each joint of the "ragdoll", based on an initial velocity vector applied to a joint. If you want to check it out, you can download it http://mega.ist.utl.pt/~vbfr/Ragdoll.zip"

    The way I do this is illustated in this image http://mega.ist.utl.pt/~vbfr/noangle.png"

    Anyway, the problem I have now is how to calculate the velocity vector of joints that make an angle that is restricted (an angle that shouldn't get any bigger, for example). Please see this simplified diagram that illustrates my problem: http://mega.ist.utl.pt/~vbfr/angle2.png"

    In the diagram, how should I calculate vectors v1 and v2? Note that in the diagram, the entire body should be rigid, because of the angle restriction.

    I would truly appreciante any help on this...
    Last edited by a moderator: Apr 22, 2017
  2. jcsd
  3. Jun 14, 2006 #2


    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    If I understand the problem correctly, that the indicated angle should remain constant? Then solution is simply;

    [tex]\vec{v} = \vec{v_{1}} = \vec{v_{2}}[/tex]
  4. Jun 14, 2006 #3
    That's what I though at first, but that's not correct because the whole body should rotate, until the rotation stabilizes when the body is in kind of a horizontal position (I don't know how to explain it better but if you don't understand I'll draw a diagram). Imagine you have something shaped like a "V" on a table and you drag one end.
  5. Jun 15, 2006 #4


    User Avatar
    Staff Emeritus
    Science Advisor

    The motion of a rigid body can be specified by giving:

    1) the motion of a specific point (pick a point, say for instance point 1, and use it as a reference).

    2) the angular velocity of rotation (done by specifying an axis of rotation and an angular velocity, i.e. a vector [itex]\hat{\omega}[/itex].

    The formula for the velocity [itex]v_i[/itex] of any point with coordinates [itex]r_i[/itex] will be:

    v_i = v_{ref} + \hat{w} \times (r_i - r_{ref})

    [itex]v_{ref}[/itex] is the velocity of the reference point
    [itex]r_{ref}[/itex] are the coordinates of the reference point
    [itex]r_i - r_{ref}[/itex] is the difference in coordinates between the reference point and the arbitrary point [itex]r_i[/itex] which has the velocity [itex]v_i[/itex].

    Hopefully you are familiar with the vector cross product, if not try reading


    and ask questions as needed.
  6. Jun 15, 2006 #5
    Thank you!

    I just didn't understand one thing, how do I know what's the axis of rotation and angular velocity?
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook