Game Development Reference

In-Depth Information

of the acceleration (just as acceleration was the second derivative of the position).

This would give us an updated equation of

p
t
2

2

p
=

p

+ ˙

pt

+ ¨

[2.9]

p
is the velocity of the object at the start of the time interval, and

p
is the

where

constant acceleration over the whole time.

It is beyond the scope of this topic to describe how these equations are arrived

at: you can see any introduction to calculus for the basic algebraic rules for finding

equations for differentials and integrals. For our purposes in this topic I will provide

the equations: they match those found in applied mathematics books for mechanics.

Just as equation 2.7 assumes a constant velocity, equation 2.9 assumes a constant

acceleration. We could generate further equations to cope with changing accelera-

tions. As we will see in the next chapter, however, even 2.9 isn't needed when it comes

to updating the position; we can make do with the assumption that there is no accel-

eration.

In mathematics, when we talk about integrating, we mean to convert a formula

for velocity into a formula for position; or a formula for acceleration into one for

velocity—in other words, to do the opposite of a differentiation. In game develop-

ment the term is often used slightly differently:
to integrate
means to perform the

position or velocity updates. From this point on I will stick to the second use, since

we will have no need to do mathematical integration again.

Vector Integral Calculus

Just as we saw for differentiation, vectors can often take the place of scalars in the

update functions. Again this is not the case for mathematics in general, and most

of the formulae you find in mathematical textbooks on integration will not work

for vectors. In the case of the two integrals we will use in this topic—equations 2.7

and 2.8—it just so happens that it does. So we can write

p
=

+
p
t

p

and perform the calculation on a component-by-component basis:

⎡

⎣

⎤

⎦

p
x
+
˙

p
x
t

p
y
+ ˙

p
=

+
˙

p

p
t

=

p
y
t

p
z
+
˙

p
z
t

This could be converted into code as

position += velocity * t;