MacCready Speed-to-Fly: Glider & Paraglider Polar Calculator
Find training speed-to-fly and average cross-country speed from a three-point polar. Animate the MacCready tangent for gliders and paragliders.
This MacCready speed to fly calculator explores the tradeoff between gliding quickly and spending time climbing back to the starting altitude. It is a training tool for soaring students, instructors, engineers and curious pilots studying glider or paraglider performance.
Choose an example polar, then enter the expected net thermal climb. This is the altitude gained divided by the total time spent climbing, including centering, rather than the strongest instantaneous variometer reading. The calculator reports speed-to-fly, sink rate, glide ratio and the ideal average cross-country speed over a complete glide-and-climb cycle.
The blue curve in the drawing is the aircraft's vertical speed in still air: descent appears below zero. The orange line starts at the positive climb rate on the vertical axis and touches the polar at the selected cruise speed. Its green intersection with the horizontal axis is the average cycle speed. Press ▶ beside the climb input to watch the contact point move as the expected climb changes. Once an endpoint limits the speed, the drawing identifies the line as speed limited rather than a true tangent.
For a glider polar calculator example, the ASW-27 data come from XCSoar 7.46 at a reference mass of 365 kg. XCSoar attributes that row to Idaflieg measurements from 1997 and 2018. The paraglider speed to fly example is XCSoar's generic EN B row at 100 kg. It describes a teaching profile, not the certified performance of every EN B wing. Both are reference-density calculations: the supplied speeds are used as TAS at XCSoar density ratio 1, where IAS and TAS coincide in the model. Neither example receives an automatic correction for weight, ballast, altitude or harness drag.
Enable Use my three polar points to enter your own data. Enter increasing true airspeeds (TAS) and positive downward sink magnitudes, paired at the same density, weight and configuration. Indicated airspeeds at altitude are unsuitable without an external correction of both speed and sink. A quadratic passes through the three points. It must bend upward, retain positive sink and keep sink/TAS no greater than 0.20 throughout the interval. This limits the geometric error from treating TAS as horizontal speed to about 2.1%; it is a training-model limit. The first and third speeds bound the model; use endpoints that describe the speed range you intend to study.
The charts show why the fastest cruise is not necessarily the fastest journey, and how a stronger expected climb moves the optimum toward higher speed. At MacCready zero, speed-to-fly becomes best glide within the fitted interval. The displayed zero average speed is the mathematical limit as usable climb disappears.
Training only. This model assumes still air between thermals, reliable constant net climb, and a return to the initial altitude. It omits wind, local lift and sink, thermal search, uncertainty, terrain, turbulence and operational speed margins. It is unsuitable for navigation, final-glide clearance or an in-flight speed command. Aircraft limitations and flight instruction remain essential.
How it is calculated
The calculation is derived here from cycle time using the classical MacCready construction (MacCready, 1958; Cochrane's teaching examples). Sink is positive downward; the drawing plots .
Use true airspeed (TAS), with sink rates for the same density, weight and configuration. Convert all polar speeds to m/s. Fit exactly through the three supplied points using divided differences. Named steps show the slopes and coefficients. The fit is accepted only if its curvature and minimum sink within the fitted interval are positive. It must also satisfy everywhere. For convex , is convex, so endpoint bounds imply the same bound throughout the interval. Thus gives the exact maximum sink/TAS; the two endpoints suffice for both physical and small-angle validation.
The exact horizontal airspeed is . This classical construction approximates by TAS . The chosen limit corresponds to a glide angle at most 11.54° and a geometric overestimate at most 2.0621% at any fixed cruise speed. The cutoff is this tool's stated approximation limit, not an aircraft limit.
For a glide distance , , altitude lost is , and restoring that altitude at net climb takes . Therefore
For an interior optimum, differentiating gives
Clamp this speed to the first and third polar speeds. A nonpositive radicand selects the lower endpoint. At an interior solution, the line from to is tangent; its zero-height intercept is . At an endpoint it is a glide-and-climb secant. Best glide follows the same construction with .
Example data are reference-density calculations at XCSoar density ratio 1, where IAS and TAS coincide in this idealization; they are not altitude-corrected. Data: attached XCSoar snapshot s3, p. 1 (ASW-27) and p. 4 (generic paraglider); signs are reversed from the source's negative sink convention. Cochrane, Safety Glides, attached s2 p. 1, supplies independent rounded ASW-27 speed and cycle-speed comparisons using a different, flight-manual polar.
Assumptions
- Straight, steady flight in still air between thermals. Polar speeds are true airspeeds. Horizontal speed is approximated by TAS only while sink/TAS is no greater than 0.20 throughout the fitted interval.
- The entered climb is the achieved net average climb of the aircraft. Do not subtract circling sink again.
- Glide and climb return to equal altitude; climb has no horizontal displacement. Thermal search and transitions have no additional time penalty.
- Custom points must pair TAS with sink rates measured or corrected to the same density, weight and configuration. Consistent indicated airspeeds at altitude are unsuitable; this tool does not convert IAS to TAS.
- Presets use the XCSoar reference polar at density ratio 1 (standard reference density), where IAS and TAS coincide in this model. Their results apply at that reference density and mass; no altitude, mass, ballast or bugs correction is applied.
- Example endpoints delimit available polar data, not aircraft operating limits. The generic paraglider profile is illustrative.
- Equations are derived here; the supplied data and external comparisons are separately sourced. Plot axes remain explicitly labelled in metric units; input and result units can be switched in the viewer.
Where it applies
Training only. Do not use these results for navigation, terrain clearance, final glides or in-flight speed commands. Respect the aircraft or wing flight manual and instructor guidance.
Only the interval between the first and third speeds is fitted; there is no extrapolation. A boundary warning means the unrestricted optimum is outside that interval. A line at the boundary need not be tangent. Convexity and positive-sink checks reject unsuitable custom fits. Sink reaching or exceeding TAS is physically invalid. The stricter small-angle limit rejects every fit with sink/TAS above 0.20 anywhere in the interval; both checks apply to the whole curve through its endpoint bounds. Correct the first or third speed/sink pair, checking units and matching density, when these errors appear. Passing the checks does not validate measured data or certify an aircraft.
At zero expected climb, average cycle speed is shown as its zero limit; a finite repeating altitude-neutral cycle is impossible. Best-glide speed is still meaningful for the stated idealization.
The displayed cycle speeds and glide ratios use TAS in place of horizontal speed. Their geometric overestimate at a fixed cruise speed is at most 2.0621% within the enforced range; the quadratic fit and operational assumptions introduce additional uncertainty. IAS data at altitude require an external density correction of both the speed and the polar sink rates before use.
Wind, lift and sink between thermals, gust response, safety margins, thermal availability and uncertainty are outside the model. Idaflieg notes that measurements made with different procedures are not directly interchangeable. Its reports have separate publication conditions; no report figure or table is reproduced here.
The ASW-27 comparisons allow 2–3% for different polar provenance and table rounding. This is a model comparison, not an exact reproduction of Cochrane's flight-manual fit.
References
- P. B. MacCready Jr., Optimum airspeed selector, Soaring, January–February 1958, pp. 10–11. Issue index: https://soaringweb.org/Soaring_Index/1958/1958_header.html
- J. H. Cochrane, Safety Glides, metric draft, 27 August 2012, Table 1 pp. 1–2: https://www.johnhcochrane.com/s/safety_glides_metric.pdf
- XCSoar v7.46, PolarStore.cpp and PolarStore.hpp, polar data and unit conventions (accessed 28 October 2026): https://github.com/XCSoar/XCSoar/blob/v7.46/src/Polar/PolarStore.cpp ; https://github.com/XCSoar/XCSoar/blob/v7.46/src/Polar/PolarStore.hpp
- Idaflieg, Vermessene Flugzeuge, provenance and measurement caveats: https://idaflieg.de/?page_id=1552
- XCSoar v7.46, GlidePolar.cpp SinkRate and GlidePolar.hpp density_ratio: separate TAS, IAS and density scaling; presets here use density ratio 1. https://github.com/XCSoar/XCSoar/blob/v7.46/src/Engine/GlideSolvers/GlidePolar.cpp#L165 ; https://github.com/XCSoar/XCSoar/blob/v7.46/src/Engine/GlideSolvers/GlidePolar.hpp
Inputs
| Input | Symbol | Unit | Default |
|---|---|---|---|
| Use my three polar points Enter true airspeeds and sink rates at the same density, weight and configuration. The first and third speeds bound the fitted interval. | use_custom | false | |
| Example polar Reference-density examples, with no altitude correction: ASW-27 from XCSoar, attributed to Idaflieg; a generic XCSoar paraglider profile. | polar | ASW-27 · 365 kg | |
| Expected net thermal climb (MacCready) Altitude gained per total climb time, including centering. ▶ varies this setting to move the tangent. Zero gives best glide and zero limiting cycle speed. | MC | m/s | 2 |
| Point 1 · lower true airspeed Enter true airspeed (TAS), not indicated airspeed. Pair it with still-air sink measured or corrected to the same density. No density conversion or extrapolation is applied. | V_1 | km/h | 88.8335 |
| Point 1 · sink magnitude Positive downward sink in still air, at the same density, weight and configuration as the paired true airspeed. | S_1 | m/s | 0.5939 |
| Point 2 · middle true airspeed Enter true airspeed (TAS), not indicated airspeed. Pair it with still-air sink measured or corrected to the same density. No density conversion or extrapolation is applied. | V_2 | km/h | 130 |
| Point 2 · sink magnitude Positive downward sink in still air, at the same density, weight and configuration as the paired true airspeed. | S_2 | m/s | 0.8511 |
| Point 3 · upper true airspeed Enter true airspeed (TAS), not indicated airspeed. Pair it with still-air sink measured or corrected to the same density. No density conversion or extrapolation is applied. | V_3 | km/h | 170 |
| Point 3 · sink magnitude Positive downward sink in still air, at the same density, weight and configuration as the paired true airspeed. | S_3 | m/s | 1.6104 |
Results
With the default inputs above, the calc gives:
| Result | Value |
|---|---|
| Speed-to-fly | 156.7 km/h |
| Average cross-country speed | 94.906 km/h |
| Sink at speed-to-fly | 1.3 m/s |
| Glide ratio at speed-to-fly | 33.4 |
| Best-glide speed | 108.6 km/h |
| Best still-air glide ratio | 46.3 |
Checked against sources
Each case below was calculated by this calc and agrees with the value from its source (within the tolerance where one is shown).
ASW-27, 1 m/s climb · independent rounded comparison
Source: Cochrane, Safety Glides (2012), Table 1, attached s2 p. 1: dry ASW-27, MC=1 m/s, speed 135 km/h, average 71 km/h. His flight-manual polar differs from the XCSoar Idaflieg-attributed fit used here. 2% comparison tolerance covers provenance and integer rounding; no coefficients are adjusted to match.
Inputs: Expected net thermal climb (MacCready) = 1 m/s; the others as above.
| Result | Source | This calc |
|---|---|---|
| Speed-to-fly in km/h | 135 ± 2.7 km/h | 134.8 km/h |
| Cross-country speed in km/h | 71 ± 1.42 km/h | 70.366 km/h |
ASW-27, 2 m/s climb · independent rounded comparison
Source: Cochrane, Safety Glides (2012), Table 1, attached s2 p. 1. Dry ASW-27, MC=2 m/s: speed 160 km/h and average 96 km/h. Calculation gives 156.66 and 94.91 using a different, Idaflieg-attributed XCSoar fit. Allow 3% speed and 2% average speed for polar provenance and table rounding. Keep the measured-data coefficients unchanged.
Inputs: the default inputs above.
| Result | Source | This calc |
|---|---|---|
| Speed-to-fly in km/h | 160 ± 4.8 km/h | 156.7 km/h |
| Cross-country speed in km/h | 96 ± 1.92 km/h | 94.906 km/h |
ASW-27 · reproduce the three source sink values
Source: XCSoar v7.46 PolarStore.cpp, ASW-27 at 365 kg, attached s3 p. 1. Independent published polar ordinates, checked after reversing the negative source sink sign. This checks data transfer and interpolation, not MacCready optimization.
Inputs: the default inputs above.
| Result | Source | This calc |
|---|---|---|
| Fitted sink at published point 1 | 0.5939 m/s | 0.5939 m/s |
| Fitted sink at published point 2 | 0.8511 m/s | 0.8511 m/s |
| Fitted sink at published point 3 | 1.61 m/s | 1.61 m/s |
Generic paraglider · reproduce the three source sink values
Source: XCSoar v7.46 PolarStore.cpp, Para EN B/DHV12 at 100 kg, attached s3 p. 4. Published generic profile, checked after reversing the negative sink sign. Checks data transfer and interpolation, not specific wing performance.
Inputs: Example polar = Generic paraglider EN B · 100 kg; the others as above.
| Result | Source | This calc |
|---|---|---|
| Fitted sink at published point 1 | 1.1 m/s | 1.1 m/s |
| Fitted sink at published point 2 | 1.2 m/s | 1.2 m/s |
| Fitted sink at published point 3 | 2.3 m/s | 2.3 m/s |







Responses