Generalizing collision normal between two arbitrary shapes

Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
1 reply · 1K views
StarWarsNerd
Messages
19
Reaction score
1
I am working on a physics engine, and I have a question about the collision normal. There are a lot of different ways people say to calculate this, perpendicular to the collision angle, perpendicular to the edge of body 'B', etc. I was wondering if it would be okay to assume the collision normal is always [1,0]. If that is not okay, is this:
  • vector = distance(A.Center, B.Center)
  • angle = atan2(vector.Y, vector.X) + PI / 2
  • normal = [cos(angle), sin(angle)]
 
Physics news on Phys.org
Not sure how you are defining collision normal, but basing it on the line joining the mass centres does not sound right.
First, there is the question of the tangent plane at the point of contact. The normal to that could be considered a collision normal.
Next, there is the relative velocity. The direction of that vector is also relevant.