I am implementing this simplified model at the moment, and I am trying to get my head around the physics concepts behind this model.

Event-Driven Simulation

So the model has two parts, first is collision predictions, and then collision resolution.

The collision resolution part says that:

When two hard discs collide, the normal force acts along the line connecting their centers (assuming no friction or spin). The impulse ($J_x, J_y$) due to the normal force in the x and y directions of a perfectly elastic collision at the moment of contact is: $$J_x = \frac{J\Delta rx}\sigma, ~~J_y = \frac{J\Delta y}\sigma$$ where $$J= \frac{2m_im_j(\Delta v\cdot \Delta r)}{\sigma(m_i + m_j)}$$

and where $m_i$ and $m_j$ are the masses of particles $i$ and $j,$ and $\sigma, \Delta x, \Delta y$ and $\Delta v \cdot \Delta r$ are defined as above. Once we know the impulse, we can apply Newton's second law (in momentum form) to compute the velocities immediately after the collision.

Can somebody walk me through the concept behind the impulse's above given formula? I am particularly interested how is the impulse related to $\sigma?$ I tried to find an explanation on-line, but none of the tutorials talk explicitly about $\sigma.$

I know that my knowledge is limited (I have never taken dynamics or kinetics courses) but still, if this can be explained in layman terms than please don't give up on me. I will also be happy if somebody will point me to an on-line explanation off-site.

Update, based on @user115350's answer I did this: $$ J_x = J \cos(\theta) = J \frac{(\Delta rx_i + \Delta rx_j)}{\sigma_i + \sigma_j} $$ and similarly $$ J_y = J \sin(\theta) = J \frac{(\Delta ry_i + \Delta ry_j)}{\sigma_i + \sigma_j} $$

Then based on the velocity equations working backwards suggested by @lemon I get this: $$ J_x = m_i(vx_i^\prime - vx_i) $$ $$ J_x = m_j(vx_j^\prime - vx_j) $$ $$ J_y = m_i(vy_i^\prime - vy_i) $$ $$ J_y = m_j(vy_j^\prime - vy_j) $$

and then this: $$ J = \frac {m_i \Delta vx_i \sigma}{\Delta rx_i + \Delta rx_j} $$ $$ J = \frac {m_j \Delta vx_j \sigma}{\Delta rx_i + \Delta rx_j} $$ $$ J = \frac {m_i \Delta vy_i \sigma}{\Delta ry_i + \Delta ry_j} $$ $$ J = \frac {m_j \Delta vy_j \sigma}{\Delta ry_i + \Delta ry_j} $$

So from here, how can I combine these 4 equations to get the original compound formula of J?

  • $\begingroup$ You can work backwards from the equations that follow those (i.e. the velocity integration). A more general derivation is also given here: Wiki: Collision response. To answer your specific question regarding $\sigma$: Note that at the point of collision, $\sigma$ is the distance between the two particles, so $|\Delta r|=\sigma$. In other words, any term of the form $\Delta r/\sigma$ is just the unit vector connecting the particles. So, e.g., $\Delta v\cdot\Delta r/\sigma$ is the relative speed of the particles. $\endgroup$
    – lemon
    Commented Jul 2, 2016 at 7:39
  • $\begingroup$ @lemon Thanks for the reply. I tried what you suggested and went through the wikipedia article but still not clear how to derive J in the end. Can you take a look at my updated question? $\endgroup$
    – Alma Alma
    Commented Jul 6, 2016 at 22:36
  • $\begingroup$ euclideanspace.com/physics/dynamics/collision/oned/index.htm This may be useful. I don't really understand how to calculate the impulse either. $\endgroup$ Commented Jan 6, 2019 at 7:50

2 Answers 2


Let me switch to vector notation where $v_i$ is the velocity (vector) of ball $i$ prior to collision, and $v^\prime_i$ is the velocity (vector) immediately after collision.

When the collision occurs, the two balls impart an equal but opposite impulse on one another of magnitude $J$. The velocities post-collision are then given by

\begin{align} v_1^\prime&=v_1-Jm_1^{-1}\hat{n} \tag{$*$} \\ v_2^\prime&=v_2+Jm_2^{-1}\hat{n} \tag{$**$} \end{align}

where $m_i$ is the $i$-th mass and $\hat{n}$ is the unit vector connecting the centres of the two balls at the instant of collision.

If the collision is elastic then, by definition, we have $$ (v_2^\prime-v_1^\prime)\cdot\hat{n}=-(v_2-v_1)\cdot\hat{n} $$

Now simply substitute equations $(*)$ and $(**)$ into the above and rearrange and you will get the equation for $J$.

  • $\begingroup$ Thanks @lemon! Physics is fun! Even though I don't have much talent I found this problem interesting. $\endgroup$
    – Alma Alma
    Commented Jul 8, 2016 at 22:16

Impulse is a vector ($\overrightarrow J= \overrightarrow F \triangle t$) and its absolute value is J. Thus it has two components in this case and the vector can be written $(J_x,J_y)$. where,

$$J_x=J\cdot \cos(\theta)=J\cdot \frac{\triangle rx_i + \triangle rx_j}{\sigma_i+sigma_j}$$

And $J_y=J\cdot \sin(\theta)$ can be obtained similarly.

  • $\begingroup$ Thanks for your response. So is my understanding correct that even though J is a scalar value but impulse itself is a vector ($\vec J$)? I guess that's what's causing my confusion. I didn't understand in the formulas how come that J is an aggregated value while at the same time it is decomposed into $J_x$ and $J_y$. $\endgroup$
    – Alma Alma
    Commented Jul 6, 2016 at 21:29
  • $\begingroup$ So my next question is how do you combine two formulas ($J_x$ and $J_y$) which are decomposed into scalar components back into a compound value (J in this case)? Do you just take the sum of those two components and that's it? $\endgroup$
    – Alma Alma
    Commented Jul 6, 2016 at 21:56
  • $\begingroup$ $J = \sqrt{J_x^2+J_y^2}$ $\endgroup$
    – user115350
    Commented Jul 7, 2016 at 3:14
  • $\begingroup$ Thank you, your answer helped a lot to understand how to model this system. $\endgroup$
    – Alma Alma
    Commented Jul 8, 2016 at 22:17

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.