(1) m_{1}^{.}v_{x,1} = m_{1}^{.}v_{x,1}' + m_{2}^{.}Δv_{x,2}'

(2) m_{1}^{.}v_{y,1} = m_{1}^{.}v_{y,1}' + m_{2}^{.}Δv_{x,2}'^{.}tan(θ)

(3) m_{1}/2^{.}(v_{x,1}^{2}+v_{y,1}^{2}) =
m_{1}/2^{.}(v_{x,1}'^{2}+v_{y,1}'^{2}) +
m_{2}/2^{.}Δv_{x,2}'^{2}^{.}(1+tan^{2}(θ))

The angle θ in Eq.(2) (and (3)) is the angle of the final velocity vector of ball 2 with the x-axis. This will be determined separately later from the geometry of the collision (alternatively, one can also treat θ as a free parameter). Solving now Eq.(1) for v

(4) v_{x,1}' = v_{x,1} - m_{2}/m_{1}^{.}Δv_{x,2}'

(5) v_{y,1}' = v_{y,1} - m_{2}/m_{1}^{.}Δv_{x,2}'^{.}tan(θ)

(6)
Δv_{x,2}' = 2[ v_{x,1} + tan(θ)^{.}v_{y,1} ] / [(1+tan^{2}(θ))^{.}(1+m_{2} /m_{1} )] .

(7) γ_{v} = arctan [ (v_{y,1}-v_{y,2})/(v_{x,1}-v_{x,2}) ]

**
(8)
Δv _{x,2}' = 2[ v_{x,1} - v_{x,2} + a^{.}(v_{y,1} - v_{y,2} ) ] / [(1+a^{2})^{.}(1+m_{2} /m_{1} )] ,
**

(9)
a = tan(θ) = tan(γ_{v}+α) .

The actual value of α depends on the exact coordinates of the particles, so if the latter are not known, one has to treat α as a free parameter and generate it for instance through a random number generator. (otherwise see below for the determination of α). From Eqs.(2),(4),(5),(8),and (9) the velocity components after the collision are therefore:

**
(10) v _{x,2}' = v_{x,2} + Δv_{x,2}' ,**

(11) v_{y,2}' = v_{y,2} + a ^{.}Δv_{x,2}' ,

(12) v_{x,1}' = v_{x,1} - m_{2}/m_{1}^{.}Δv_{x,2}' ,

(13) v_{y,1}' = v_{y,1} - a^{.} m_{2}/m_{1}^{.}Δv_{x,2}' .

Geometry of 2D collision

If the coordinates of the balls (with radius r

**
(14) α = arcsin [ d ^{.}sin(γ_{x,y}-γ_{v}) / (r_{1}+r_{2}) ] ,
**

(15) d = √ [ (x_{2}-x_{1})^{2} +(y_{2}-y_{1})^{2} ] ,

(16) γ_{x,y}= arctan [ (y_{2}-y_{1})/((x_{2}-x_{1}) ] ,

Note again that a valid solution requires |d

The new coordinates (the position of the center of the balls at the moment of collision) are therefore

**
(18) x _{1}' = x_{1} + v_{x,1}^{.}t **

(19) y_{1}' = y_{1} + v_{y,1}^{.}t

(20) x_{2}' = x_{2} + v_{x,2}^{.}t

(21) y_{2}' = y_{2} + v_{y,2}^{.}t

(22) v_{x,cm} = ( m_{1}^{.}v_{x,1} + m_{2}^{.}v_{x,2} )/( m_{1}+ m_{2})

(23) v_{y,cm} = ( m_{1}^{.}v_{y,1} + m_{2}^{.}v_{y,2} )/( m_{1}+ m_{2})

**
(24) v _{x,1}'' = (v_{x,1}'-v_{x,cm})^{.}R + v_{x,cm} **

(25) v_{y,1}'' = (v_{y,1}'-v_{y,cm})^{.}R + v_{y,cm}

(26) v_{x,2}'' = (v_{x,2}'-v_{x,cm})^{.}R + v_{x,cm}

(27) v_{y,2}'' = (v_{y,2}'-v_{y,cm})^{.}R + v_{y,cm}

I have tested the formulae for several cases with a Fortran Program (for those who can't use Fortran, I have also translated this into a C/C++ Version). Additionally, I have included there now also a simplified version which does not do the 'remote' collision detection illustrated above but just returns the new velocities assuming that the input coordinates are already those of the collision.

The elastic and inelastic collision in 3 dimensions can be derived in a similar way, with the only difference that now two 'impact angles' need to be defined to determine all the velocity components.

Thomas Smid (M.Sc. Physics, Ph.D. Astronomy)

email: