Game Development Reference

In-Depth Information

Airplane.fSpeed = 60.0f;

// Set initial angular velocity

Airplane.vAngularVelocity.x = 0.0f;

Airplane.vAngularVelocity.y = 0.0f;

Airplane.vAngularVelocity.z = 0.0f;

// Set the initial thrust, forces, and moments

Airplane.vForces.x = 500.0f;

Airplane.vForces.y = 0.0f;

Airplane.vForces.z = 0.0f;

ThrustForce = 500.0;

Airplane.vMoments.x = 0.0f;

Airplane.vMoments.y = 0.0f;

Airplane.vMoments.z = 0.0f;

// Zero the velocity in body space coordinates

Airplane.vVelocityBody.x = 0.0f;

Airplane.vVelocityBody.y = 0.0f;

Airplane.vVelocityBody.z = 0.0f;

// Set these to false at first,

// you can control later using the keyboard

Stalling = false;

Flaps = false;

// Set the initial orientation

iRoll = 0.0f;

iPitch = 0.0f;

iYaw = 0.0f;

Airplane.qOrientation = MakeQFromEulerAngles(iRoll, iPitch, iYaw);

// Now go ahead and calculate the plane's mass properties

CalcAirplaneMassProperties();

}

This function sets the initial location, speed, attitude, and thrust for the airplane and

goes on to calculate its mass properties by making a call to
CalcAirplaneMassProper

ties
. You'll see much more of this function in
Chapter 15
, so we won't show the whole

thing here. We do want to point out a portion of the code that is distinctly different from

what you do in a 2D simulation, and that's the calculation of the moment of inertia

tensor:

void CalcAirplaneMassProperties(void)

{

.

.

.

// Now calculate the moments and products of inertia for the

// combined elements.