SAGITTA

fit methodology — how the numbers are made MEASURING GUIDE ← BACK TO THE INSTRUMENT

Sagitta treats bike fit as a sagittal-plane geometry problem: your body becomes a 2D linkage of measured segments, your bike becomes a set of points computed from its geometry chart, and the fit questions become angle and distance checks between the two. Every number below is the number the app actually computes — nothing here is aspirational documentation.

Measurement conventions

Every input uses exactly one convention, stated in the UI. All lengths in millimetres, angles in degrees.

MeasurementConvention
Saddle heightStraight line, centre of bottom bracket → the point you sit on (≈ along the seat tube)
Saddle setbackHorizontal distance, sit point behind the BB (positive = behind)
Seat tube angleEffective STA from the manufacturer's chart, degrees from horizontal
Bar dropSit point height − bar clamp top height
TT padsPad centre X (forward) and Y (up) measured from the BB
Stem angleRelative to a right angle off the steerer — a −17° stem on a 73° head tube is horizontal
Crank angle0° = top dead centre, 90° = forward, 180° = bottom
InseamBarefoot crotch height, book pressed firmly up

The rider model

Your skeleton is estimated from height and inseam using the Drillis & Contini body-segment fractions, with the leg corrected by your measured inseam (inseam is crotch height, so femur and tibia are scaled by inseam ÷ 0.472 × height). Every segment can be overridden with a tape-measured value.

SegmentEstimate
Femur0.245 × height × k
Tibia0.246 × height × k
Torso (hip → shoulder)0.288 × height
Upper arm0.186 × height
Forearm (incl. grip)0.146 × height

The skeleton is posed on the bike with two-bone inverse kinematics: hip fixed above the sit point, foot on the pedal through an ankling model (foot pitch varies through the pedal stroke), arms closed onto the hoods, drops, or TT pads. The posture constants (hip-joint offset from the sit point, ankle geometry) are calibrated so that the classic LeMond saddle height lands a typical rider inside the accepted knee-extension window — the model is pinned to the formulas it coexists with, and a test suite keeps it there.

Saddle height

The primary method is the knee-extension angle (the Holmes method): at the point of maximum leg extension in the stroke, the angle across the knee should sit in 138–148°, ideal 143°. Sagitta solves this properly — it searches saddle heights until the posed skeleton's maximum knee extension (found numerically across the whole pedal stroke, not just at 180°) hits the target. Because the solve uses your femur:tibia proportions and your crank length, it individualises where formulas can't.

Two classic formulas are shown as reference lines beside the recommendation:

If the knee-angle solve lands more than 15 mm outside the LeMond–Hamley envelope, the app flags it — that usually means a mis-measured inseam or unusual proportions worth entering as segment overrides.

Measurement outranks all of this. Anthropometric estimates can't see your femur:tibia split, soft tissue, cleat stack or pedalling style — a measured knee angle from a BDC photo can. When one exists for the active rider+bike, it appears in the Targets card and its verdict supersedes the estimate. The formulas and the solve are for the blank-page moment and for comparing bikes; the photo is the truth.

Crank length is treated as your choice, reflected in every solve — the app never prescribes it. Worth knowing: one current school of fitting (Road Cycling Academy / Neill Stanbury) argues cranks should be sized from saddle height rather than inseam, and that shorter cranks — which open the hip at the top of the stroke — are rarely a mistake. If you're between lengths, shorter is the safer experiment.

Saddle fore-aft

Road — KOPS

With the crank forward at 3 o'clock, a plumb line from the front of the knee should fall within ±20 mm of the pedal spindle (knee over pedal spindle). Sagitta solves the setback that centres this.

KOPS is a convention, not physics — there is no biomechanical force argument behind it, but it reliably lands riders in a balanced position on conventional road geometry and is the standard starting point. Treat it as a reference to deviate from deliberately (comfort, power, flexibility), not a law.

TT — effective seat angle

KOPS is deliberately not applied in TT mode: riding forward of the spindle is the point. Instead the saddle is placed for an effective seat angle of 76–80° (Sagitta recommends at 78°). Rotating the whole rider forward around the BB preserves the leg's relationship to the pedals while opening the hip angle — which is what makes a low aero back sustainable.

Road cockpit — hoods and drops

Upper-body targets are posture windows, bucketed by your flexibility (limited / average / flexible). The windows are referenced to riding on the hoods — the position you should be able to hold all day:

