Methodology
How Rider Height turns a bike and a rider into a posture.
The simulator is a deterministic geometry model. It derives rider segment lengths, places the pelvis on the seat contact point, solves hands and feet to the motorcycle controls, then scores the resulting joint angles. The page below documents the current implementation so the numbers are auditable.
Rider model
Height, inseam, optional body overrides
IK targets
Seat pinch, grips, pegs, feet-down ground target
Scores
Knee, hip, elbow, torso lean, reachability
1. Inputs
The rider profile starts with height, inseam, and weight. Height supplies default segment proportions, while a measured inseam overrides the generic leg estimate. Advanced profile fields can replace the derived torso, upper-arm, forearm, and shoulder-width values.
The bike is reduced to a landmark set in millimeters: rear and front wheel contact points, axles, seat pinch, left and right grips, left and right pegs, steering head, tank top, and optional passenger landmarks. User adjustments move those contact points before the solve: seat height and fore-aft position, bar rise and pullback, peg rise and fore-aft position, arm straightness, and feet-down mode.
2. Anthropometry
Segment estimates use Drillis-Contini style stature multipliers as a practical default. Inseam gets special handling because riders often know it and because motorcycle fit is highly sensitive to leg length. Rider Height subtracts a fixed 70 mm ankle-to-floor offset, then splits the remaining inseam across thigh and shank using the thigh-to-shank ratio in the table.
The published model is intentionally transparent rather than magical. Stature multipliers are useful for first-pass ergonomic design, but they cannot predict every individual body variation. When profile overrides are available, the simulator uses those measured values instead of the ratio estimate.
| Segment | Multiplier of stature |
|---|---|
| Head height | 0.130 |
| Torso, shoulder to hip | 0.288 |
| Upper arm | 0.186 |
| Forearm | 0.146 |
| Hand | 0.108 |
| Thigh | 0.245 |
| Shank | 0.246 |
| Foot length | 0.152 |
| Shoulder breadth | 0.259 |
| Default inseam fallback | 0.467 |
3. Inverse kinematics
The pelvis root is placed at the adjusted seat-pinch landmark. From there, forward kinematics computes the current shoulder and hip origins after the neutral torso pose and arm-straightness lean are applied.
Four independent two-bone chains are then solved: left arm to left grip, right arm to right grip, left leg to left peg, and right leg to right peg. Each chain uses the law of cosines to place the middle joint and a pole vector to choose a natural bend direction: elbows bias downward and outward, while knees bias forward. If a target is beyond the limb span, the chain extends toward it and records a reachability failure for scoring.
4. Scoring
After IK, Rider Height runs forward kinematics again and measures interior joint angles from the solved bone positions. Knee, hip, and elbow scores average the left and right sides. Torso lean is measured from the hip midpoint to shoulder midpoint in the side-view plane.
The overall score is the mean of knee, hip, elbow, torso, and reachability scores. Scores at 85 or higher are labeled Comfortable, 65-84 are Usable, and anything below 65 is Compromised. When reachability is unavailable, it is reported as Not checked and the aggregate uses a neutral reachability score instead of treating missing data as a failed contact. These are product heuristics for motorcycle comparison, not medical or occupational-risk diagnoses.
| Metric | Ideal range | Zones |
|---|---|---|
| Knee angle | 75-105 deg | Cramped <=55, sport <=75, neutral <=105, open <=130, stretched >130 |
| Hip angle | 85-125 deg | Folded <=60, sport <=85, neutral <=125, open <=145, over-open >145 |
| Elbow angle | 110-170 deg | Bent <=85, tucked <=110, relaxed <=170, extended <=178, locked >178 |
| Torso lean | -5 to 25 deg | Reclined <-8, upright <5, neutral <=25, forward <=45, aggressive >45 |
| Reachability | All chains reach | Any unreachable arm or leg chain caps the overall score at 55 |
5. What is not modeled yet
- Suspension sag, loaded seat compression, and boot sole height are approximated.
- Seat width, foam shape, bar sweep, wrist angle, neck extension, and shoulder rotation are not scored yet.
- Dynamic riding posture, braking loads, wind pressure, passenger loading, and off-road standing positions are outside the current static seated solve.
- The model estimates fit from geometry. A real test ride still matters for comfort, vibration, heat, control feel, and personal mobility limits.
Sources and implementation references
Code references: packages/sim-core/src/anthropometry.ts, packages/sim-core/src/ik.ts, and packages/sim-core/src/scoring.ts.