Game Development Reference
be the position of an object, or the force in a spring, or its rotational speed. The
quantities we are tracking in this way are mostly vectors (we'll return to the non-
vectors later in the topic).
There are two ways of understanding these changes: we describe the change itself,
and we describe the results of the change. If an object is changing position with time,
we need to be able to understand how it is changing position (i.e., its speed, the direc-
tion it is moving in, if it is accelerating or slowing) and the effects of the change (i.e.,
where it will be when we come to render it during the next frame of the game). These
two viewpoints are represented by differential and integral calculus, respectively. We
No code will be provided for this section; it is intended as a review of the concepts
involved only. The corresponding code makes up most of the rest of this topic, very
little of which will make sense unless you grasp the general idea of this section.
D IFFERENTIAL C ALCULUS
For our purposes we can view the differential of a quantity as the rate at which it
is changing. In the majority of this topic we are interested in the rate at which it is
changing with respect to time. This is sometimes informally called its “speed.”
When we come to look at vector calculus, however, speed has a different meaning.
It is more common in mathematics and almost ubiquitous in physics programming
to call it “velocity.”
Think about the position of an object, for example. If this represents a moving object,
then in the next instance of time, the position of the object will be slightly different.
We can work out the velocity at which the object is moving by looking at the two
positions. We could simply wait for a short time to pass, find the position of the
object again, and use the formula
where v is the velocity of the object, p and p are its positions at the first and second
measurements (so p is the change in position), and t is the time that has passed
between the two. This would give us the average velocity over the time period. It
wouldn't tell us the exact velocity of the object at any point in time, however.
Figure 2.8 shows the position of two objects at different times. Both objects start
at the same place and end at the same place at the same time. Object A travels at a
constant velocity, whereas object B stays near its start location for a while and then
zooms across the gap very quickly. Clearly they aren't traveling at the same velocity.
If we want to calculate the exact velocity of an object, we could reduce the gap
between the first and second measurement. As the gap gets smaller, we get a more