Level: Advanced
Abstract: An introduction to car physics modelling for games.
version 1.4
January, 2002
Throughout this tutorial I'll be assuming that the rear wheels provide all the drive (for four wheel drives apply the neccesary adaptations).
I'll be mainly using S.I. units, but I've included a handy conversion table
at the end.
Ftraction = u * Engineforce,
where u is a unit vector in the direction of the
car's heading.
If this were the only force, the car would accelerate to infinite speeds. Clearly, this is not the case in real life. Enter the resistance forces. The first and usually the most important one is air resistance, a.k.a. aerodynamic drag. This force is so important because it is proportional to the square of the velocity. When we're driving fast (and which game doesn't involve high speeds?) this becomes the most important resistance force.
Fdrag = - Cdrag * v *
|v|
where Cdrag is a constant and v
is the velocity vector and the notation |v| refers to the
absolute value
of vector v.
If we get casual about the notation we could write - Cdrag * v2 . Keep in mind however that we wan to square the speed, but keep the vector direction the same. Just simply squaring the x and y vector components will lose the sign (squaring always yields a positive value) and not work as expected if the velocity vector has a negative x or y component. Use something like the following code:
fdrag.x = - Cdrag * v.x * ABS(v.x);
fdrag.y = - Cdrag * v.y * ABS(v.y);
Then there is the rolling resistance. This is caused by friction between the rubber and road surface as the wheels roll along and friction in the axles, etc.etc.. We'll approximate this with a force that's proportional to the velocity using another constant.
Frr = - Crr * v
where Crr is a constant and v is the
velocity vector.
At low speeds the rolling resistance is the main resistance force, at high speeds the drag takes over in magnitude. At approx. 100 km/h (60 mph, 30 m/s) they are equal ([Zuvich]). This means Crr must be approximately 30 times the value of Cdrag
The total longtitudinal force is the vector sum of these three forces.
Flong = Ftraction + Fdrag + Frr
Note that if you're driving in a straight line the drag and rolling resistance forces will be in the opposite direction from the traction force. So in terms of magnitude, you're subtracting the resistance force from the traction force. When the car is cruising at a constant speed the forces are in equilibrium and Flong is zero.
The acceleration (a) of the car (in meters per second squared) is determined by the net force on the car (in Newton) and the car's mass M (in kilogram) via Newton's second law:
a = F / M
The car's velocity (in meters per second) is determined by integrating the acceleration over time. This sounds more complicated than it is, usually the following equation does the trick. This is known as the Euler method for numerical integration.
v = v + dt * a,
where dt is the time increment in seconds between
subsequent calls of the physics engine.
The car's position is in turn determined by integrating the velocity over time:
p = p + dt * v
With these three forces we can simulate car acceleration fairly accurately. Together they also determine the top speed of the car for a given engine power. There is no need to put a maximum speed anywhere in the code, it's just something that follows from the equations. This is because the equations form a kind of negative feedback loop. If the traction force exceeds all other forces, the car accelerates. This means the velocity increases which causes the resistance forces to increase. The net force decreases and therefore the acceleration decreases. At some point the resistance forces and the engine force cancel each other out and the car has reached its top speed for that engine power.

