Newton's Laws Of Motion

Newton's Three Laws

In 1687, Sir Isaac Newton published his famous book, the Principia. In this book, he introduced his three laws of universal motion. These three laws are the fundamental rules by which all things get from one place to another. They describe situations as simple as why you feel pushed back into your seat when you accelerate at a green light, to events as vast as the movements of all the galaxies the universe. These three laws are as follows:

Newton’s First Law: An object at rest will tend to remain at rest, and an object in motion will tend to remain in motion at a constant velocity unless acted upon by an outside force. The strength of this tendency is described as the object’s inertia.

Newton’s Second Law: The net force on an object is the product of the object’s mass and its acceleration. Mass is a measure of an object’s inertia. Mathematically,

\begin{align} \vec{F}_{net} = m \vec{a} \end{align}

Newton's Third Law:For every action there exists an equal in magnitude but oppositely directed reaction.

Using these three laws of motion, one can model the motion of nearly everything in the entire universe from subatomic particles like an electron, to entire galaxies. In a game world, all motion will be dependent upon what forces are set up. Even in the simple game of Asteroids, Newton’s Laws are used with great effect. The thruster for the player craft exerts a force on the craft, and that force causes an acceleration and a change in the direction and speed of the craft. Certainly this is a simple example, but ultimately all modeling of motion comes down to determining the net force on an object so the acceleration can be found. With the acceleration, one can then use the Forward Euler Method to model the changing velocity and position of in-game objects.

Types of Forces

Applied Forces

Applied forces: An applied force will typically have a constant value and can be pointed in any direction.
Rope Tension: Tension forces are always pulling forces. The force exerted by a rope is always away from the object, never towards.


Weight: The weight, the force of gravity, will be constant and will always point downward. The weight is found by multiplying the mass of the object by the acceleration due to gravity,

\begin{align} \vec{W} = m \vec{g} \end{align}

Normal Force

Normal Forces: A normal force, $\vec{F_N}$, is the force a surface exerts on an object. The direction of this force is always perpendicular to the plane of the surface.


Friction: Friction is the force between two surfaces that opposes motion and its magnitude is proportional to the normal force. The direction of the frictional force is always opposite of the velocity.

\begin{align} \vec{f} = - \mu \left| \vec{F_N} \right| \hat{v} \end{align}

Here $\mu$ is the coefficient of friction which depends upon the nature of the two surfaces,$\vec{F_N}$ is the normal force, and $\hat{v}$ simply indicates the direction of the object’s velocity.

Fluid Resistance

Wind Resistance: Lastly, there is wind resistance. Wind resistance is like a frictional force in that it opposes motion and is always in the opposite direction as the object’s velocity. Unlike friction, the magnitude of the wind resistance force is proportional to the velocity.

\begin{align} \vec{f}_{wind} = - c \vec{v} \end{align}

Here c is a coefficient which depends upon the fluid and the shape of the object. This formula for wind resistance can easily be used for the resisting force through any fluid such as water. Equation 4 is actually a rough approximation, but will suit the need of most situations in game development where believable appearance is of higher importance to physical fidelity.

The drag force is actually dependent upon v2, and at higher speeds when the flow becomes turbulent it is dependent upon v3. For a true simulator, this is important, but for most game play, Equation 4 is sufficient for producing realistic motion. If you do need a higher fidelity response, the actual drag equation is

\begin{align} \vec{F}_{D} = - \frac{1} {2} C_{D} \rho A v^2 \hat{v}, \end{align}

where $C_{D}$ is the unitless coefficient of drag, $\rho$ is the density of the fluid, and $A$ is the cross-sectional area.

Spring Forces

Many of the constraint and joint forces used in game development are modeled after springs. A spring will exert a restoring force when it is displaced from its relaxed equilibrium position. So long as the elongation or compression of the spring isn't too large, the magnitude of the force is linearly proportional to the displacement. This linear relationship is called Hooke's Law expressed as the following relationship,

\begin{align} \vec{F}_{s} = - k \vec{r} \end{align}

