I am trying to calculate the final velocities of two equal mass 2-dimensional circles after an elastic collision. I have tried to figure it out using formulas I know from high school physics, but nothing seems to work. My known variables are:

  • initial x and y velocities for each circle
  • x and y distances between the centres of the circles at the time of the collision

The variables I would like to solve for are:

  • final x and y velocities for each circle

Here are diagrams showing all the variables:

variable diagrams

  • $\begingroup$ Can you please show what you have tried? $\endgroup$ – TanMath Nov 26 '15 at 23:39
  • $\begingroup$ Do these circular objects have the same mass? If so, then a simple approach would be to go to the center-of-mass frame of the collision, in which case the collision will appear symmetric. $\endgroup$ – user93237 Nov 26 '15 at 23:52
  • $\begingroup$ You need to clarify what isn't working, for example solving for the analytic solution is easier than implementing the solution in a video game with time-stepping. $\endgroup$ – Mikhail Nov 27 '15 at 0:50
  • $\begingroup$ Do the circles have friction and rotational inertia? If so their trajectories will be affected by the rate of rotation. $\endgroup$ – Rick May 18 '16 at 18:46

So I came up with a graphical solution to this kind of problem. It might help you understand the process of collisions, without giving you a direct answer.

  1. Consider an Cartesian coordinate system xy for measuring momentum. Draw the initial momentum vectors $\vec{A} = m_A \vec{v}_A$ and $\vec{B} = m_B \vec{v}_B$.

  2. Draw a circle with the two vectors as diagonals as seen below. If the final momentum vectors are still diagonal this this circle the total momentum has been conserved. Half of the total momentum is represented by the center of the circle.


  3. Draw the direction vector $\vec{n}$ for the contact normal on the tail of vector $\vec{A}$ and its negative off the tail of $\vec{B}$. In this case this direction joins the two body centers. Make sure you place the normal vectors pointing on the inside of the circle.


  4. The bodies will exchange an equal and opposite amount of momentum $\vec{J}$ called an impulse. The represents the total contact force over a short period of time $\vec{J}=\int \vec{F}(t)\,{\rm d}t$. You find this amount graphically by extending the normal vector directions until they reach the circle again.


  5. The final momentum is found by connecting the origin to where the impulse vectors touch the circle $\vec{A}^\star = \vec{A}+\vec{J}$ and $\vec{B}^\star = \vec{B}-\vec{J}$


  6. The final velocities are then $\vec{v}_A^\star = \frac{m_A\vec{v}_A+\vec{J}}{m_A}$ and $\vec{v}_B^\star = \frac{m_B\vec{v}_B-\vec{J}}{m_B}$

  • $\begingroup$ That looks very interesting. Could you apply it to the OP's case? I tried but with one vector pointing say SE and the other NW the diagram didn't work out so well. $\endgroup$ – Gert Nov 27 '15 at 2:53
  • $\begingroup$ I used GeoGebra to do an example similar to the OP. imgur.com/9wRzs1b What was the problem you had? $\endgroup$ – ja72 Nov 27 '15 at 15:23
  • 1
    $\begingroup$ I didn't connect the momentum vectors properly. It makes perfect sense now. Thank you. $\endgroup$ – Gert Nov 27 '15 at 15:56

Rotate the digram so the line connecting the circles is horizontal at the moment that they touch - since you know dx and dy, you just take the arc tangent.

Now you move the frame of reference so the point where the two balls meet is stationary. The actual speed of the center of mass is just the vector mean of the velocities of the two balls (if they have different mass, you would weight each vector by the mass). This gives each circle a new velocity that is the original velocity minus the velocity of the center of mass.

In this frame, the two balls are moving towards each other at an angle, and after the collision they "switch directions":

enter image description here

And finally you convert back to the lab frame of reference.