In this diagram the X-axis denotes car velocity in meters per second and
force values are set out along the Y-axis. The traction force (dark blue)
is set at an arbitrary value, it does not depend on the car velocity. The
rolling resistance (purple line) is a linear function of velocity and the drag
(yellow curve) is a quadratic function of velocity. At low speed the
rolling resistance exceeds the drag. At 30 m/s these two functions
cross. At higher speeds the drag is the larger resistance force. The
sum of the two resistance forces is shown as a light blue curve. At 37 m/s
this curve crosses the horizontal traction force line. This is the top
speed for this particular value of the engine power (37 m/s = 133 km/h = 83
mph).
Air resistance is approximated by the following formula (Fluid Mechanics by Landau and Lifshitz, [Beckham] chapter 6, [Zuvich])
Fdrag = 0.5 * Cd * A * rho * v2
where Cd = coefficient of friction
A is frontal area of car
rho
(Greek symbol
)=
density of air
v = speed of the car
Air density (rho) is 1.29 kg/m3 (0.0801 lb-mass/ft3),
frontal area is approx. 2.2 m2 (20 sq. feet), Cd depends
on the shape of the car and determined via wind tunnel tests. Approximate
value for a Corvette: 0.30. This gives us a value for Cdrag:
Cdrag = 0.5 * 0.30 * 2.2 * 1.29
= 0.4257
We've already found that Crr should be approx. 30 times
Cdrag. This gives us
Crr = 30
* 0.4257
= 12.8
To be honest, I have my doubts about this last constant. I couldn't confirm its value anywhere. Be prepared to finetune this one to get realistic behaviour.
Flong = Fbraking + Fdrag + Frr
A simple model of braking:
Fbraking = -u * Cbraking
In this model the braking force is a constant. Keep in mind to stop
applying the braking force as soon as the speed is reduced to zero otherwise the
car will end up going in reverse.
The effect of weight transfer is important for driving games for two reasons. First of all the visual effect of the car pitching in response to driver actions adds a lot of realism to the game. Suddenly, the simulation becomes a lot more lifelike in the user's experience.
Second of all, the weight distribution dramatically affects the maximum traction force per wheel. This is because there is a friction limit for a wheel that is proportional to the load on that wheel:
Fmax = mu * W
where mu is the friction coefficient of the tyre. For
street tyres this may be 1.0, for racing car tyres this can get as high as 1.5.
For a stationary vehicle the total weight of the car (W, which equals M *g)
is distributed over the front and rear wheels according to the distance of the
rear and front axle to the CM (c and b respectively):
Wf = (c/L)*W
Wr = (b/L)*W
where b is the distance from CG to front axle, c the
distance from CG to rear axle and L is the wheelbase.

If the car is accelerating or decelerating at rate a, the weight on front
(Wf) and rear axle (Wr) can be calculated as follows:
Wf = (c/L)*W - (h/L)*M*a
Wr = (b/L)*W + (h/L)*M*a,
where h is the height of the CG, M is the car's mass and
a is the acceleration (negative in case of deceleration).
Note that if the CG is further to the rear (c < b), then more weight falls on the rear axle and vice versa. Makes sense, doesn't it?
If you want to simplify this, you could assume that the static weight
distribution is 50-50 over the front and rear axle. In other words, assume b = c
= L/2. In that case, Wf = 0.5*W - (h/L)*M*a and Wr = 0.5*W
+(h/L)*M*a;

