From 725248e798c2b6ce181e5a4ebb506e341689c14b Mon Sep 17 00:00:00 2001 From: realtradam Date: Sat, 28 Nov 2020 13:05:33 -0500 Subject: added references --- .../Car Physics for Games.html | 1114 ++++++++++++++++++++ .../MonstrousSoftware-email-address.gif | Bin 0 -> 1666 bytes .../Car Physics for Games_files/cardem08.gif | Bin 0 -> 2703 bytes .../Car Physics for Games_files/ct_alphas.gif | Bin 0 -> 3641 bytes .../Car Physics for Games_files/ct_srapprox.gif | Bin 0 -> 1739 bytes .../Car Physics for Games_files/ctangles.jpg | Bin 0 -> 8605 bytes .../Car Physics for Games_files/ctav.gif | Bin 0 -> 946 bytes .../Car Physics for Games_files/ctbeta.gif | Bin 0 -> 1531 bytes .../Car Physics for Games_files/ctbeta.jpg | Bin 0 -> 8649 bytes .../Car Physics for Games_files/ctdeltapic.gif | Bin 0 -> 890 bytes .../Car Physics for Games_files/cteq_av.gif | Bin 0 -> 1162 bytes .../Car Physics for Games_files/cteq_r.gif | Bin 0 -> 1424 bytes .../Car Physics for Games_files/cteq_sr.gif | Bin 0 -> 1363 bytes .../Car Physics for Games_files/ctgraph.jpg | Bin 0 -> 18909 bytes .../Car Physics for Games_files/ctgrcrvs.gif | Bin 0 -> 9889 bytes .../Car Physics for Games_files/ctimage8.gif | Bin 0 -> 1979 bytes .../Car Physics for Games_files/ctrho.gif | Bin 0 -> 836 bytes .../Car Physics for Games_files/ctsacurve.gif | Bin 0 -> 4826 bytes .../Car Physics for Games_files/ctsrcurve.gif | Bin 0 -> 4826 bytes .../Car Physics for Games_files/cttorq.gif | Bin 0 -> 7851 bytes .../Car Physics for Games_files/cttorqsi.gif | Bin 0 -> 6896 bytes .../Car Physics for Games_files/ctturn.jpg | Bin 0 -> 43746 bytes .../Car Physics for Games_files/ctwd.jpg | Bin 0 -> 8681 bytes .../Car Physics for Games_files/legend.gif | Bin 0 -> 5601 bytes .../Car Physics for Games_files/omega.gif | Bin 0 -> 892 bytes .../Car Physics for Games_files/tc_torques.png | Bin 0 -> 19604 bytes .../carPhysicsPage/www.asawicki.info/robots.txt | 3 + 27 files changed, 1117 insertions(+) create mode 100644 Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games.html create mode 100644 Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/MonstrousSoftware-email-address.gif create mode 100644 Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/cardem08.gif create mode 100644 Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ct_alphas.gif create mode 100644 Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ct_srapprox.gif create mode 100644 Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctangles.jpg create mode 100644 Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctav.gif create mode 100644 Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctbeta.gif create mode 100644 Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctbeta.jpg create mode 100644 Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctdeltapic.gif create mode 100644 Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/cteq_av.gif create mode 100644 Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/cteq_r.gif create mode 100644 Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/cteq_sr.gif create mode 100644 Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctgraph.jpg create mode 100644 Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctgrcrvs.gif create mode 100644 Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctimage8.gif create mode 100644 Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctrho.gif create mode 100644 Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctsacurve.gif create mode 100644 Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctsrcurve.gif create mode 100644 Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/cttorq.gif create mode 100644 Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/cttorqsi.gif create mode 100644 Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctturn.jpg create mode 100644 Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctwd.jpg create mode 100644 Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/legend.gif create mode 100644 Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/omega.gif create mode 100644 Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/tc_torques.png create mode 100644 Resources/carPhysicsPage/www.asawicki.info/robots.txt (limited to 'Resources/carPhysicsPage/www.asawicki.info') diff --git a/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games.html b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games.html new file mode 100644 index 0000000..6925bed --- /dev/null +++ b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games.html @@ -0,0 +1,1114 @@ + + + + + Car Physics + + +
Car +Physics for Games
+by Marco Monster
+

