Collisions And Momentum

Collisions occur frequently in both real life and in games. Modeling collisions correctly can make or break a game. Model collisions poorly and it will be difficult for your players to believe in the world you’ve created for them.

Learning Objectives

• Define the terms momentum and impulse.
• Explain what the coefficient of restitution is and how it affects colliding objects.
• Compare the differences and similarities between elastic and inelastic collisions
• Implement the concepts of momentum and energy to model the collision between objects.

Introduction

Momentum is the measure of a body’s tendency to remain in motion. This quantity is proportional to both the mass and the velocity of the object. Mathematically, it is the product of the mass and the velocity.

(1)
\begin{align} \vec p = m \vec v \end{align}

Notice that this is a vector equation! In this way, momentum is different from kinetic energy, which is a scalar. When Newton wrote his 2nd Law of motion, he was really meaning something more general than $\vec F = m \vec a$. Here’s a excerpt from Newton’s famous book Philosophiae Naturalis Principia Mathematica where Newton describes his 2nd Law of Motion:

“The alteration of motion is ever proportional to the motive force impressed; and is made in the direction of the right line in which that force is impressed.”

We can use this notion of momentum to rewrite our previous notion of Newton’s 2nd Law as

(2)
\begin{align} \vec F = \frac { \Delta \vec p } { \Delta t } \end{align}

When two objects collide, momentum may be transferred from one to the other. The total momentum of the system, however, will always remain the same. If one object loses momentum, the other object must gain momentum. Furthermore, the amount that one loses and the other gains must be equal. This is the foundation for the Conservation of Linear Momentum. This conservation law states that the total momentum of a system before a collision must equal the total momentum of a system afterwords. In the language of algebra, this is

(3)
$$m_1 v_{1i} + m_2 v_{2i} = m_1 v_{1f} + m_2 v_{2f} .$$

There are two different types of collisions, elastic and inelastic. The most important difference between the two is that elastic collisions conserve kinetic energy. Elastic collisions involve two objects that collide and bounce off of each other while retaining their original shapes. Two billiard balls colliding would be an example of an elastic collision. Inelastic collisions involve deformation of one or both of the colliding objects. This is why inelastic collisions do not conserve kinetic energy. An example of this type of collision would be the collision between a two pieces of putty. Part of the system’s original kinetic energies used to deform the shape of the objects or to increase the temperature of the two objects. A perfectly inelastic collision is a special case in which the two colliding bodies stick together after the collision. They then move off as a single unit with the same velocity. Mathematically, this means the final velocities in Eq.(3) are equal and the equation can be rewritten as

(4)
\begin{align} m_1 v_{1i} + m_2 v_{2i} = \left( m_1 + m_2 \right) v_{f} . \end{align}

Real collisions are typically somewhere between the two cases of a perfectly elastic and perfectly elastic collision. The degree to which the collision is elastic can be described by the coefficient of restitution, $\varepsilon$. For a perfectly elastic collision, the total amount of kinetic energy is conserved. In a real collision, some of this kinetic energy is lost. By using the conservation of momentum and kinetic energy for an elastic collision, one can derive what’s called the Velocity Equation

(5)
$$v_{2f} - v_{1f} = v_{1i} - v_{2i} .$$

When the collision is not precisely elastic, the right side of Eq.(5) is multiplied by coefficient of restitution. If $\varepsilon = 1$, the collision is perfectly elastic. If $\varepsilon = 0$, the collision is perfectly inelastic.

(6)
\begin{align} v_{2f} - v_{1f} = \varepsilon \left( v_{1i} - v_{2i} \right) . \end{align}

This means that one can use the same equation for both elastic and inelastic collisions, and therefore the same function block. You won’t need two separate routines by using the coefficient of restitution.
So far, only one-dimensional collisions have been detailed, but multi-dimensional collisions are simply a superposition of the two or three orthogonal directions. Eqs. (3) and (6) can be used to evaluate the final velocities in the x, y, and z directions separately. So long as the components of the initial velocities are known, finding the three-dimensional final velocities is simply a matter of applying Eqs. (3) and (6) three times, once for each direction.
One special type of collision is the reflection. Imagine a billiard ball colliding with a rail and bouncing off. Figure 1 shows a diagram of this type of collision. Here we assume the mass of the rail is vastly greater than the mass of the ball. In the case of the rail being aligned with a coordinate axis, as is shown in Figure 1, then Eq. (6) in the direction perpendicular to the rail becomes

(7)
\begin{align} v_{1i} = - \varepsilon \cdot v_{1f} \end{align}

The parallel velocity will remain the same. This is a special case. The surface with which an object collides is not always going to be aligned with a coordinate axis. To address the more general problem of an object bouncing off of a surface with any given orientation, we will need to do some more geometry, see Figure 2. As with the ball-rail problem, the component of the velocity parallel to the surface remains unchanged, while the velocity perpendicular to the surface is inverted as described in Eq. (7). Using this notion of parallel and perpendicular velocities, we can write the initial and final velocities as such,

(8)
\begin{align} \vec v_{i} = \left( \begin{array}{cc} v_{\parallel} \\ v_{\perp} \end{array} \right) , \end{align}

and

(9)
\begin{align} \vec v_{f} = \left( \begin{array}{cc} v_{\parallel} \\ - \varepsilon \cdot v_{\perp} \end{array} \right) . \end{align}

The change in velocity, given the above, is

(10)
\begin{align} \Delta \vec v_{f} = \left( \begin{array}{cc} 0 \\ - \left( \varepsilon + 1 \right) \cdot v_{\perp} \end{array} \right) , \end{align}

such that

(11)
\begin{align} \vec v_f = \vec v_i + \Delta \vec v \end{align}

The more general case of Eqs. (10) and (11) involve using the normal vector to the surface to find the perpendicular projection of the initial velocity vector. The general form of Equation 10 now becomes

(12)
\begin{align} \vec v_f = \vec v_i - \left( \varepsilon + 1 \right) \left( \vec v_i \cdot \hat N \right) \hat N \end{align}

where $\hat N$ is the vector normal to the surface. This equation will work for either the 2D or 3D case since it’s only the perpendicular velocity that is changing.

Laboratory Procedures

1. Write a function that will model the reflection of an object off of a plane surface. The inputs to the function should be the initial velocity vector for the object, the coefficient of restitution and the two vectors that define the plane.