Result Summery
This page is about calculating the outcome of a collision between 2 solid bodies. In other words given the initial velocities and masses of the objects, what will be the final velocities?
The results are summarised here, these results are proved in the remainder of this page.
Perfectly elastic (Conservation of energy)  =  (  )

Perfectly inelastic (Objects connect) =

General Case (between Perfectly elastic and Perfectly inelastic) e = ( ) / (  ) 

coefficient of restitution  e=1  e = 0  e depends on materials 
impulse =  2*( )*  ( )*  (e+1)*( )* 
Final velocity of object a= =  * + *  * + *  * +*(e+1)* 
Final velocity of object b= =  *  *  * + *  *(e+1)* + 
Assumptions
We are making some simplifying assumptions,
 The two objects remain solid (the don't break and they are not distorted).
 Kinetic energy is transferred between the objects in an instantaneously short impulse.
 We are assuming the collision is in one dimension therefore there is no rotation.
The outcome depends on the material of the colliding objects, it will be somewhere between the following two extremes:
 The minimum impulse will be the impulse required to prevent the objects overlapping (solid objects cant occupy the same space) In this case the objects will remain in contact, and their final velocities are the same. In this case the kinetic energy of the complete system after the collision will be less than the kinetic energy before, the difference being dissipated as heat or sound, etc.
 The maximum impulse conserves the total kinetic energy of the system. In this case the objects bounce off each other and the diverging velocity will be equal and opposite to the approach velocity. So the impulse in this case will be twice that of the above case.
The value between these two extremes depends on the materials of the two objects, this is defined by the coefficient of restitution (e) which is the ratio of speed of separation to speed of approach in a collision.
There are two methods shown here:
Solution using impulse
In this case we want to find the minimum impulse required to prevent the objects overlapping, the minimum impulse required is that needed to reduce the approach velocity to zero.
In this case the objects will remain in contact, and their final velocities are the same. (They are not diverging or converging) so =
impulse = (  )* = (  )*
where:  
symbol 
description 
type 
units 
final velocity of object a  vector  m/s  
initial velocity of object a  vector  m/s  
mass of object a  scalar  kg  
final velocity of object b  vector  m/s  
initial velocity of object b  vector  m/s  
mass of object b  scalar  kg 
therefore:
impulse/ = (  ) and impulse/ = (  )
approach velocity = 
and diverge velocity = 0 =  since = as explained above
approach velocity = = (  ) (  )
approach velocity = impulse/ + impulse/
rearranging gives:
impulse = approach velocity*
In this case the kinetic energy of the complete system after the collision will be less than the kinetic energy before, the difference being dissipated as heat or sound, etc.
coefficient of restitution
the coefficient of restitution (e) is the ratio of speed of separation to speed of approach in a collision.
So,
e = ( ) / (  )
so in the perfectly elastic (Conservation of energy) case
 =  (  )
therefore e = 1
In the perfectly inelastic (Objects connect) case
=
therefore e = 0
Solution using impulse and coefficient of restitution
This is a more general case where the colliding objects may bounce off each other depending on the nature of the objects.
So,
impulse = (  )* = (  )*
and
e = ( ) / (  )
where:  
symbol 
description 
type 
units 
final velocity of object a  vector  m/s  
initial velocity of object a  vector  m/s  
mass of object a  scalar  kg  
final velocity of object b  vector  m/s  
initial velocity of object b  vector  m/s  
mass of object b  scalar  kg  
e  coefficient of restitution which depends on the nature of the two colliding materials  scalar 
therefore:
impulse/ = (  ) and impulse/ = (  )
so adding these together gives:
impulse/ +impulse/ = (  ) (  )
rearranging gives:
impulse( 1/ +1/ )= (  ) (  )
substituting ( ) = e*(  )
gives:
impulse*( 1/ +1/ )=  (e+1)*(  )
rearranging gives:
impulse = (e+1)*approach velocity*
Solution using conservation of momentum and energy
before the collision the two bodies are approaching in the same plane:
after the collision they have new velocities but are still in the same plane:
(note: all velocities are positive toward the right, the arrows on the diagrams above just indicate their motion relative to each other)
by conservation of energy: * + * = * + * (both sides of equation multiplied by two)
by conservation of momentum: * + * = * + *
where:
where:  
symbol 
description 
type 
units 
final velocity of object a  vector  m/s  
initial velocity of object a  vector  m/s  
mass of object a  scalar  kg  
final velocity of object b  vector  m/s  
initial velocity of object b  vector  m/s  
mass of object b  scalar  kg 
We want to find the final velocities ( and ) so there are 2 unknowns and 2 equations, so we can solve:
This is a simultaneous quadratic equation which is difficult to solve, here is my attempt. But there is a trick, that is to measure in the frame of reference of one of the bodies, that way we can show that after the collision the bodies will move apart at the same rate that they approached each other before the collision:
rearranging 1 gives: * (  ) = * ( )
giving : * ( + )*(  ) = * (+ ) * ( )
and from 2 we get: * (  ) = * ( )
dividing 3 by this gives: + = +
so :  =  (  )
i.e. the bodies move away form each other at minus the speed that they were approaching.
as above:
impulse = (  )* = (  )*
velocity change = approach velocity  approach velocity
velocity change =   ( ) = 2*(  ) = 2*approach velocity
velocity change = impulse/ + impulse/
rearranging gives:
impulse = velocity change*
impulse = 2*approach velocity*
Calculating the final velocities from impulse
Now that we know the impulse we can calculate the final velocities,
Calculating Vaf
impulse = (  )*
= impulse/ +
substitute impulse = (e+1)*( )*
gives,
= (e+1)*( )* +
= (e+1)*( )* + (+ )
= * + ((e+1)*( )+ )*
= * +*(e+1)*
In the perfectly inelastic case e=0 so: = * + *
In the perfectly elastic case e=1 so: = * + *
Calculating Vbf
impulse = (  )*
= impulse/ +
substitute impulse = (e+1)*( )*
gives,
= (e+1)*( )* +
= (e+1)*( )* + (+ )
= *(e+1)* +
In the perfectly inelastic case e=0 so: = * + *
In the perfectly elastic case e=1 so: = *  *
We could also calculate the final velocities directly from conservation laws without using impulse as shown here but the impulse concept seems to work better for 2 and 3 dimensional cases.
Next stages
You could go on to the two dimensional case
but this is quite complicated as crossmultiplication of vectors only applies
to three dimensions so you might want to go straight to 3
dimensions.