Sinova/Collisions

How to get the normal of the line I collide with?

Closed this issue · 4 comments

Hi,

Thanks for this library, we're looking forward to using it. After reading the documentation, we have one question however. How would one go about calculating the rebound vector / direction when a collision occurs? For example, when bouncing a ball against a wall, how do I make it bounce in the right direction?

Thank you

The normal of the line you collide with is given via the Result object's overlap_x and overlap_y properties. Determining the resulting bounce angle is a matter of flipping the incoming angle across the axis that those two properties describe.

A more in-depth explanation can be found here. You might be able to find some better tutorials out there, but the concept is the same.

Thanks for your answer, that should get me on my way.

I may be wrong, but could it be that many users of Collisions would find themselves with this requirement?

Perhaps variables like bounciness, etc. make this too complex a problem to add to the Result object and have it work for everybody. Perhaps instead of a solution in code, an example could be added to the docs?

Rigid bodies make up only a small subset of use-cases for collision detection, so adding code specifically for it would be outside of the scope of this library. Collisions is meant to be a low-level library. If your project requires friction, bounciness, momentum, etc, you're better off using a physics engine (or writing your own that wraps around Collisions).

Agreed 👍