Game Development Reference

In-Depth Information

or

=
x
(
t
)+
h
v
(
t
)
.

x
(
t
+
h
)

This is known as the explicit Euler's method. Another way of thinking of this

is that the derivative is tangent to the curve of
x
(
t
) at time
t
. By taking a small

enough step in the tangent direction, we should end up close to the actual solution.

Note that since we are taking a new time step each frame, the frame positions

are often represented in terms of a sequence of approximations
x
0
,
x
1
,
x
2
,...
So

an alternative form for Euler's method is

x
i
+1
=
x
i
+
h
x
i
.

Including the update for velocity, our full set of simulation equations is

v
i
+1

=
v
i
+
h
F
(
t
i
,
x
i
,
v
i
)
/m,

x
i
+1

=
x
i
+
h
v
i
+1
.

Note that we use the result of the velocity step in our position equation. This is

a variant of the standard Euler known as symplectic Euler, which provides more

stability for position-based forces. We will discuss symplectic Euler and other

integration methods below in more detail.

1.6.3 Updating Orientation

Updating orientation for a rigid-body simulation is similar to, yet different from,

updating position. In addition to the linear quantities, we now have an object with

the last frame's orientation
R
i
or
q
i
, the last frame's angular velocity vector
ω
i
,

an inertial tensor
I
, and a sum of torques
τ
. From that, we wish to calculate the

current frame's orientation
R
i
+1
or
q
i
+1
and the current frame's angular velocity

ω
i
+1
.

The orientation itself we represent with either a rotation matrix
R
or a quater-

nion
q
, both encapsulating rotation from a reference orientation (much as we can

use a vector from the origin to represent a point). Which form we use depends

on our needs. For example, rotation matrices can be convenient because they are

easily converted into a form efficient for rendering. However, quaternions take up

less space and need fewer operations to update and, thus, can be more efficient in

the simulation engine itself.

Angular velocity is the rotational correspondence to linear velocity. As lin-

ear velocity represents a change in position, angular velocity represents a change

in orientation. Its form is a three-element vector pointing along the axis of ro-

tation and scaled so that its magnitude is the angle of rotation, in radians. We