where $k$ is the spring constant in units of N/m and $\vec{r}$ is the displacement vector from the spring's equilibrium position.

Using Newton's Second Law

Newton's Second Law is one of the most important and often used equations in all of physics, and certainly will be a driving force for the physics you see in most games, either directly or indirectly.

The Basics

Using Newton's Second Law, Eq. 1, is very straightforward once you know the total force acting on an object, the net force. Once you have that information, finding the acceleration of the object is as simple as dividing by the object's mass.

\begin{align} \vec{a} = {{\vec{F}_{net}} \over {m}} \end{align}

The larger the net force, or the smaller the mass, the greater the acceleration. This is why you hear aerospace and automotive engineers concerned far more about power-to-weight ratios as opposed to just shear power. If you double the amount of force, but at the same time double the mass, your acceleration remains exactly the same. Let's take a look at a simple example of using Eq. 7.

A force of 5,420 N is applied to a car having a mass of 1370 kg. What is the car's acceleration?
F = 5240 N
m = 1370 kg
$a = {{ 5240 ~N} \over {1370 ~kg}} = 3.82 ~m/s^2$

What force would be required to accelerate the car in the above example at a rate of 7.8 m/s^2?

Free Body Diagrams

Handling the acceleration by a single force, is straightforward enough, as you've seen from our examples above. Things get more intricate, interesting, and realistic when multiple forces are at play. When there are two or more forces acting on an object, the vector sum of those forces will be needed in order to determine the net force. In order to better visualize those forces, and to assist us in creating that vector sum, we will create a Free Body Diagram (FBD). An FBD represents all of the forces acting upon an object and includes a coordinate system which will us to resolve of each force vector into perpendicular components. As always, the choice of coordinate systems is entirely up to us; Nature couldn't care less which direction we call the x-axis. That doesn't mean that there aren't coordinate system choices that are better than others. Our goal is to minimize the amount of work we have to do. Thus, if we can align as many force vectors as we can along our coordinate axes now, the less trigonometry we have to do later.

Let's take a look at a few examples, starting with a simple case of a box sliding across the floor. Our first step is to draw a picture of the problem. It doesn't have to be artistic, but drawing a picture can help in visualizing exactly what forces are at play.


Considering what forces are acting on the box, we see that there is weight acting on the box pulling straight down. The floor, in turn, exerts a normal force directly upward on the box. There will also be a frictional force acting on the box directed parallel to the floor and in the opposite direction of the box's velocity. In this case, we have it easy and all the forces are perpendicular to each other and therefore can be placed directly on a coordinate axis. Here is our Free Body Diagram for this situation, complete with coordinate system.


Once we have a FBD, resolving the various forces into x-, y-, and perhaps z-components becomes a much easier task. For the example above, the only force in the x-direction is friction, and the weight and normal forces act only in the y-direction. Applying Newton's Second Law gives us our equations of motion for the system.

\begin{align} \Sigma \vec{F}_{x} = - \mu {F_N} = m a_{x} \\ \Sigma \vec{F}_{y} = {F_N} - mg = m a_{y} \end{align}

We can simplify the above by realizing that the box will only be accelerating in the x-direction and that $a_y = 0$. This allows us to solve the y-direction equation for the normal force.

\begin{align} {F_N} - mg = 0 \\ {F_N} = mg \end{align}

With the y-direction equation solved for the normal force, we can substitute our expression for $\vec{F_N}$ into our x-direction equation and solve for the acceleration.

\begin{align} - \mu \left( m g \right) = m a_{x} \\ - \mu g = a_{x} \end{align}

Now that we have the basics, let's try constructing a few FBDs and using them to solve some problems.

Find the force in the two support ropes shown below.


The object of our focus here is the knot where all the ropes converge. Draw a free-body diagram for the knot.


