How do you calculate the new velocity of the spheres after a collision when the spheres have different radii?

I thought you could just decompose the horizontal velocities and use the standard collision equation on the velocities on the axis of the collision like so.

Sphere vectors decomposed:

Decomposed Collision

Then just add $a'_1$ and $a_2$ and similarly $b'_1$ and $b_2$ to get the new velocity vectors.

To take it further if there is a condition that means the spheres cannot 'jump' off the surface i.e. its fixed to the surface how would that change the vector velocities.

  • $\begingroup$ You imply they are purely sliding? When they are rolling the angular momentum might change the result. $\endgroup$
    – Juraj
    Commented Apr 19 at 21:33

1 Answer 1


So here not only there are impulses between the spheres, but also between each sphere and the ground. The result is a system of equations with three expressions and three unknown impulses.

For the contact acting on the i-th body from the j-th body (or ground), consider the contact normal $\hat{n}_{ij}$, the impulse $J_{ij}$ and the contact conditions

$$ \hat{n}_{ij} \cdot ( \vec{v}_i^\star - \vec{v}_j^\star ) = -\epsilon_{ij}\, \hat{n}_{ij} \cdot ( \vec{v}_i - \vec{v}_j ) \tag{1}$$

where $\vec{v}_i$ is the velocity vector of the i-th body before impact and $\vec{v}_i^\star$ after impact. The same for $\vec{v}_j$. Finally, $\epsilon_{ij}$ is the coefficient of restitution for the contact.


For the contact normal vectors above, I suppose the contacts with the ground have zero COR and the contact between the spheres has 1.

The result of all impacts to each body is

$$ \begin{aligned} \vec{v}_1^\star &= \vec{v}_1 + \frac{1}{m_1} \left( \hat{n}_{12} J_{12} + \hat{n}_{10} J_{10} \right) \\ \vec{v}_2^\star &= \vec{v}_2 + \frac{1}{m_2} \left( -\hat{n}_{12} J_{12} + \hat{n}_{20} J_{20} \right)\\ \end{aligned} \tag{2}$$

These two expressions are used in the following 3 contacts to make the system in terms of the three terms $J_{ij}$ only

$$\begin{aligned} \hat{n}_{12} \cdot ( \vec{v}_1^\star - \vec{v}_2^\star ) & = -\epsilon_{12}\, \hat{n}_{12} \cdot ( \vec{v}_1 - \vec{v}_2 ) \\ \hat{n}_{10} \cdot ( \vec{v}_1^\star ) & = -\epsilon_{10}\, \hat{n}_{10} \cdot ( \vec{v}_1 ) \\ \hat{n}_{20} \cdot ( \vec{v}_2^\star ) & = -\epsilon_{20}\, \hat{n}_{20} \cdot ( \vec{v}_2 ) \end{aligned}$$


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.