Game Development Reference
In-Depth Information
the air, then it generates no lift. We'd like to be able to capture this kind of behavior
in a force generator that can produce sensible aerodynamic forces.
The Aerodynamic Tensor
To model the aerodynamic forces properly is very complex. The behavior of a real
aircraft depends on the fluid dynamics of air movement. This is a horrendously com-
plex discipline involving mathematics well beyond the scope of this topic. To create
a truly realistic flight simulator involves some specialized physics that I don't want to
venture into.
To make our life easier I will use a simplification: the “aerodynamic tensor.” The
aerodynamic tensor is a way of calculating the total force that a surface of the airplane
is generating based only on the speed that the air is moving over it.
Thetensorisamatrix:a3
×
3 matrix, exactly as we used for the inertia tensor. We
start with a wind speed vector and transform it using the tensor to give a force vector:
f a =
A v w
where f a is the resulting force, A is the aerodynamic tensor, and v w is the velocity of
the air. Just as with the inertia tensor, we have to be careful of coordinates here. The
velocity of the air and the resulting force are both expressed in world coordinates, but
the aerodynamic tensor is in object coordinates. Again we need to change the basis of
the tensor at each frame before applying this function.
To fly the plane we can implement control surfaces in one of two ways. The first,
and most accurate, is to have two tensors representing the aerodynamic characteristics
when the surface is at its two extremes. At each frame the current position of the
control surface is used to blend the two tensors to create a tensor for the current
surface position.
In practice three tensors are sometimes needed, to represent the two extremes
plus the “normal” position of the control surface (which often has a quite different,
and not intermediate, behavior). For example, a wing with its aileron (the control
surface on the back of each wing) in line with the wing produces lots of lift and only a
modest amount of drag. With the aileron out of this position, either up or down, the
drag increases dramatically, but the lift can be boosted or cut (depending on whether
it is up or down).
The second approach is to actually tilt the whole surface slightly. We can do this by
storing an orientation for the aerodynamic surface and allowing the player to directly
control some of this orientation. To simulate the aileron on the wing the player might
be effectively tilting the whole wing. As the wing changes orientation, the air flow over
it will change and its one aerodynamic tensor will generate correspondingly different
forces.
The Aerodynamic Surface
We can implement an aerodynamic force generator using this technique. The force
generator is created with an aerodynamic tensor, and it is attached to the rigid body