Make our equations of motion. Here, since nothing is moving, our acceleration is zero; we are in equilibrium.
$\Sigma F_{x} = -T_{A} + T_{B} \cos \left( 50^o \right) = 0$
$\Sigma F_{y} = T_{B} \sin \left( 50^o \right) -m g = 0$
Solve for our unknown tensions. Lets start by solving the y-direction equation for $T_{B}$.
$T_{B} = \frac {m g} {\sin \left( 50^o \right)} = \frac {15 * 9.8} {\sin \left( 50^o \right)} = 192 N$
Now substitute the value of $T_{B}$ into our x-direction equation to find $T_{A}$.
$T_{A} = - T_{B} \cos \left( 50^o \right) = - 192 \cos \left( 50^o \right) = 123 N$

A car crashes in such a way that it lands on it's roof and skids along the pavement for 165 m before coming to a halt. If the car was initially moving at 21.6 m/s, what is the coefficient of friction between the street and the roof of the car?

In order to get the coefficient of friction, we will need to know the frictional force, which means knowing the car's acceleration.
Applying the equation of motions introduced in the chapter on Kinematics,
$v_{f}^{2} = v_{i}^{2} + 2 a \left(x_f - x_i \right)$
Since $v_f = 0$ and $x_i = 0$,
$0 = v_{i}^{2} + 2 a x_f$
$a = - \frac {v_{i}^{2}} {2 x_f}$
$a = - \frac {21.6^2} {2 * 165} = -1.41 m/s^2$
Now that the acceleration is known, its time to build a free-body diagram.
[insert FBD]
Make our equations of motion. Note that we're only accelerating in the x-direction.
$\Sigma F_{x} = - \mu {F_N} = m a$
$\Sigma F_{y} = {F_N} - m g = 0$
Solving for the normal force, ${F_N} = m g$. Now insert this into our equation for the sum of forces in the x-direction.
$- \mu m g = m a$
$- \mu g = a$
$\mu = - \frac {a} {g} = - \frac {-1.41 } {9.8} = 0.144$

Dealing With Inclined Planes

Many times, you won't be dealing with the nice clean problem of an object moving on an absolutely flat surface. You will often have to model motion along some type of incline. When evaluating the forces for an inclined plane, keep in mind that the choice of coordinate systems in your free-body diagram is entirely up to you. With a clever choice, you can greatly simplify the amount of work and effort you need to perform in solving the problem. Let's take a look at a typical box-on-an-incline problem.


First, let's think about the type of forces that are acting on the box shown above and the direction of those forces. The box will likely have some mass, therefore it will have some weight to it. The weight will be directed straight downward. In response to the weight of the box pressing down on the incline, there will be a reaction force upward from the incline. This is our Normal Force. Keep in mind, as was described above, the normal force is perpendicular to the surface that creates it. In this case, it is perpendicular to the incline and not straight upward. Lastly, we will likely have a frictional force acting between the lower surface of the box and the surface of the incline. Since in the absence of friction, the box will slide down the incline, the frictional force will act to oppose that and be directed up the incline, parallel to the surface. With all this information in mind, let's now look at a free-body diagram for our box on an incline.


Notice that the normal force and the frictional force are perpendicular to each other. In addition, if the box does move, then it's acceleration will be directed parallel to the surface of the plane. A normal coordinate system in which the x-axis is directed perfectly horizontal, and the y-axis is directed perfectly vertical will certainly work, but all but the weight will be directed as some angle relative to the coordinate axes, requiring us to use some trig to resolve each vector, including the net force vector into separate x- and y-components.

Let's instead construct our coordinate system in such a way that as many force vectors as possible lie on one of the coordinate axes. This will minimize the amount of effort and computation we have to endure in solving this problem. Keep in mind, that Nature absolute does not care what coordinate system we choose. Any choice will work, but some choices will make life easier for us. Let's not create more work for ourselves than we need to. Since most of the forces are either perpendicular or parallel to the surface of the inclined plane, let's set our coordinate axes to that they, too, are perpendicular and parallel to the incline.