Ftraction = u *
Tengine * xg * xd * n / Rw
where
u is a unit vector
which reflects the car's orientation,
Tengine
is the torque of the engine at a given rpm,
xg
is the gear ratio,
xd is the differential
ratio,
n is transmission efficiency and
Rw is wheel radius.
An example:
Engine torque: 448 Nm (=330 ft lbs)
Gear ratio (first gear): 3.06
Differential ratio: 3.07
Transmission efficiency: 0.7
Wheel radius:
0.33 m (=13 inch)
Mass: 1500 kg (= 3300 lbs of weight)
This gives us a potential traction force of (448*3.06*3.07*0.7/0.33 = ) 8927 N if the driver puts his foot down.
Meanwhile, in the static situation, the weight on the rear wheels is half the
weight of the car: (1500 kg / 2 ) * 9.8 m/s2 = 7350 N (=1650
lbs). This means the maximum amount of traction the rear wheels can
provide if mu = 1.0 is 7350 N. Push the pedal down further than that and
the wheels will start spinning and lose grip and the traction actually drops
below the maximum amount. So, for maximum acceleration the driver must
exert an amount of force just below the friction threshold. The subsequent
acceleration causes a weight shift to the rear wheels. The acceleration
is:
a = 7350 N / 1500 kg = 4.9
m/s2 (=0.5 G)
Let's say that b = c = 1.25m and L is therefore 2.50 m, the CG is 1.0 m above ground level. After a brief moment the amount of shifted weight is then (h/L)*M*a, that is (1.0/2.50)*1500*4.9 = 2940 N.
This means Wf = 7350 - 2940 N and Wr = 7350 +
2940 N. The rear wheels now have extra weight which in this case is sufficient
to allows the driver to put his foot all the way down.
| First gear |
|
|
| Second gear |
|
|
| Third gear |
|
|
| Fourth gear |
|
|
| Fifth gear |
|
|
| Differential ratio |
|
|
Max torque 190 N.m (140 lb ft) at 3500 rpm, mass = 1140 kg. In first gear at max torque this gives us 190*3.5*3.6*0.7/0.33 = 5074 N of force. This will accelerate a mass of 1140 kg with 4.5 m/s2 which equals 0.45 g.
The combination of gear and differential acts as a multiplier from the torque on the crankshaft to the torque on the rear wheels. For example, the Alpha in first gear has a multiplier of 3.5 * 3.6 = 12.6. This means each Newton meter of torque on the crankshaft results in 12.6 Nm of torque on the rear axle. Multiply this with the wheel diameter to get the force exerted by the wheels on the road (and conversely by the road back to the wheels). Let's take a 33 cm wheel radius, that gives us 0.33 * 12.6 = 4.16 N per N.m of engine torque. Of course, there's no such thing as a free lunch. You can't just multiply torque and not have to pay something in return. What you gain in torque, you of course have to pay back in angular velocity. For each rpm of the wheel, the engine has to do12.6 rpm. The rotational speed of the wheel is directly related to the speed of the car (unless we're skidding). One rpm (rotation per minute) is 1/60th of a revolution per second. Each revolution takes the wheel 2 pi R further, i.e. 2 * 3.14 * 0.33 = 2.07 m. So when the engine is doing 3500 rpm in first gear, that's 278 rpm of the wheels, is 4.6 rotations per second is 9.6 m/s, about 35 km/h.
In low gears the gear ratio is high, so you get lots of torque but no so much speed. In high gears, you get more speed but less torque. You can put this in a graph as a set of curves, one for each gear, as in the following example.

