Wave Optics

Huygens' Principle

Every point on a wavefront radiates a wavelet — the envelope of all wavelets is the next wavefront

Huygens' principle treats every point on a wavefront as a source of secondary spherical wavelets; the new wavefront is their forward envelope. A pre-Maxwell construction (1678) that still derives reflection, refraction, and diffraction.

  • StatedChristiaan Huygens, Traité de la Lumière, 1678
  • ConstructionNew wavefront = envelope of secondary wavelets after Δt
  • Quantitative formHuygens-Fresnel: sum phasors with 1/r and obliquity
  • DerivesReflection, Snell's law, diffraction at apertures
  • Refraction speed ratiosin θ₁ / sin θ₂ = v₁ / v₂ = n₂ / n₁
  • Modern useScalar diffraction integrals, FDTD, antenna pattern prediction

Interactive visualization

Press play, or step through manually. The visualization is yours to drive — try it before reading on.

Open visualization fullscreen ↗

Watch the 60-second explainer

A condensed visual walkthrough — narrated, captioned, under a minute.

The construction in one paragraph

Take any wavefront at time t — a surface where the wave has the same phase. Pick a fine grid of points on it. From each point, draw a spherical wavelet of radius v·Δt (where v is the wave speed). The forward-tangent surface to all those wavelets is the new wavefront at time t + Δt. Repeat. That's the whole rule.

Huygens published this in Traité de la Lumière in 1678, about 200 years before Maxwell wrote down the equations that justify it. He used it to derive both the law of reflection and Snell's law of refraction with nothing but a ruler and compass.

Worked example — deriving Snell's law

A planar wavefront in medium 1 (speed v₁) hits a boundary at angle θ₁ from the normal. Consider two points on the wavefront, A and B. A reaches the interface at time 0; B reaches it Δt = (AB · sin θ₁) / v₁ later.

From A, fire a wavelet into medium 2 (speed v₂). In the time Δt before B arrives, this wavelet expands to radius v₂·Δt. Meanwhile, B's wavelet has just been born — radius 0. The new wavefront on the medium-2 side is the line tangent to A's wavelet that passes through B.

AB · sin θ₁ = v₁ · Δt
AB · sin θ₂ = v₂ · Δt
⇒  sin θ₁ / sin θ₂ = v₁ / v₂ = n₂ / n₁  (Snell)

Two right triangles sharing the hypotenuse AB. No calculus, no Maxwell — just the speed-ratio interpretation of n.

Huygens-Fresnel — making it quantitative

Pure Huygens predicts the right wavefront shape but says nothing about intensity. It also predicts a backward-traveling wave that isn't seen. Fresnel (1815) fixed both: treat each secondary wavelet as a complex amplitude with phase k·r and a 1/r falloff, plus an obliquity factor K(χ) = (1 + cos χ)/2 that goes to 1 forward and 0 backward.

U(P) = (1/iλ) ∬ U(Q) · K(χ) · exp(ikr) / r  dS_Q

(Huygens-Fresnel integral; sum over wavefront points Q, with r = |P − Q|)

This integral reproduces Fraunhofer single-slit sinc² fringes, the Airy pattern of a circular aperture, and Fresnel zone plates. Kirchhoff (1882) showed it follows rigorously from the scalar wave equation with a particular boundary condition.

Pure Huygens vs Huygens-Fresnel vs Kirchhoff

FormYearPredictsLimitation
Pure Huygens (geometric envelope)1678Wavefront shape; reflection; refractionNo intensity; spurious backward wave
Huygens-Fresnel (phasor sum + obliquity)1815Diffraction patterns; intensities; phaseHeuristic — obliquity factor justified ad hoc
Kirchhoff integral1882Same as Huygens-Fresnel, derived from wave equationBoundary conditions inconsistent for shadows
Rayleigh-Sommerfeld1896Same predictions, consistent boundary conditionsScalar — ignores polarization
Stratton-Chu (vector)1939Full electromagnetic diffractionHeavy machinery; rarely needed below the Abbe limit
FDTD numerical1966+Anything Maxwell does, including near fieldCompute cost ∝ (volume/λ³); slow at large scales

Diffraction — the qualitative story

When a wavefront hits an aperture of width a, only the wavelets emitted from the open portion contribute to the downstream field. Beyond the aperture each of those wavelets spreads spherically, so the wave fans into the geometric shadow.