MetricLimitedAverageFlexible
Back angle (vs horizontal)45–52°40–47°33–42°
Bar drop (sit point → bar top)0–40 mm40–80 mm80–120 mm
Shoulder angle (torso–humerus)80–95°
Elbow angle150–165° (target 160° — soft elbows, not locked)

Hand position shifts the window. Set TOPS / HOODS / DROPS (in the 3D view's HUD, or per photo in the photo view) and the back-angle window moves with your hands: the drops judge ≈9° lower than the hoods, the tops ≈6° higher. A drops reading is therefore compared against a drops window rather than falsely flagging LOW. Shoulder and elbow angles are only judged on the hoods — the hoods are the reference position their windows are defined for; on the tops or in the drops the arm geometry is naturally different, so those rows show the measured value without a verdict. Saddle→bar drop is a hardware measurement independent of hand position and stays judged everywhere. The recommendation engine still fits you to the hoods — the drops are a short-duration attack/descent position, not a fit target. If you can't comfortably reach the drops at all, the cockpit is too long or too low, and the hoods-based deltas will already be pointing the right way.

The recommended hand point is constructed posture-first: torso at the middle of your back-angle window, torso–humerus angle at the middle of its window, elbow at its target. If the implied bar drop leaves your flexibility window, the back angle absorbs the difference within its own window — which in practice lands the recommended drop at the conservative edge of your window (posture leads, drop follows; take more drop deliberately, not by default). A property-test sweep pins this closure: posed at the recommended setup, every angle must sit inside its own window across the whole rider×bike space. The delta engine chases the target through real discrete hardware: stems 60–130 mm in 10 mm steps, spacer stacks 0–40 mm, stem flips — re-running the full frame geometry for each candidate rather than approximating.

TT / aero position

Aero fit is governed by different windows — and one hard constraint:

MetricWindowWhy
Hip angle (closed), at top of stroke≥ 45° (warn < 50°)The governing constraint — close the hip further and power and comfort collapse
Back angle15–30°Aero payoff; the floor is what your hip angle and flexibility allow
Shoulder angle (torso–humerus)85–100°Shoulders stacked over elbows carry weight skeletally, not muscularly
Elbow angle90–110°Forearm flat on the pad, ~right-angle arm
Effective seat angle76–80°Forward rotation preserves the hip angle at a low back angle

The pad target is built torso-first: back angle biased toward the aero end of the window, upper arm dropping from the shoulder to the elbow pad. Chasing more back-angle drop without moving the saddle forward just closes the hip — which is why the saddle recommendation moves with the mode toggle.

Elite positions (very flat backs, stretched shoulders) will flag outside these windows — correctly. The windows are sustainable-fit conventions for training and racing long, not the limit of what a professional with a fitter, a wind tunnel, and years of adaptation can hold for a 20 km TT.

Photo analysis

Photos measure the same angles, with the same definitions, from marked joints instead of a modelled skeleton — which is what makes photo↔model comparison meaningful. Method notes:

Presets

The bike presets are manufacturer-published geometry from current (2025/26) charts — road: Cannondale, Trek, Pinarello, BMC, Factor, Wilier, Orro; TT: Trek Speed Concept, Cervélo P-Series, Canyon Speedmax, BMC Timemachine. The handful of values a maker doesn't publish are estimated and flagged in the app. TT presets set the pads at the middle of each maker's published adjustment range — all four measure pad X/Y from the BB centre, the same convention Sagitta uses.

The rider presets are population-grounded: heights are DIN 33402-2 adult 5th/50th/95th percentiles, and inseams come from crotch-height regressions on the ANSUR anthropometric surveys — taller adults are proportionally longer-legged, so each preset gets its own ratio rather than a flat one. Every preset, bike and rider, must pass the same self-consistency tests as the engine itself. They're starting points — measure yourself, check your model-year chart.

What this is not

Sagitta is a drafting instrument, not a fitter. There are no magic angles: the windows above are population conventions that bracket sensible starting points, not physiological truths — which is exactly why the app is built measurement-first (photo angles over anthropometric estimates) and why individual factors a chart can't see — hip impingement, leg-length discrepancy, injury history, adaptation time, event duration — outrank every number here. Change one thing at a time, in small steps (saddle height in ≤5 mm moves), and let a before/after photo pair confirm what actually changed. Persistent pain is a professional-fitter problem, not a slider problem.

References