Level: Advanced

+

Abstract: An introduction to car physics modelling for +games.

+

+
+

version 1.9
+November, 2003 
+  

+

Introduction

+

This tutorial is about simulating cars in games, in other words +vehicle physics.   

+

One of the key points in simplifying vehicle physics is to handle +the longtitudinal and lateral forces separately.  Longtitudinal +forces operate in the direction of the car body (or in the exact +opposite direction).  These are wheel force, braking force, rolling +resistance and drag (= airresistance).  Together these forces +control the acceleration or deceleration of the car and therefore the +speed of the car.  Lateral forces allow the car to turn.  +These forces are caused by sideways friction on the wheels.  We'll +also have a look at the angular moment of the car and the torque caused +by lateral forces.

+

Notation and conventions

+Vectors are shown in bold, we'll be using 2d vectors.  So the +notation a = -b would translate to the following code +snippet:
+    a.x = -b.x
+    a.y = -b.y +

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 (meters, kilograms, Newtons, etc.), +but I've included a handy conversion table at the end for those readers +more familiar with imperial measures (pounds, feet, miles, etc.)

+

Straight line physics

+First let's consider a car driving in a straight line.  Which +forces are at play here?  First of all there's what the tractive +force, i.e. the force delivered by the engine via the rear wheels.  +The engine turns the wheels forward (actually it applies a torque on the +wheel), the wheels push backwards on the road surface and, in reaction, +the road surface pushes back in a forward direction.  For now, +we'll just say that the tractive force is equivalent in magnitude to +the variable Engineforce, which is controlled directly by the user. +

    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 magnitude of vector v
+   

+

The magnitude of the velocity vector is more commonly known as the +speed. Note the difference of data type: speed is a scalar, velocity is +a vector. Use something like the following code:

+

    speed = sqrt(v.x*v.x + v.y*v.y);
+    fdrag.x = - Cdrag * v.x * speed;
+    fdrag.y = - Cdrag * v.y * speed;

+

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.

+
+

graph

+
+

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).

+

Magic Constants

+So far, we've introduced two magic constants in our equations: Cdrag +and Crr .  If you're not too concerned about realism you +can give these any value that looks and feels good in your game.  +For example, in an arcade racer you may want to have a car that +accelerates faster than any car in real life.  On the other hand, +if you're really serious about realistic simulation, you'll want to get +these constants exactly right. +

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.

+

Braking

+When braking, the traction force is replaced by a braking force which +is oriented in the opposite direction.  The total longtitudinal +force is then the vector sum of these three forces. +

    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.

+

Weight Transfer

+An important effect when accelerating or braking is the effect of +dynamic weight transfer.  When braking hard the car will +nosedive.  During accelerating, the car leans back.  This is +because just like the driver is pushed back in his seat when the pedal +hits the metal, so is the car's centre of mass. The effect of this is +that the weight on the rear wheels increases during acceleration and the +front wheels conversely have less weight to bear. +

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;

+

Engine Force

+

When I said earlier that the engine delivers a certain amount of +force, this was a a bit of a simplification.  An engine delivers an +amount of torque.  Torque is like a rotational equivalent +of force. Torque is force times distance. If you apply a 10 +Newton force at 0.3 meters of the axis of rotation, you've got a torque +of 10 x 0.3 = 3 N.m (Newton meter). That's the same torque as when you +apply a 1 N force at 3 m from the axis. In both cases the leverage is +the same.

+

The torque that an engine can deliver depends on the speed at which +the engine is turning, commonly expressed as rpm (revolutions per +minute). The relationship torque versus rpm is not a linear +relationship, but is usually provided as a curve known as a torque curve +(the exact shape and height of the curve is specific for each +engine type, it is determined by engine tests). Here's an example for +the 5.7 liter V8 engine found in Corvettes from 1997 to 2000: the LS1

+
+

