In a perfectly elastic collision, the *total kinetic energy* before and after the collision is the same. This is not the case for inelastic collisions—some energy gets converted to other forms, such as thermal energy or sound energy. In a completely inelastic collision, the objects stick together. In all cases, total momentum is conserved.

In an elastic collision, the objects compress on the point of contact (which we will call the *bumper*), and kinetic energy gets converted to potential energy. At the maximum compression, the separation between the objects is a minimum. The process then proceeds in reverse: potential energy is converted to kinetic energy, and the objects separate.

For a collision between two objects to be perfectly elastic, we must have

`1/2m_"A"v_"A" + 1/2m_"B"v_"B" = 1/2m_"A"v'_"A" + 1/2m_"B"v'_"B"`.

In a *perfectly elastic one-dimensional* collision where mass A is moving towards a stationary mass B, we can use

`vec v_"A" + vec v'_"A" = vec v'_"B"`,

as we can find both final speeds from just the initial speed of A and the masses of both objects using

`v'_"A" = v_"A"((m_"A"-m_"B")/(m_"A"+m_"B")) qquad and qquad v'_"B" = v_"A"((2m_"A")/(m_"A"+m_"B"))`.

We will have to consider some special conditions:

- `m_"A" > m_"B"\ => 0 < vec v'_"A" < vec v_"A"`
- `m_"A" ≫ m_"B" => vec v'_"A" ~~ vec v_"A"`
- `m_"A" < m_"B"\ => vec v'_"A" < 0`
- `m_"A" ≪ m_"B" => vec v'_"A" ~~ -vec v_"A" and vec v'_"B" ~~ 0`
- `m_"A" = m_"B" => vec v'_"A" = 0 and vec v'_"B" = vec v_"A"`

If both objects are in motion, we can still use these equations as long as we put ourselves in B’s frame of reference. To do this, subtract `v_"B"` from both initial velocities, making `v_"B"` zero. Proceed as usual, but don’t forget to return to Earth’s frame of reference at the end by undoing the subtraction: add the original `v_"B"` to `v'_"A"` and `v'_"B"`.