The angular width of the spread scales as θ ≈ λ/a. For visible light (λ ≈ 0.5 µm) through a 1 mm slit: θ ≈ 5 × 10⁻⁴ rad — invisible unless the screen is far away. For audible sound (λ ≈ 1 m) through a doorway (a ≈ 1 m): θ ≈ 1 rad — sound floods the next room. Same equation, different λ/a regime.

Worked numbers — when does diffraction matter?

SetupλAperture aSpread angle θ ≈ λ/a
Green laser through pinhole532 nm50 µm0.6° — clearly visible
Camera lens at f/22550 nm~2.3 mm0.014° — softens fine detail
Telescope (Hubble)550 nm2.4 m0.058 arcsec (1.22 λ/D, circular)
FM radio around a hill3 m (100 MHz)30 m hill5.7° — wraps reasonably
Acoustic doorway (500 Hz)0.68 m0.8 m doorway49° — sound floods
X-ray crystal plane0.15 nm0.3 nm spacing30° (Bragg) — sharp peaks

JavaScript — propagating a wavefront step by step

// Discrete Huygens: sample the wavefront, fire wavelets, take the envelope.
// Toy 2D version — show how a plane wave through a slit develops curvature.

function propagate(sources, target, lambda, dt = 1, c = 1) {
  // Each source emits a spherical wavelet (1/r amplitude, k·r phase).
  // Sum phasors at each target point; return |U|² (intensity).
  const k = 2 * Math.PI / lambda;
  return target.map(p => {
    let re = 0, im = 0;
    for (const s of sources) {
      const dx = p.x - s.x, dy = p.y - s.y;
      const r = Math.hypot(dx, dy);
      if (r < 1e-9) continue;
      // Obliquity factor — forward only
      const cosChi = dy / r;  // assuming downstream is +y
      const K = 0.5 * (1 + cosChi);
      const amp = K * s.A / Math.sqrt(r);  // 2D: 1/√r, not 1/r
      re += amp * Math.cos(k * r);
      im += amp * Math.sin(k * r);
    }
    return { x: p.x, y: p.y, I: re * re + im * im };
  });
}

// Plane wave at y=0 chopped by a slit from x=-a/2 to x=+a/2
function planeWaveThroughSlit(a, samplesAcrossSlit = 200) {
  const sources = [];
  for (let i = 0; i < samplesAcrossSlit; i++) {
    const x = -a/2 + a * (i + 0.5) / samplesAcrossSlit;
    sources.push({ x, y: 0, A: 1 });
  }
  return sources;
}

// Screen 1000 wavelengths downstream
function screen(L, half = 50, samples = 401) {
  const pts = [];
  for (let i = 0; i < samples; i++) {
    pts.push({ x: -half + 2 * half * i / (samples - 1), y: L });
  }
  return pts;
}

const lambda = 1;
const a = 5;        // slit 5 λ wide
const sources = planeWaveThroughSlit(a, 200);
const target = screen(200, 60, 121);
const intensity = propagate(sources, target, lambda);

// First zero predicted at x ≈ L · λ / a = 200·1/5 = 40
const minIdx = intensity.findIndex((p, i) =>
  i > 60 && intensity[i].I < intensity[i+1]?.I && intensity[i].I < intensity[i-1].I);
console.log(`First minimum at x ≈ ${intensity[minIdx]?.x.toFixed(1)} (predicted ≈ 40)`);
// Confirms the Huygens-Fresnel sum reproduces single-slit diffraction.

Where Huygens lives today

  • Scalar diffraction. Every Fresnel and Fraunhofer integral is a Huygens-Fresnel sum.
  • Antenna engineering. Aperture antennas (horn antennas, parabolic dishes) are designed by summing wavelets from the aperture plane.
  • Seismic wavefront construction. Geophysicists propagate seismic fronts through Earth by firing wavelets from each grid point — a discrete Huygens.
  • FDTD numerics. Yee-cell updates in finite-difference time-domain electromagnetics are a discretized Huygens: each cell radiates into its neighbors each timestep.
  • Beam propagation methods. Photonic waveguide simulation propagates the field plane by plane via angular-spectrum Huygens-Fresnel.
  • Pedagogy. Teaching reflection, refraction, and diffraction before students see calculus — still the cleanest visual.