torque curve for the Corvette LS1 engine

+
+

Note that the torque curve peaks at about 4400 rpm with a torque of +350 lb-ft (475 N.m) and horsepower peaks at 5600 rpm at 345 hp (257 kW). +The curves are only defined in the range from, in this particular +case, about 1000 to 6000 rpm, because that is the operating range +of the engine. Any lower, and the engine will stall.  Any higher +(above the so-called "redline"), and you'll damage it.

+

Oh, and by the way, this is the maximum torque the engine +can deliver at a given rpm. The actual torque that the engine delivers +depends on your throttle position and is a fraction between  0 and +1 of this maximum.

+ +

We're mostly interested in the torque curve, but some people find +the power curve also interesting. You can derive the horsepower from the +torque in foot-pounds using the following equation:

+
hp = torque * rpm / 5252
+

Because of this relationship, the two curves will always cross at +5252 rpm. Check for yourself in the diagram above.

+

And here's the same curves in SI units: Newton meter for torque and +kiloWatt for power. The curves are the same shape, but the relative +scale is different (and because of that they don't cross either).

+
+

Same curves but now in SI units

+
+

Now, the torque from the engine (i.e. at the crankshaft) is +converted via the gear and differential before it's applied to the rear +wheels. The gearing multiplies the torque from the engine by a factor +depending on the gear ratios.

+

Unfortunately, quite some energy is lost in the process. As much as +30% of the energy could be lost in the form of heat. This gives a +so-called transmission efficiency of 70%. Let me just point out that +I've seen this mentioned as a typical value, I don't have +actual values for any particular car. 

+

The torque on the rear axle can be converted to a force of the wheel +on the road surface by dividing by the wheel radius. (Force is torque +divided by distance).

+