Now, as you can see, we have only one force, the weight, which is not directly along a coordinate axis, meaning that the weight is the only force we need to resolve. In the Vector 3D class that you constructed in the second lab, the heading for the vector is assumed to be measured counter-clockwise from the positive x-axis. In the FBD above, the angle between the weight vector and the negative y-axis is the same as the angle of inclination for the surface. Since in this example, we have an incline that slopes upward from left-to-right, the heading for the weight will be 270 - the angle of inclination (3${\pi}$/2-${\theta_{inc}}$ in radians).

Given the diagrams shown above for a box on an inclined plane, determine the acceleration for the box if the angle of inclination is 30 deg and the coefficient of kinetic friction is 0.15.

Step 1 is to draw a picture (which we have above) and then our Free-Body Diagram (which we also have).
Step 2 is to resolve each of our force vectors into their x- and y- components.
$\vec{f} = \mu F_N \hat{x} + 0 \hat{y}$
$\vec{F_N} = 0 \hat{x} + F_N \hat{y}$
$\vec{W} = mg \cos \left( \theta \right) \hat{x} + mg \sin \left( \theta \right) \hat{y}$

Step 3 is to apply Newton's 2nd Law, adding up the components of our forces and setting the sum equal to the net force in each direction.
$\Sigma F_x = \mu F_N + 0 + mg \cos \left( \theta \right) = ma$
$\Sigma F_y = 0 + F_N + mg \sin \left( \theta \right) = 0$

Lastly, we solve the two equations simultaneously to find the acceleration, $a$. Often with problems involving friction, you will need to solve the y-direction equation for $F_N$, and substitute the result into the x-direction equation.
From $\Sigma F_y$, $F_N = - mg \sin \left( \theta \right)$
Inserting this into $\Sigma F_x$, $- \mu mg \sin \left( \theta \right) + mg \cos \left( \theta \right) = ma$

Notice that mass, $m$ appears in every term of this equation. Assuming that we don't have a massless box, we can divide by $m$ and get rid of it leaving the following,
$- \mu g \sin \left( \theta \right) + g \cos \left( \theta \right) = a$

We know $g = 9.8 m/s^2$, $\mu = 0.15$, and $\theta = 270-30 = 240 deg$, so now we plug in the values and do the arithmetic.
$a = - 0.15 * 9.8 * \sin \left( 240 \right) + 9.8 * \cos \left( 240 \right) = 3.63 m/s^2$

With the example above, we can determine the acceleration for any object on an incline, regardless of its mass, if we know the angle of inclination and the coefficient of friction. Here, we assumed a constant slope, but it wouldn't need to be. For each time-step, you could determine the slope of the surface at the location of the object, and determine the new acceleration for that time-step. Rinse and repeat every 120th of a second.

Making the Code Work

Motivating objects using forces is not too difficult to code, given our previous work with kinematics. The only additional steps is to determine your net force, and to update your acceleration. Updating your velocity and position are done exactly as before using the Velocity Verlet method. Let's take a look at a one-dimensional example of a rocket being launched vertically taking wind resistance into account.

There are three forces acting on this rocket, the thrust of the engines, the weight of the rocket itself, and the air resistance on the rocket. What we'll need to track are the acceleration, the velocity, the height, and the elapsed time. Later in the semester, we will re-examine this problem and take into account the changing mass of the rocket as its fuel is spent. For this rocket, let's assume the mass is 1.5 kg, a coefficient of wind resistance of 0.15, and has an engine which develops 80 N of thrust for 4 seconds. Our objective will be to find it's maximum altitude and time of flight.

Note that here we introduce two different mass variables: m for the mass of the object, and invm for 1/m of the object. As we mentioned in the Kinematics chapter, floating-point division is computationally costly. If we can avoid it, we should. Defining another variable, invm in this case, takes up a bit of memory, but the computational time saved is well worth it.