Now beware, the torque that we can look up in the torque curves above for a given rpm, is the maximum torque at that rpm. How much torque is actually applied to the drive wheels depends on the throttle position. This position is determined by user input (the accelerator pedal) and varies from 0 to 100%. So, in pseudo-code, this looks something like this:
max torque = LookupTorqueCurve( rpm
)
engine torque = throttle position * max torque
This torque is delivered to the drive wheels via the gearbox and results in what I'll call the drive torque:
drive torque = engine_torque * gear_ratio * differential_ratio * transmission_efficiency
Note that the gearbox will increase the torque while reducing the rate of rotation, especially in low gears.
How do we get the RPM?
So we can calculate the engine's max torque and the engine's actual applied torque if we know the rpm. In other words, now we need to know has fast the engine's crankshaft is turning.
The way I do it is to calculate this back from the drive wheel rotation speed. After all, if the engine's not declutched, the cranckshaft and the drive wheels are physically connected through a set of gears. If we know the rpm, we can calculate the rotation speed of the drive wheels, and vice versa!
rpm = wheel rotation rate * gear ratio * differential ratio * 60 / 2 pi
The 60 / 2 pi is a conversion factor to get from rad/s to revolutions per minute. There are 60 seconds in a minute and 2 pi radians per revolution. According to this equation, the cranckshaft will typically be rotating faster than the drive wheels. For example, let's say the car is moving at 20 km/h in first gear.
car speed is 20 km/h = 20,000 m / 3600 s = 5.6 m/s.
wheel radius is 0.33
m, so wheel angular velocity is 5.6/0.33 = 16.8 rad/s
first gear ratio is
3.5, differential ratio is 3.6 so crankshaft is rotating at 212 rad/s.
That's
212*60 = 12727 rad/minute = 12727/2 pi = 2025 rpm.
Calculating the wheel angular velocity from the car speed as we did here is only allowed if the wheel is rolling, in other words if there is no lateral slip between the tyre surface and the road. This is true for the front wheels, but for drive wheels this is typically not true. After all, if a wheel is just rolling along it is not transfering energy to keep the car in motion.
In a typical situation where the car is cruising at constant speed, the rear wheels will be rotating slighty faster than the front wheels. The front wheels are rolling and therefore have zero slip. You can calculate their angular velocity as we did just now, just divide the car speed by the wheel radius. The rear wheels however are rotating faster and that means the surface of the tyre is slipping with regard to the road surface. This slip causes a friction force in the direction opposing the slip. In other words, the friction force will be pointing to the front of the car. In fact, this friction force, this reaction to the wheel slipping, is what pushes the car forwards. This friction force is known as the traction force. The traction force depends on the amount of slip. The amount of slip is expressed as the slip ratio:
slip ratio = (r * omega - v ) / MAX(r * omega,
v)
where
r is wheel
radius
omega is wheel angular
velocity
v is car speed (longtitudinal
velocity)
Note: there are a number of slightly different definitions for slip ratio in use.
The relationship between normalized traction force and slip ratio can be described by a curve such as the following:
Note how the force is zero if the wheel rolls, i.e. slip ratio = 0, and the force is at a peak for a slip ratio of approximately 0.2. This exact curve shape may vary per tyre, per road surface, per temperature, etc. etc.
For a simple simulation we'll just use a linear relationship:
normalized traction force = slip ratio * Traction Constant
To get from normalized traction to actual traction, multiply with the load on the wheel. The traction force is linearly related to the weight on that wheel, we saw that earlier when we dicussed weight tranfer.
traction force = weight * normalized traction force
To recap, the traction force is the friction force that the road surface applies on the wheel surface. Obviously, this force will cause a torque on the axis of each drive wheel:
traction torque = traction force * wheel radius
This torque will oppose the torque delivered by the engine to that wheel. If the brake is applied this will cause a torque as well. For the brake, I'll assume it delivers a constant torque in the direction opposite to the wheel' s rotation.
The following diagram illustrates this for an accelerating car. The engine torque is magnified by the gear ratio and the differential ratio and provides the drive torque on the rear wheels. The angular velocity of the wheel is high enough that it causes slip between the tyre surface and the road, which can be expressed as a positive slip ratio. This results in a reactive friction force, known as the traction force, which is what pushed the car forward. The traction force also results in a traction torque on the rear wheels which opposes the drive torque. In this case the net torque is still positive and will result in an acceleration of the rear wheel rotation rate. This will increase the rpm and increase the slip ratio.
The net torque on the drive wheels is the sum of the three possible torques:
total torque = drive torque + traction torque + brake torque
Remember that torques are signed quantities, the drive torque wil generally have a different sign than the traction and brake torque. If the driver is not braking, the brake torque is zero.
This torque will cause an angular acceleration of the drive wheels, just like a force applied on a mass will cause it to accelerate.
angular acceleration = total torque / rear wheel inertia.
I've found somewhere that the inertia of a solid cylinder around its axis can be calculated as follows:
inertia of a cylinder = Mass * radius2 / 2
So for a 75 kg wheel with a 33 cm radius that's an inertia of 75 * 0.33* 0.33 / 2 = 4.1.
A positive angular acceleration will increase the angular velocity of the rear wheels over time. As for the car velocity which depends on the linear acceleration, we simulate this by doing one step of numerical integration each time we go through the physics calculation:
rear wheel angular velocity += rear wheel angular acceleration * time step
where time step is the amount of simulated time between two calls of this function. This way we can determine how fast the drive wheels are turning and therefore we can calculate the engine's rpm.
(Note: in the description given here it's not very obvious that there are actually two drive wheels.The distinction between a torque on the rear axle and a torque on an individual wheel is blurry. You can either halve the drive torque to calculate the situation per wheel or double the traction torque to calculate the situation for the rear axle.)
Curves
Okay, enough of driving in a straight line. How about some turning?
One thing to keep in mind is that simulating the physics of turning at low speed is different from turning at high speed. At low speeds (parking lot manoeuvres), the wheels pretty much roll in the direction they're pointed at. To simulate this, you need some geometry and some kinetics. You don't really need to consider forces and mass. In other words, it is a kinetics problem not a dynamics problem.
At higher speeds, it becomes noticeable that the wheels can be heading in one direction while their movement is still in another direction. In other words, the wheels can sometimes have a velocity that is is not aligned with the wheel orientation. This means there is a velocity component that is at a right angle to the wheel. This of course causes a lot of friction. After all a wheel is designed to roll in a particular direction and that without too much effort. Pushing a wheel sideways is very difficult and causes a lot of friction force. In high speed turns, wheels are being pushed sideways and we need to take these forces into account.
Let's first look at low speed cornering. In this situation we can assume that the wheels are moving in the direction they're pointing. The wheels are rolling, but not slipping sideways. If the front wheels are turned at an angle delta and the car is moving at a constant speed, then the car will describe a circular path. Imagine lines projecting from the centre of the hubcabs of the front and rear wheel at the inside of the curve. Where these two lines cross, that's the centre of the circle.
This is nicely illustrated in the following screenshot. Note how the green
lines all intersect in one point, the centre round which the car is
turning. You may also notice that the front wheels aren't turned at the
same angle, the outside wheel is turned slightly less than the inside
wheel. This is also what happens in real life, the steering mechanism of a
car is designed to turn the wheels at a different angle. For a car
simulation, this subtlety is probably not so important. I'll just
concentrate on the steering angle of the front wheel at the inside of the curve
and ignore the wheel at the other side.
This is a screen shot from a car physics demo by Rui Martins.
More illustrations and a download can be found at
http://ccae-sv.inesc.pt/~rmsm/OpenGL/Racer/
The radius of the circle can be determined via geometry as in the
following diagram:

The distance between front and rear axle is known at the wheel base and denoted as L. The radius of the circle that the car describes (to be precise the circle that the front wheel describes) is called R. The diagram shows a triangle with one vertex in the circle centre and one at the centre of each wheel. The angle at the rear wheel is 90 degrees per definition. The angle at the front wheel is 90 degrees minus delta. This means the angle at the circle centre is also delta (the sum of the angles of a triangle is always 180 degrees). The sine of this angle is the wheel base divided by the circle radius, therefore:

Okay, so we can derive the circle radius from the steering angle, now
what? Well, the next step is to calculated the angular velocity, i.e. the
rate at which the car turns. Angular velocity is usually represented using
the Greek letter omega (
), and is expressed in radians per
second. (A radian is a full circle divided by 2 pi). It is fairly simple to
determine: if we're driving circles at a constant speed v and the radius of the
circle is R, how long does it take to complete one circle? That's the
circumference divided by the speed. In the time the car has described a
circular path it has also rotated around its up-axis exactly once. In other
words:

By using these last two equations, we know how fast the car must turn for a given steering angle at a specific speed. For low speed cornering, that's all we need. The steering angle is determined from user input. The car speed is determined as for the straight line cases (the velocity vector always points in the car direction). From this we calculate the circle radius and the angular velocity. The angular velocity is used to change the car orientation at a specific rate. The car's speed is unaffected by the turn, the velocity vector just rotates to match the car's orientation.
Of course, there are not many games involving cars that drive around sedately (apart from the legendary Trabant Granny Racer ;-). Gamers are an impatient lot and usually want to get somewhere in a hurry, preferably involving some squealing of tires, grinding of gearboxes and collateral damage to the surrounding environment. Our goal is to find a physics model that will allow understeer,oversteer, skidding, handbrake turns, etc.
At high speeds, we can no longer assume that wheels are moving in the direction they're pointing. They're attached to the car body which has a certain mass and takes time to react to steering forces. The car body can also have an angular velocity. Just like linear velocity, this takes time to build up or slow down. This is determined by angular acceleration which is in turn dependent on torque and inertia (which are the rotational equivalents of force and mass).
Also, the car itself will not always be moving in the direction it's heading. The car may be pointing one way but moving another way. Think of rally drivers going through a curve. The angle between the car's orientation and the car's velocity vector is known as the sideslip angle (beta).

Now let's look at high speed cornering from the wheel's point of view. In this situation we need to calculate the sideways speed of the tires. Because wheels roll, they have relatively low resistance to motion in forward or rearward direction. The friction of the rubber on the tarmac exerts just enough force to get the wheel into a rolling motion and to keep it rolling. Once moving, the friction force at the wheel surface only has to overcome the friction forces in the wheel's axle. In Coulomb's theory of friction this is static friction [Lander], the same sort of friction you experience when you applying a force on a book that is lying on a table but not enough force to make the book move. In the case of static friction, the friction force is equal in magnitude to the force that is applied. The static friction model applies up to a specific maximum value of applied force. Once the applied force exceeds that threshold value, the object will start sliding and once it is sliding the kinetic friction model applies.
It may seem odd that a static friction model applies to a rolling wheel. After all, the car is moving, the wheel is spinning round, lots of movement going on here! Okay, there's a lot of movement but let's zoom in to the bit that really matters here: the contact patch of rubber that is touching the ground at a specific moment. Is it really moving relative to the ground? Or is it moving at the same speed as the ground and in the same direction? After the wheel has rotated a little bit, another bit of rubber is brought into contact with another bit of ground. The speed at which the contact patch moves round the surface of the tire is the same speed at which the contact patch moves across the road. But the tire surface at the contact patch doesn't actually move relative to the road surface. If you zoom in close enough, the tire surface and the road are actually in static equilibrium; their relative speed is zero.
So, in the direction that a wheel rolls it exhibits relatively low friction. In the perpendicular direction, however, wheels have great resistance to motion. Try pushing a car tire sideways. This is very hard because you need to overcome the maximum static friction force to get the wheel to slip.
In high speed cornering, the tires develop lateral forces also known as the cornering force (Fc). This force depends on the slip angle (alpha), which is the angle between the tire's heading and its direction of travel. As the slip angle grows, so does the cornering force. The cornering force per tire also depends on the weight on that tire. At low slip angles, the relationship between slip angle and cornering force is linear, in other words Fc = C * alpha where the constant C is known as the cornering stiffness.
If you'd like to see this explained in a picture, consider the following one. The velocity vector of the wheel has angle alpha relative to the direction in which the wheel can roll. We can split the velocity vector v up into two component vectors. The longtitudinal vector has magnitude cos(alpha) * v. Movement in this direction corresponds to the rolling motion of the wheel. The lateral vector has magnitude sin(alpha) * v and causes a resistance force in the opposite direction: the cornering force.

There are three contributors to the slip angle of the wheels: the sideslip angle of the car, the angular rotation of the car around the up axis (yaw rate) and, for the front wheels, the steering angle.
The sideslip angle b (bèta) is the difference between the car orientation and the direction of movement. In other words, it's the angle between the longtitudinal axis and the actual direction of travel. So it's similar in concept to what the slip angle is for the tyres. Because the car may be moving in a different direction than where it's pointing at, it experiences a sideways motion. This is equivalent to the perpendicular component of the velocity vector.

If the car is turning round the centre of geometry (CG) at a rate omega (in rad/s!), this means the front wheels are describing a circular path around CG at that same rate. If the car turns full circle, the front wheel describes of path of 2.pi.b around CG in 1/(2.pi.omega) seconds where b is the distance from the front axle to the CG. This means a lateral velocity of omega * b. For the rear wheels, this is -omega * c. Note the sign reversal. To express this as an angle, take the arctangent of the lateral velocity divided by the longtitudinal velocity (just like we did beta). For small angles we can approximate arctan(vy/vx) by vx/vy.

The steering angle (delta) is the angle that the front wheels make relative to the orientation of the car. There is no steering angle for the rear wheels, these are always in line with the car body orientation.

The slip angles for the front and rear wheels are then given by the following equations:

The lateral force exercised by the tyre is a function of the slip angle. In fact, for real tyres it's quite a complex function once again best described by curve diagrams. Different curves apply to different loads because the weight changes the tyre shape and therefore it's properties. But we can also approximate reality by using a linear function:
Flateral = Ca * alphaThe constant Ca goes by the name of the cornering stiffness.
If you want a better approximation of the the relationship between slip angle and lateral force, search for information on the so-called Pacejka Magic Formula. That's what the professionals appear to use. I have no experience with this but it sure sounds good.
The lateral forces of the four tyres have two results: a net cornering force and a torque around the yaw axis. The cornering force is the force on the CG at a right angle to the car orientation and serves as the centripetal force which is required to describe a circular path. The contribution of the rear wheels to the cornering force is the same as the lateral force. For the front wheels, multiply the lateral force with cos(delta) to allow for the steering angle.
Fcornering = Flat, rear + cos(delta) * Flat, frontAs a point of interest, we can find the circle radius now that we know the centripetal force using the following equation
Fcentripetal = M v2 / radiusThe lateral force also introduce a torque which causes the car body to turn. After all, it would look very silly if the car is describing a circle but keeps pointing in the same direction. The cornering force makes sure the CG describes a circle, but since it operates on a point mass it does nothing about the car orientation. That's what we need the torque around the yaw axis for.
Torque is force multiplied by the perpendicular distance between the point where the force is applied and the pivot point. So for the rear wheels the contribution to the torque is -Flat, rear * c and for the front wheels it's cos(delta) * Flat, front * b. Note that the sign differs.
Applying torque on the car body introduces angular acceleration. Just like Newton's second law F = M.a, there is a law for torque and angular acceleration:
Torque = Inertia * angular acceleration.
The inertia for a rigid body is a constant which depends on its mass and
geometry (and the distribution of the mass within its geometry).
Engineering handbooks provide formulas for the inertia of common shapes such as
spheres, cubes, etc.
Epilogue
You can download a demo (car demo v0.8) and the source code which demonstrates high speed cornering using the method just described. Or easier yet, try the Java version by Marcel "Bloemschneif" Sodeike!

The following information is shown on screen:
See also my work in progress on the game Downtown Drivin' for an example of some of the stuff that was discussed here.
If you spot mistakes in this tutorial or find sections that could do with some clarification, let me know.
-Marco-
[Bower] Richard Bower,
http://www.dur.ac.uk/~dph0rgb
[Hecker] Chris Hecker, series on Physics in Game Development Magazine,
http://www.d6.com/users/checker/dynamics.htm
[Lander] Jeff Lander, The Trials and Tribulations of Tribology,
http://www.gamasutra.com/features/20000510/lander_01.htm
[RQRiley] Automobile Ride, Handling and Suspension Design, R.Q. Riley
Enterprises,
http://www.dur.ac.uk/~dph0rgb
[Zuvich] Vehicle Dynamics for Racing Games, Ted Zuvich,
http://www.gdconf.com/2000/library/homepage.htm,
note that you need to obtain a (free) Gamasutra id to access the game
development conference archives.
| Force | N (Newton) | = m.kg/s2 |
| Power | W (Watt) | = N.m/s = J/s = m2 kg / s3 |
| Torque | N.m (Newton meter) | |
| Speed | m/s | |
| Angular velocity | rad/s | |
| Acceleration | m/s2 | |
| Mass | kg | |
| Distance | m |
Here are some handy unit conversions to S.I. units.
| 1 mile | = 1.6093 km |
| 1 ft (foot) | = 0.3048 m |
| 1 in (inch) | = 0.0254 m = 2.54 cm |
| 1 km/h | = 0.2778 m/s |
| 1 mph | = 1.609 km/h = .447 m/s |
| 1 rpm (revolution per minute) | = 0.105 rad/s |
| 1 G | = 9.8 m/s2 = 32.1 lb/s2 |
| 1 lb (pound) | = 4.45 N |
| 1 lb (pound) | = 0.4536 kg 1) = 1 lb/1G |
| 1 lb.ft (foot pounds) | = 1.356 N.m |
| 1 lb.ft/s (foot pound per second) | = 1.356 W |
| 1 hp (horsepower) = 550 ft.lb/s | = 745.7 W |
| 1 metric hp = 0.986 hp | = 735.5 kW |
1) To say a pound equals so and so much kilograms is actually nonsense. A pound is a unit of force and a kilogram is a unit of mass. What we mean by this "conversion" is that one pound of weight (which is a force) equals the weight exerted by 0.4536 kg of mass assuming the gravity is 9.8m/s2. On the moon, a kilogram will weigh less but still have the same mass.
Unit converter on the web: http://lecture.lite.msu.edu/~mmp/conversions/intro.htm
Marco Monster
E-mail: monstrous@planet.nl
Website: http://home.planet.nl/~monstrous
Copyright 2000-2001 Marco Monster. All rights reserved. This tutorial may not be copied or redistributed without permission.