Common mistakes

  • Treating the wavelets as real emitters. They're a calculation device — there are no physical Huygens sources sitting on a wavefront. The construction works because the wave equation is linear.
  • Forgetting the obliquity factor. Without (1 + cos χ)/2, you predict a backward wave that doesn't exist. Pure Huygens needs Fresnel's amendment to be physical.
  • Using Huygens-Fresnel inside one wavelength of an edge. Near-field diffraction (Sommerfeld 1896) needs careful boundary conditions; the simple scalar form gets shadow edges slightly wrong.
  • Confusing 2D and 3D amplitude falloff. 3D spherical wavelets fall as 1/r; 2D cylindrical wavelets fall as 1/√r. Wrong dimension → wrong intensity.
  • Applying it to non-linear media. Huygens needs superposition. In nonlinear optics (Kerr media, harmonic generation), wavelets don't simply add — the construction fails.
  • Ignoring polarization. Scalar Huygens-Fresnel can't predict polarization-dependent diffraction (Brewster, near-field effects). For that you need a vector formulation (Stratton-Chu).

Frequently asked questions

What exactly does Huygens' principle say?

Every point on a wavefront is itself a source of a secondary spherical wavelet that expands at the wave speed. After a time Δt, the new wavefront is the envelope (forward-tangent surface) of all these wavelets. Repeat the construction step by step to propagate any wavefront forward. The rule is purely geometrical — no differential equation, no phase, just the envelope of expanding spheres.

How does it derive Snell's law of refraction?

When a planar wavefront hits a boundary obliquely, the part already in the denser medium fires wavelets that expand more slowly (speed v₂ = c/n₂). Build the envelope: the new wavefront tilts to a smaller angle on the denser side. Geometry gives sin θ₁ / sin θ₂ = v₁/v₂ = n₂/n₁ — Snell's law. Huygens published this construction in 1678, decades before anyone wrote a wave equation.

What's the difference between Huygens and Huygens-Fresnel?

Pure Huygens just takes the envelope — it predicts the right wavefront geometry but says nothing about intensity, and the construction also admits a backward-traveling wave that isn't observed. Fresnel (1815) added phase and amplitude: sum the secondary wavelets as complex phasors with a 1/r amplitude and a 90° tilted obliquity factor. The Huygens-Fresnel principle gives quantitative diffraction patterns (single slit, Airy disc, Fresnel zones). Kirchhoff (1882) derived it rigorously from the scalar wave equation.

How does it explain diffraction at a slit?

When a wavefront hits an aperture of width a, only the wavelets from the open part contribute to the forward field. Beyond the aperture, those secondary wavelets spread spherically — so the wave bends into the geometric shadow. The envelope is no longer planar; it curves around the edges. For a/λ ≈ 1 the spread is dramatic (acoustic diffraction around buildings), while for a/λ >> 1 it's a tiny correction (sharp shadows from sunlight).

Is the construction physically real or just a calculation trick?

It's a calculation principle — the secondary sources aren't physical emitters; they're a mathematical device. But the construction matches Maxwell's equations: in 3D you can prove (Kirchhoff integral theorem) that the field at any point downstream is exactly an integral of the field on an earlier wavefront, weighted with a 1/r·exp(ikr) kernel. The intuition is real even though the wavelets aren't.

Why doesn't the backward wave appear?

Pure Huygens predicts a backward-traveling wavefront in addition to the forward one — clearly wrong. Fresnel's obliquity factor (1 + cos χ)/2 suppresses it: it's 1 in the forward direction and 0 in the backward direction. The factor falls out naturally from Kirchhoff's integral. So the spurious backward wave is a defect of the original geometric construction, fixed by including phase and angle dependence.

Where is Huygens' principle used in modern physics?

Every scalar diffraction calculation (Fresnel and Fraunhofer integrals) is a Huygens-Fresnel sum. Radar and antenna engineers use it to predict beam patterns. Seismologists propagate seismic wavefronts through Earth via "wavefront construction" methods that are direct Huygens applications. In numerical optics (FDTD, beam-propagation method) each cell radiates wavelets — the FDTD update equations are a discretized Huygens. The principle outlived its 17th-century origin because it's still the cleanest way to think about wave propagation.