|
|
|
|
|
by beaumayns
2153 days ago
|
|
I had to figure this out recently, a couple things that really helped me are Erin Catto's GDC lectures (particularly [1]) and Allen Chou's game physics articles [2]. I think of a Jacobian as a way to transform the velocities from however they're stored for the interacting objects into linear world-space velocities. For example, in 2D rigid body physics, rotational velocity is usually just a single number representing how fast something is spinning. Given a radius from the center of a spinning object (e.g. object origin -> a contact point in world space), the instantaneous linear velocity is the rotation speed times the tangent to that radius. Therefore, the Jacobian is just that tangent vector - multiplication by that vector transforms scalar rotational velocities into 2D linear velocities. The Jacobian for the object's linear velocity is just the identity matrix. The rotation Jacobian is more complicated in 3D and 4D, but the principal is the same - find a matrix (at a particular point, usually the contact point or the joint location) to multiply with whatever represents rotational velocity to get the linear velocity. [1]https://box2d.org/files/ErinCatto_ModelingAndSolvingConstrai...
[2]http://allenchou.net/2013/12/game-physics-constraints-sequen... |
|