]> Dynamic Demo
F_GFG F_GDFG,D F_GOFG,O F_S1FS,1 F_BFB F_S2FS,2 F_AFA CAUTION: The forces are not quite accurate with JavaScript disabled.




name value unit description
Total accel ? g total acceleration/deceleration parallel to road surface
Slope ? %
"Friction" ? 1 Minimum required friction coefficient to achieve given braking/accelerating force
FA ? FG accelerating force on rear wheel contact patch
FB ? FG braking force on front wheel contact patch
FG,D ? FG downhill component of gravitational force (parallel to road surface)
FG,O ? FG component of gravitational force, orthogonal to road surface
FS,1 ? FG sum of vertical forces on all front wheels' contact points from road surface
FS,2 ? FG sum of vertical forces on all rear wheels' contact points from road surface


The drawing shows a vehicle from its left side. The vehicle is moving towards the left of the screen, i.e. its front wheel is on the left and the rear wheel on the right of the drawing.

For multi track vehicles like trikes and quads (car), the projection to 2D simplifies things considerably. For an ideal tadpole trike, the center of gravity divides the wheel distance 1/3 to 2/3 to give 1/3 of the total load under constant-speed level surface circumstances.

The center of mass of vehicle+rider+baggage together (baggage is optional) is the dark blue checkerboarded dot.


We can decompose the gravitational force in a component orthogonal and parallel to the road surface:

FG,D + FG,O = FG


FG,O := FG cos α

For convenience, we can sum up brake and accel forces:

FC := FA - FB

As there is no movement (and thus no acceleration) of the center of mass in the direction orthogonal to the road, the sum of all vertical forces is 0:

0 = - FG,O + FS,1 + FS,2

As there is no rotation (and thus no angular acceleration) around the center of mass, the sum of the torques is to 0:

0 = - a1 FS,1 + h FB + a2 FS,2 - h FA

Resolving for FS,1 and FS,2 :

FS,1 = a2 FG,O - h FC a1 + a1 = ?
FS,2 = a1 FG,O + h FC a1 + a1 = ?

If any of FS,n calculates to a negative value, we have liftoff on that wheel and the torque balance equation does not apply any more.

Vehicle Parameters

  • Vehicle class: ?
  • Vehicle comment: ?
name value unit description
a1 ? cm horizontal distance between front wheel contact point to center of mass
a2 ? cm horizontal distance between rear wheel contact point to center of mass
h ? cm vertical distance from road to center of mass (height)
n1 ? 1 number of wheels on front axle
n2 ? 1 number of wheels on rear axle


Lazy Developer



  • Properly show liftoff condition without impossible negative F_Sn values
  • Verify center of mass location in the different models.
  • Explain which formula symbols are what, and show them in the illustration.
  • Add "simulation": Given a specific situation, show what the torques and accelerations would do to the vehicle during the course of the next second or so.
  • Determine computed extreme min/max values. Show them as numeric values, and possibly use them as constraints on the input value controls?
  • draw torques
  • display some measure of the "safety margin" on extreme downhill braking (or uphill acceleration :-)
  • (for tadpole trike), determine the evenness of the both front brakes required to keep the rear wheel from slipping sideways
  • drag and drop to change the forces, and vehicle dimensions
  • use better controls (mouse sliders, jQueryUI stuff?)
  • fix Chrome bug with control: 0.00 -> 0.05 -> 0.10 -> 0.15 -> 0.20 -> 0.15 -> 0.0: BOOM
  • scale drawing such that everything fits onto screen
  • explain the methodology and the equations used (MathML?)
  • Add vehicle/rider silhouette, center silhouette on drawing. Storage idea: Parametrized SVG drawing, params being: hip opening angle, hip position, upper body angle.
  • Add CSS etc. magic for MathML in non-MathML capable browsers (hello Chromium!)
  • Add legend and draw labels for: F_A acceleration force, F_B braking force, F_C combined. F_G gravitation, F_GD downhill component, F_GO orthogonal component. F_S1 surface force wheel 1, F_S2 surface force wheel2. a1 distance on ground from CG to wheel1, a2 distance on ground from CG to wheel2. h height above ground of CG. radius of wheels.
  • JS code cleanup
  • consistent naming of classes and IDs
  • add optional trailer
  • Verify liftoff detection on non-level slopes. Probably just a case of making clear that we are only showing a momentary state.
  • Make the whole thing controllable by keyboard
  • Add different perspectives: From the rear, from above.
  • When from-above perspective works, make differential braking possible (different forces on left and right wheel(s).
  • Compare two (or more) vehicles with the same input parameters
  • Move as many SVG element styles to <defs/> element as possible.
  • Magic!


  • Add note about F_S1 and F_S2 being about the sum of all wheels on that axis
  • have numeric controls generated by JS code
  • make ground/sky look nicer
  • Decompose F_G on slopes
  • make decelerating and accelerating forces settable
  • properly solve force and torque equations
  • add slope to ground
  • change vehicle dimensions on the fly (upright, SWB, LWB, low racer, tadpole trike, delta trike, car)
  • change wheel dimensions when changing vehicle
  • move drawing such that the center between the wheels is at the center of the drawing
  • Fix Entity 'RightArrow' not defined in Chromium
  • use camelCase for JS var/fun names
  • change dimensions in drawing to use properly useful units
  • Traction King™ (baggage) support
  • Add elongations of force vectors in drawings
  • Add "++" and "--" buttons to numeric controls
  • Add abort mechanism for intro animation
  • Set font-size in SVG to work in both Firefox and Chrome/Webkit

This interactive page can only work with JavaScript enabled.

We are awfully sorry for the inconvenience, but there just is no other way.

Please enable JavaScript.

If you can read this, the EcmaScript init has not run (yet)!