Home » Mechanics » Collisions
Science Calculators


Web 2.0 scientific calculator

Elastic Collision Calculators

1-D and 2-D Collision Demos

Elastic collisions in 1D, 2D

This page is more simulations than calculations, because they are more fun.

Collisions between two objects are elastic only if there is no loss of kinetic energy. That is, the kinetic energy of the two particles before and after remains the same. One object can lose all of its energy, but it must then transfer that energy to the other particle. This situation is very rare for large objects or even molecules, but generally holds for atoms.

All collisions conserve momentum, which is the main tool for determining the motion resulting from a collision.

Conservation of momentum: $$\vec{p_i} = m_1 \cdot \vec{u_1} + m_2 \cdot \vec{u_2}$$
$$= \vec{p_f} = m_1 \cdot \vec{v_1} + m_2 \cdot \vec{v_2} $$

Note that if one object loses speed in a given direction, \(u_{1x} < v_{1x}\), that speed is transfered to the other object, \(u_{2x} > v_{2x}\).

Conservation of kinetic energy: $$KE_i = \:^1\!/_2 \, m_1 \, u_1^2 + \:^1\!/_2 \, m_2 \, u_2^2$$
$$= KE_f= \:^1\!/_2 \, m_1 \, v_1^2 + \:^1\!/_2 \, m_2 \, v_2^2$$

These two equations can be used to calculate post-collision motion.

1-D Elastic Collisions

Equations for post-collision velocity for two objects in one dimension, based on masses and initial velocities:

$$v_{1} = \frac{u_{1}(m_{1}-m_{2})+2m_{2}u_{2}}{m_{1}+m_{2}}$$

$$v_{2} = \frac{u_{2}(m_{2}-m_{1})+2m_{1}u_{1}}{m_{1}+m_{2}}$$

In the demo below, use the input fields to change the initial positions, velocities, and masses of the blocks. The blocks can also be dragged, as can the tips of the velocity vectors (when box is checked).

Object 1   Object 2  

mass is represented by size in this demo, thus both blocks have the same density

Your browser does not support HTML5 Canvas!
better browser needed

2-D Elastic Collisions

Two dimensional collisions are a little bit tricker, because the angle of collision affects the final velocities.

In the demo below, the two "balls" undergo only elastic collisions, both between each other and with the walls. Use the input fields to set the initial positions, masses, and velocity vector, then press "apply values" and "start" to see what happens! You can also click and drag the balls into the desired position, as well as click and drag the arrow tips to change the velocity vector (use the checkbox to show velocity arrows).

mass is represented by size in this demo, thus both balls have the same density

\(m\) \(v_x\) \(v_y\) \(x\) \(y\)
circle 1
circle 2

Your browser does not support HTML5 Canvas!
better browser needed

Created with help from this site

The equations for two object collision in two dimensions:

From wikipedia:

$$\begin{align} v'_{1x}&=\frac{v_{1}\cos(\theta_1-\varphi)(m_1-m_2)+2m_2v_{2}\cos(\theta_2-\varphi)}{m_1+m_2}\cos(\varphi) \\[0.2em] &\quad+v_{1}\sin(\theta_1-\varphi)\cos(\varphi+\frac{\pi}{2}) \\[0.8em] v'_{1y}&=\frac{v_{1}\cos(\theta_1-\varphi)(m_1-m_2)+2m_2v_{2}\cos(\theta_2-\varphi)}{m_1+m_2}\sin(\varphi) \\[0.2em] &\quad+v_{1}\sin(\theta_1-\varphi)\sin(\varphi+\frac{\pi}{2}) \end{align}$$

To get values for the second object, just swap all of the 1s and 2s. The masses are \(m_1\) and \(m_2\), \(\theta_1\) and \(\theta_2\) are the movement angles, and \(\phi\) is the contact angle. See the illustrations below for an example.

\(m\) \(v_x\) \(v_y\) \(x\) \(y\)
circle 1
circle 2

Below is a step-by-step illustration of a 2-D collision. Use the white arrows to navigate.
Your browser does not support HTML5 Canvas!
better browser needed

The equations can also be written and calculated in vector format, without angles, by using the position coordinates, \(\mathbf{x}_1\) and \(\mathbf{x}_2\) at the point of collision and velocity vectors \(\mathbf{v}_1\) and \(\mathbf{v}_2\):

$$ \begin{align}\mathbf{v}'_1&=\mathbf{v}_1-\frac{2\cdot m_2}{m_1+m_2}\cdot \frac{\langle \mathbf{v}_1-\mathbf{v}_2,\,\mathbf{x}_1-\mathbf{x}_2\rangle}{\|\mathbf{x}_1-\mathbf{x}_2\|^2}\cdot(\mathbf{x}_1-\mathbf{x}_2),\\\mathbf{v}'_2&=\mathbf{v}_2-\frac{2\cdot m_1}{m_1+m_2}\cdot \frac{\langle \mathbf{v}_2-\mathbf{v}_1,\,\mathbf{x}_2-\mathbf{x}_1\rangle}{\|\mathbf{x}_2-\mathbf{x}_1\|^2}\cdot(\mathbf{x}_2-\mathbf{x}_1)\end{align} $$


While we have done our best to assure accurate results, the authors of this website do not make any representation or warranty, express or implied, regarding the calculators on this website, nor assume any liability for its use. The code implementation is the intellectual property of the developers.

Please let the webmaster know if you find any errors or discrepancies.
We also take suggestions for new calculators to include on the site.