0
$\begingroup$

I am trying to make a simple 2D physics simulation where many different 2D balls move around and collide with each other. Currently, I am able to resolve their collision for translational motion (i.e. change in velocity in each collision points only in the normal direction to the contact point).

I want to add in the rotation of these balls when they collide in my model. However, it has been surprisingly challenging to find any relevant resources for resolving angular and tangential components in 2D circular collisions, hence I am asking for help on this specifically.

Some example scenarios include:

  • A ball falling on another ball below it that is slightly to its left. The friction between these two balls in the collision should generate rotation
  • A ball rolling on the ground; its initial angular velocity should result in changes translational velocity relative to its contact point, like a wheel rolling.

Any responses will be greatly appreciated!

$\endgroup$
3
  • $\begingroup$ This used to be a more common topic in mechanics but it has fallen out of favor. Are you using a restitution coefficient or Hertz theory? See if this paper gives you any insights. ruina.tam.cornell.edu/research/topics/collision_mechanics/… $\endgroup$
    – Mariano G
    Commented Oct 16 at 16:09
  • $\begingroup$ @MarianoG I am using a restitution coefficient $\endgroup$
    – Paul
    Commented Oct 17 at 1:16
  • $\begingroup$ OK that is what I assumed. In that case, the link I gave you may be useful. $\endgroup$
    – Mariano G
    Commented Oct 17 at 12:20

1 Answer 1

1
$\begingroup$

I hope this will give you a little idea of how to execute it.


2D Circular Collisions with Rotation

we have to see normal impulse as well as tangential impulse For the calculation of impulse, we can do like at the point of contact, the total impulse $J$ can be split into a normal component $J_n$ and a tangential component $J_t$ so that $$J=J_n+J_t,$$ where normal impulse is responsible for changing the linear velocity in the normal direction and tangential impulse causes angular momentum changes due to friction at the contact point, inducing or modifying rotation.

When we talk about elastic collision, it will take one full day to explain, write, etc., so we will ignore it for now.


The next thing we should focus on is the angular velocity update. The torque generated by the tangential impulse results in a change in angular velocity $\omega$. The relation is $$ \tau =r \times F_t=r \, J_t,$$ where $r$ is the radius of the ball. The change in angular velocity is $$\omega = \frac{\tau}{I},$$ where $I$ is moment of inertia, which is $I=1/2 \, mr^2$.


Next, we come to translational velocity update due to rotation. $$v_{\text{contact}}=V_{cm} + r\omega.$$ This means you’ll need to update the translational velocity of the balls as well, considering the angular velocity after the collision.

Refer to Box2D physics engine for a better understanding.

$\endgroup$
1

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.