By the way, if you want to work out the radius of a tyre from those +cryptic tyre identfication codes, have a look at the The Wheel and Tyre +Bible (http://www.carbibles.com +). It even provides a handy little calculator.  For example, this +tells us the P275/40ZR-18 rear tyres of a Corvette have an unloaded +radius of 34 cm.

+

Here's an equation to get from engine torque to drive force: the +longtitudinal force that the two rear wheels exert on the road surface.

+

    Fdrive = 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 is running at 2500 rpm, looking this up on the curve gives +engine torque of 448 Nm (=330 ft lbs)
+Gear ratio (first gear): 2.66
+Differential ratio: 3.42
+Transmission efficiency: 0.7 (guess) 
+Wheel radius: 0.34 m (=13.4 inch)
+Mass: 1500 kg (= 3300 lbs of weight) including the driver.

+

This gives us a potential drive force of (448*2.66*3.42*0.7/0.34 = ) +8391 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 and driver: (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.

+

Gear Ratios

+

The following gear ratios apply to an Corvette C5 hardtop +(Source: http://www.idavette.net/facts/c5specs/ +)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
First gear +
g1
+
+
2.66
+
Second gear +
g2
+
+
1.78
+
Third gear +
g3
+
+
1.30
+
Fourth gear +
g4
+
+
1.0
+
Fifth gear +
g5
+
+
0.74
+
Sixth (!) gear +
g6
+
+
0.50
+
Reverse +
gR
+
+
2.90
+
Differential ratio  +
xd
+
+
3.42
+
+

Max torque 475 N.m (350 lb ft) at 4400 rpm, mass = 1439 kg +(ignoring the driver for now). In first gear at max torque this gives +us a whopping 475*2.66*3.42*0.7/0.33 =  9166 N of force. This will +accelerate a mass of 1439 kg with 6.4 m/s2 (a=F/m) which +equals 0.65 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 Corvette in first gear has a multiplier of 2.66 * 3.42 += 9.1. This means each Newton meter of torque on the crankshaft results +in 9.1 Nm of torque on the rear axle. Accounting for 30% loss of energy, +this leaves 6.4 N.m. Divide this by the wheel radius to get the +force exerted by the wheels on the road (and conversely by the road +back to the wheels). Let's take a 34 cm wheel radius, that gives us 6.4 +N.m/0.34 m = 2.2 N of force 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 +have to pay back in angular velocity. You trade off strength for speed. +For each rpm of the wheel, the engine has to do 9.1 rpm. The rotational +speed of the wheel is directly related to the speed of the car (unless +we're skidding). One rpm (revolution 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.34 = 2.14 m. So when the engine is doing 4400 rpm +in first gear, that's 483 rpm of the wheels, is 8.05 rotations +per second is 17.2 m/s, about 62 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.

+
+

torque curves per gear

+
+Note that these curves assume a 100% efficient gearing. The engine's +torque curve is shown as well for reference, it's the bottom one in +black. The other curves show the torque on the rear axle for a given +rpm of the axle (!), rather than the engine. As we've already seen, the +rotation rate of the wheels can be related to car speed (disregarding +slip for the moment) if we know the wheel radius. This means 1000 rpm of +the rear axle is 36 m/s or 128 km/h car speed (80 mph). 2000 rpm +is 256 km/h (160 mph). Etcetera. +

Drive wheel acceleration

+

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

+

You could implement the function LookupTorqueCurve by using an array +of torque/rpm value pairs and doing linear interpolation between the +closest two points.

+

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

+

Or written more concisely as:

+

    Tdrive =  Tengine * xg +* xd * n
+

+

Because Fdrive = Tdrive / R, +this is the same as the equation for drive force we saw earlier.

+

Note that the gearbox increases the torque, but reduces +the rate of rotation, especially in low gears.

+

How do we get the RPM?

+

So we need the rpm to calculate the engine's max torque and +from there the engine's actual applied torque. 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 rotates faster than the drive wheels. For example, let's say +the wheel is rotating at 17 rad/s.

+

Wheel rotates at 17 rad/s.
+First gear ratio is 2.66, differential ratio is 3.42 so crankshaft is +rotating at 153 rad/s.
+That's 153*60 = 9170 rad/minute = 9170/2 pi = 1460 rpm at the +engine.

+

Because the torque curve isn't defined below a certain rpm, you may +need to make sure the rpm is at least at some minimum value. E.g.

+
if( rpm < 1000 )
rpm = 1000;
+

This is needed to get the car into motion from a standstill.  +The wheels aren't turning so the rpm calculation would provide +zero.  At zero rpm, the engine torque is either undefined or zero, +depending how your torque curve lookup is implemented. That would mean +you'd never be able to get the car moving. In real life, you'd be using +the clutch in this case, gently declutching while the car starts moving. +So wheel rotation and engine rpm are more or less decoupled in this +situation.

+

There are two ways to get the wheel rotation rate.  The first +one is the easiest, but a bit of a quick hack.  The second one +involves some more values to keep track of over time, but is more +accurate and will allow for wheel spins, etcetera.

+

The easy way is to pretend the wheel is rolling and derive the +rotation rate from the car speed and the wheel radius.

+

For example, let's say the car is moving at 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 = 17 +rad/s

+

Plug this into the previous equations to get the 1460 rpm, from +which we can look up the engine torque on the torque curve.

+

The more advanced way is to let the simulation keep track of the +rear wheel rotation rate and how it changes in time due to the torques +that act on the rear wheels. In other words, we find the rotation rate +by integrating the rotational acceleration over time.  The +rotational acceleration at any particular instant depends on the sum of +all the torques on the axle and equals the net torque divided +by the rear axles inertia (just like linear accelaration is force +divided by mass). The net torque is the drive torque we saw earlier +minus the friction torques that counteract it (braking torque if you're +braking and traction torque from the contact with the road surface).

+

Slip ratio and traction force

+

Calculating the wheel angular velocity from the car speed 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 by just dividing the car +speed by 2 pi times 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. The friction force will +therefore 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 traction or as the +longtitudinal force.  The traction depends on the amount of +slip.  The standardised way of expressing the amount of slip +is as the so-called slip ratio:

+
SR = (omega.R - Vlong) / abs(Vlong)
+
+where
+       w (pronounced: +omega) is wheel angular velocity (in rad/s)
+      Rw is wheel radius (in m)
+      vlong is car speed a.k.a. +longtitudinal velocity (in m/s)  +

+

Note: there are a number of slightly different definitions for +slip ratio in use. This particular definition also works for cars +driving in reverse.

+

Slip ratio is zero for a free rolling wheel.  For a car braking +with locked wheels the slip ratio is -1, and a car accelerating +forward has a positive slip ratio. It can even be larger than 1 of +there's a lot of slip.

+

The relationship between longtitudinal (forward) force and slip +ratio can be described by a curve such as the following:

+
slip ratio curve
+
+

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 6 % where +the longtitudinal force slightly exceeds the wheel load. The exact +curve shape may vary per tyre, per road surface, per temperature, etc. +etc.

+

That means a wheel grips best with a little bit of slip. Beyond that +optimum, the grip decreases. That's why a wheel spin, impressive as it +may seem, doesn't actually give you the best possible +acceleration.  There is so much slip that the longtitudinal force +is below its peak value. Decreasing the slip would give you more +traction and better acceleration.

+

The longtitudinal force has (as good as) a linear dependency on +load, we saw that earlier when we dicussed weight transfer.  So +instead of plotting a curve for each particular load value, we can +just create one normalized curve by dividing the force by the load.

+

To get from normalized longtitudinal force to actual longtitudinal +force, multiply by the load on the wheel.    

+
Flong = Fn, long * Fz
+where Fn, long is the normalized longtitudinal force +for a given slip ratio and Fz is the load on the tyre.
+

For a simple simulation the longtitudinal force can be approximated +by a linear function:

+
Flong = Ct * slip ratio
+

where Ct is known as the traction constant, which is the +slope of the slip ratio curve at the origin. Cap the force to a maximum +value so that the force doesn't increase after the slip ratio passes the +peak value. If you plot that in a curve, you get the following:

+
graph
+

Torque on the drive wheels

+

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 (which we called the drive torque).  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. +Take care of the direction, or you won't be able to brake when you're +reversing.

+

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.

+

diagram of torques on drive wheel

+
+

The net torque on the rear axle is the sum of following torques:

+

   total torque = drive torque + traction torques from +both wheels + 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 kg.mYou must +double that to get the total inertia of both wheels on the rear +axle and perhaps add something for the inertia of the axle itself, +the inertia of the gears and the inertia of the engine. 

+

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.

+

The Chicken and the Egg

+

Some people get confused at this point.  We need the rpm to +calculate the torque, but the rpm depends on the rear wheel rotation +rate which depends on the torque. Surely, this is a circular definition, +a chicken and egg situation?

+

This is an example of a Differential Equation: we have equations for +different variables that mutually depend on each other. But we've +already seen another example of this before: air resistance depends on +speed, yet the speed depends on air resistance because that influences +the acceleration.

+

To solve differential equations in computer programs we use the +technique of numeric integration: if we know all the values at time t, +we can work out the values at time t + delta.  In +other words, rather than trying to solve these mutually dependent +equations by going into an infinite loop, we take snapshots in time and +plug in values from the previous snapshot to work out the values of the +new snapshot.  Just use the old values from the previous iteration +to calculate the new values for the current iteration.  If the time +step is small enough, it will give you the results you need.

+

There's a lot of theory on differential equations and numeric +integration.  One of the problems is that a numeric integrator can +"blow up" if the time step isn't small enough.  Instead of +well-behaved values, they suddenly shoot to infinity because small +errors are multiplied quickly into larger and larger errors.  +Decreasing the time step can help, but costs more cpu cycles. An +alternative is to use a smarter integrator, e.g. RK4.  For more +information on this topic, see my article on numerical stability:Achieving a Stable Simulator

+

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://ruimartins.net/software/projects/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:

+ + + +Note that if the steering angle is zero, then the circle radius is +infinite, i.e. we're driving in a straight line. +

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.

+

High Speed Turning

+

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. 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. 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

+
Flateral = Ca * 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 a circular path of distance 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 for 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. +If the car is reversing, the effect of the steering is also +reversed. 

+
+

+
+

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

+

+

+

slip angle 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, such as the following: 

+

slip angle curve

+

What this diagram shows is how much lateral (sideways) force is +created for any particular value of the slip angle.  This type of +diagram is specific to a particular type of tyre, this is a fictitious +but realistic example.  The peak is at about 3 degrees.  At +that point the lateral force even slightly exceeds the 5KN load on the +tyre.

+

This diagram is similar to the slip ratio curve we saw earlier, +but don't confuse them. The slip ratio curve gives us the forward force +depending on amount of longtitudinal slip.  This curve gives us the +sideways (lateral) force depending on slip angle. 

+

The lateral force not only depends on the slip angle, but also on +the load on the tyre.  This is a plot for a load of 5000 N, i.e. +the weight exerted by about 500 kg of mass pushing down on one tyre. +Different curves apply to different loads because the weight changes the +tyre shape and therefore its properties. But the shape of the curve is +very similar apart from the scaling, so we can approximate that the +lateral force is linear with load and create a normalized lateral +force diagram by dividing the lateral force by the 5KN of load.

+
Flateral = Fn, lat * Fz
+where Fn, lat is the normalized lateral force for a +given slip angle and Fz is the load on the tyre.
+

For very small angles (below the peak) the lateral force can be +approximated by a linear function:

+
Flateral = Ca * alpha
+The constant Ca goes by the name of the cornering +stiffness. This is the slope of the diagram at slip angle 0. +

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, names after professor Pacejka who developed this +at Delft University.  That's what tyre physicists use to model tyre +behaviour. It's a set of equations with lots of "magic" +constants.  By choosing the right constants these +equations provide a very good approximation of curves found +through tyre tests.  The problem is that tyre manufactors are +very secretive about the values of these constants for actual +tyres. So on the one hand, it's a very accurate modeling technique. +On the other hand, you'll have a hard time finding good tyre data to +make any use whatsoever of that accuracy.

+

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, front
+As a point of interest, we can find the circle radius now that we know +the centripetal force using the following equation +
Fcentripetal = M v2 / radius
+The 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!

+

screen shot  of demo

+

The following information is shown on screen:

+ +
+legend +

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-

+

References

+[Beckham] Physics of Racing Series, Brian Beckham,
+http://phors.locost7.info +

[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.rqriley.com/suspensn.html

+

[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.

+

Car specifications

+

It's handy to know what sort of values to use for all these +different constants we've seen.  Preferably some real values from +some real cars. I've collected what I could for a Corvette +C5. Be warned: some of the data is still guesswork.

+

+

Units and Conversions

+The following S.I. units apply:


+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ForceN (Newton)= m.kg/s2
PowerW (Watt)= N.m/s = J/s = m2 kg / s3
TorqueN.m (Newton meter) 
Speedm/s 
Angular velocityrad/s 
Accelerationm/s2 
Masskg 
Distancem 
+Angle rad =360 degrees/ 2 pi +

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 W 
+

+

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:

+Website: http://home.planet.nl/~monstrous

+

Copyright 2000-2003 Marco Monster. All rights +reserved. This tutorial may not be copied or redistributed without +permission.

+ \ No newline at end of file diff --git a/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/MonstrousSoftware-email-address.gif b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/MonstrousSoftware-email-address.gif new file mode 100644 index 0000000..bb8200b Binary files /dev/null and b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/MonstrousSoftware-email-address.gif differ diff --git a/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/cardem08.gif b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/cardem08.gif new file mode 100644 index 0000000..13eae84 Binary files /dev/null and b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/cardem08.gif differ diff --git a/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ct_alphas.gif b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ct_alphas.gif new file mode 100644 index 0000000..1b89191 Binary files /dev/null and b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ct_alphas.gif differ diff --git a/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ct_srapprox.gif b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ct_srapprox.gif new file mode 100644 index 0000000..b890dfd Binary files /dev/null and b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ct_srapprox.gif differ diff --git a/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctangles.jpg b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctangles.jpg new file mode 100644 index 0000000..ed89521 Binary files /dev/null and b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctangles.jpg differ diff --git a/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctav.gif b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctav.gif new file mode 100644 index 0000000..48f4490 Binary files /dev/null and b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctav.gif differ diff --git a/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctbeta.gif b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctbeta.gif new file mode 100644 index 0000000..da3306f Binary files /dev/null and b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctbeta.gif differ diff --git a/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctbeta.jpg b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctbeta.jpg new file mode 100644 index 0000000..8938d7f Binary files /dev/null and b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctbeta.jpg differ diff --git a/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctdeltapic.gif b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctdeltapic.gif new file mode 100644 index 0000000..476a01d Binary files /dev/null and b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctdeltapic.gif differ diff --git a/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/cteq_av.gif b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/cteq_av.gif new file mode 100644 index 0000000..40919b8 Binary files /dev/null and b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/cteq_av.gif differ diff --git a/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/cteq_r.gif b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/cteq_r.gif new file mode 100644 index 0000000..ef5c863 Binary files /dev/null and b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/cteq_r.gif differ diff --git a/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/cteq_sr.gif b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/cteq_sr.gif new file mode 100644 index 0000000..5575e8a Binary files /dev/null and b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/cteq_sr.gif differ diff --git a/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctgraph.jpg b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctgraph.jpg new file mode 100644 index 0000000..9d9cace Binary files /dev/null and b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctgraph.jpg differ diff --git a/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctgrcrvs.gif b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctgrcrvs.gif new file mode 100644 index 0000000..b4f3b47 Binary files /dev/null and b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctgrcrvs.gif differ diff --git a/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctimage8.gif b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctimage8.gif new file mode 100644 index 0000000..5e81a4a Binary files /dev/null and b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctimage8.gif differ diff --git a/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctrho.gif b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctrho.gif new file mode 100644 index 0000000..4d288c0 Binary files /dev/null and b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctrho.gif differ diff --git a/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctsacurve.gif b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctsacurve.gif new file mode 100644 index 0000000..8026ee6 Binary files /dev/null and b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctsacurve.gif differ diff --git a/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctsrcurve.gif b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctsrcurve.gif new file mode 100644 index 0000000..b272d2b Binary files /dev/null and b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctsrcurve.gif differ diff --git a/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/cttorq.gif b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/cttorq.gif new file mode 100644 index 0000000..350e360 Binary files /dev/null and b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/cttorq.gif differ diff --git a/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/cttorqsi.gif b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/cttorqsi.gif new file mode 100644 index 0000000..61a55c1 Binary files /dev/null and b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/cttorqsi.gif differ diff --git a/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctturn.jpg b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctturn.jpg new file mode 100644 index 0000000..38158aa Binary files /dev/null and b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctturn.jpg differ diff --git a/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctwd.jpg b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctwd.jpg new file mode 100644 index 0000000..9b11ca8 Binary files /dev/null and b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/ctwd.jpg differ diff --git a/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/legend.gif b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/legend.gif new file mode 100644 index 0000000..6be4e66 Binary files /dev/null and b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/legend.gif differ diff --git a/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/omega.gif b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/omega.gif new file mode 100644 index 0000000..7e49994 Binary files /dev/null and b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/omega.gif differ diff --git a/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/tc_torques.png b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/tc_torques.png new file mode 100644 index 0000000..2891b7a Binary files /dev/null and b/Resources/carPhysicsPage/www.asawicki.info/Mirror/Car Physics for Games/Car Physics for Games_files/tc_torques.png differ diff --git a/Resources/carPhysicsPage/www.asawicki.info/robots.txt b/Resources/carPhysicsPage/www.asawicki.info/robots.txt new file mode 100644 index 0000000..6ecd835 --- /dev/null +++ b/Resources/carPhysicsPage/www.asawicki.info/robots.txt @@ -0,0 +1,3 @@ +User-agent: * +Disallow: /prv +Disallow: /top_secret -- cgit v1.2.3