2
\$\begingroup\$

I have been implementing a basic physics engine for a small game project I'm working on. It has very specific requirements, so I decided to try and write my own physics engine to meet them. I found this paper, which seemed to be reasonably simple, and provide answers for everything I needed.

https://drive.google.com/file/d/0Bze6mKYvrpOKYjdkODVhMTAtM2Q4Zi00NzgyLWE2YzMtN2MwZmQ4NjA3OWMw/view?ddrp=1&hl=en#

So far I have successfully implemented collision detection (using my own custom algorithm designed to suit my particular requirements), as well as the collision response (See section 2.6.2.1 on page 41 of the paper).

I have, however, become stuck on solving simultaneous collisions. The paper provides equations (see section 2.6.7.1 on page 51), but I am unable to understand or implement them.

Can someone explain how these are supposed to be implemented?

Here is my current understanding of what is presented, and why is must be wrong:

In terms of implementation, I'm not sure what they mean by "combined contact impulse," as they do not mention to term elsewhere and fail to explain what they are "combining" (Possibly the angular and linear impulse, but I'm not sure how those aught to be combined).

I am also not sure how these formulas are supposed to work. It appears in the first equation just sum the the combined impulse (whatever that is), and use that to increase the velocity, but they only add it in 1/k (where k is the number of iteration) size chunks k times. This basically just seems to result in summing the velocities. This is not physically accurate since multiple collision against the same object will be summed resulting in unrealistically strong velocities.

I'm even more confused by the next equation. It appears to add r cross n to the rotational velocity, with complete disregard for impulse magnitude. Doesn't make sense ether.

The third equation has the same problem as the first.

I feel like some kind of integration or transform needs to happen on each iteration that is not shown, but I am not sure what it should be.

Please feel free to leave comments asking for clarification. I'm utterly confused, and I would not be surprised if my questions lack a little coherence.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.