This is a simple example of how to model Newton's 2nd Law
in a programming environment. Here we will simulate the
flight of a small rocket launched vertically and determine
its maximum altitude during the flight and the duration of
the flight.
J. Douglas Patterson, Sept 2017
Johnson County Community College
#include <cmath>
#include <iostream>
using namespace std;
void main() {
    float m = 1.5f;            //mass of the rocket in kg
    float invm = 1.0f / m;     //inverse of the rocket mass in 1/kg
    float t = 0.0f;           //total elapsed time in seconds
    float dt = 0.04f;          //time-step interval in seconds
    float y = 0.1f;            //vertical position in meters
    float ymax = 0.0f;         //maximum altitude in meters
    float v = 0.0f;                //vertical velocity in m/s
    float a = 0.0f;                //vertical accleration in m/s^2
    float anew = 0.0f;          //new value of the vertical accelration in m/s^2 
    float Fnet = 0.0f;           //Net force on the rocket in Newtons
    float Thrust = 80.0f;      //Thrust of the rocket engine in Newtons
    float cWind = 0.15f;       //coefficient of wind resistance
    /*** Model the motion while the engine is burning ***/
    do while ((y >= 0.0f) and (t <=4.0f)) {
        y += (v * dt) + (0.5f * a * dt * dt);                        //update the position
        Fnet = Thrust - 9.8f*m - 0.15f*v;    //Determine the net force = thrust - weight - wind resistance
        anew = Fnet * invm;                        //Solve Newton's 2nd Law for the acceleration
        v += 0.5 * (a + anew) * dt;
        a = anew;
        t += dt;
        if (ymax < y) ymax = y;
    /*** Model the motion under ballistic flight ***/
    do while (y >= 0.0f) {
        y += (v * dt) + (0.5f * a * dt * dt);               //update the position
        Fnet = - 9.8f*m - 0.15f*v;                          //Determine the net force = - weight - wind resistance
        anew = Fnet * invm;                                 //Solve Newton's 2nd Law for the acceleration
        v += 0.5 * (a + anew) * dt;                         //Update the velocity
        a = anew;                                           //Update the acceleration
        t += dt;                                            //Increment the total time by the timestep
        if (ymax < y) ymax = y;                             //Check to see if the object has exceeded the previous maximum height
        //Output the time of flight and maximum altitude to the screen.
    cout << "Time of flight: " << t << " seconds \n";
    cout << "Maximum altitude: "<< ymax << " m \n";

Conceptual Questions

  1. Is the direction of the net force always the same as the direction of the velocity for an object? Explain your answer.
  2. If a car is moving in a circle at a constant speed, such as on a cloverleaf interchange, is there a net force acting on the car? Explain your answer.
  3. If for every action, there is an equal in magnitude, but opposite in direction, reaction, explain how the net force on an object can be something other than zero.
  4. Explain the difference between weight and mass.
  5. Why do astronauts on the International Space Station appear weightless?


  1. A model rocket engine exerts a force of 124 N on a model rocket whose mass is 73.2 g. What is the acceleration of the rocket?
  2. What is the weight of a 7.3-kg bowling ball at the surface of the Earth?
  3. The Ford Fiesta ST has a mass of 2720 lbs (1234 kg) and can accelerate from 0 to 60 mph (26.8 m/s) in 7.0s. What force must the road exert on the tires for this to happen?
  4. One consequence of wind resistance is that falling objects eventually reach a speed where the wind resistance upward is exactly equal to the downward weight. The speed at which this happens is called the terminal velocity. For an object in free-fall, that is no forces except wind resistance and gravity act on the object, derive a formula for calculating the terminal velocity.
  5. For the forces shown below, determine the acceleration vector if the box has a mass of 25 kg, and the coefficient of friction is 0.2.
  6. A crate slides down a cargo ramp that's inclined at 37 deg. If the coefficient of friction between the crate and the ramp is 0.15, what is the acceleration of the crate?
  7. For the crate and ramp described above, what must the coefficient of friction be in order for the crate to remain stationary and not to slide on the ramp?
  8. Find the tensions in the ropes pictured below.
  9. A curling stone is given an initial velocity of 1.84 m/s across an ice rink. If the coefficient of friction between the stone and the ice is 0.054, how far will the stone travel before it comes to a stop?
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License