NACA Airfoil & Wing Aerodynamics — How Wings Generate Lift
NACA (National Advisory Committee for Aeronautics) developed systematic families of airfoil shapes in the 1930s–40s, turning wing design from art to engineering. The four-digit NACA series encodes thickness, camber, and camber-line position in just four numbers — yet captures the key physics that makes commercial aviation possible. Understanding aerofoil theory from potential flow through to separation and finite-wing effects reveals why swept wings, winglets, and high-lift devices look the way they do.
1. NACA 4-Digit Geometry
The four-digit NACA designation MPTT encodes: M = maximum camber (% chord), P = position of max camber (tenths of chord), TT = maximum thickness (% chord).
2. Lift Mechanism — Circulation and Pressure
Lift does NOT arise because air "must reunite" at the trailing edge — that is a myth. Lift arises because airfoil shape and angle-of-attack deflect air downward:
3. Thin-Airfoil Theory
4. Pressure Distribution and Cp
5. Drag Polar and Lift-to-Drag Ratio
6. Stall and Boundary Layer Separation
7. JavaScript NACA Profile Generator
// NACA 4-digit airfoil coordinate generator
function naca4(digits, nPoints = 100) {
const M = Math.floor(digits / 1000) / 100; // max camber
const P = Math.floor((digits % 1000) / 100) / 10; // camber position
const T = (digits % 100) / 100; // thickness
function thickness(xc) {
const x = xc;
return T/0.2 * (0.2969*Math.sqrt(x) - 0.1260*x
- 0.3516*x**2
+ 0.2843*x**3
- 0.1015*x**4);
}
function camberAndSlope(xc) {
if (M === 0 || P === 0) return [0, 0];
if (xc <= P) {
return [
M/(P*P) * (2*P*xc - xc*xc),
2*M/(P*P) * (P - xc)
];
} else {
return [
M/(((1-P)**2)) * (1 - 2*P + 2*P*xc - xc*xc),
2*M/(((1-P)**2)) * (P - xc)
];
}
}
// Cosine spacing for better LE/TE resolution
const upper = [], lower = [];
for (let i = 0; i <= nPoints; i++) {
const beta = (Math.PI * i) / nPoints;
const xc = (1 - Math.cos(beta)) / 2;
const yt = thickness(xc);
const [zc, dzc_dx] = camberAndSlope(xc);
const theta = Math.atan(dzc_dx);
upper.push({x: xc - yt*Math.sin(theta), y: zc + yt*Math.cos(theta)});
lower.push({x: xc + yt*Math.sin(theta), y: zc - yt*Math.cos(theta)});
}
return {upper, lower};
}
// Simple thin-airfoil lift coefficient
function liftCoeff(alphaDeg, nacaDigits) {
const alpha = alphaDeg * Math.PI / 180;
const M = Math.floor(nacaDigits / 1000) / 100;
const P = Math.floor((nacaDigits % 1000) / 100) / 10;
// Zero-lift angle (approximate for NACA 4-digit):
const alpha_L0 = -M * (1 - P) * 2; // simplified
return 2 * Math.PI * (alpha - alpha_L0);
}
// Example: NACA 2412
const profile = naca4(2412);
console.log(`NACA 2412 at α=4°: C_L = ${liftCoeff(4, 2412).toFixed(3)}`);
// → C_L ≈ 0.570
8. Finite Wing — Induced Drag and Winglets
- Tip vortices: High-pressure air beneath the wing spills around the wingtip, creating trailing vortices that induce a downwash field. This tilts the local lift vector rearward, creating induced drag.
- Elliptical distribution: An elliptical spanwise lift distribution minimises induced drag for a given span. The corresponding wing shape is elliptical (Spitfire wing). Modern wings approximate this with twist (washout) and taper ratio ≈ 0.3–0.5.
- Winglets: Vertical fins at wingtips reduce the effective span (increase AR) without increasing actual span — critical for airport gate constraints. Boeing 737 MAX Split Scimitar Winglets reduce fuel burn ~1.5% vs no winglets.
- Aspect ratio: Long slender wings (gliders AR~25, albatross AR~18) → high (L/D)_max. Short stubby wings (fighters AR~3) → high roll rate at the cost of more drag.