Article
Optics & Light · ⏱ ~18 min read

Maxwell's Equations & Light

Four compact equations unify electricity, magnetism and light. Starting from Gauss, Faraday and Ampère–Maxwell, we derive the electromagnetic wave equation, explore plane-wave polarisation, understand dispersion through the Sellmeier formula, and compute Fresnel reflection and transmission coefficients.

1. Maxwell's Four Equations

In differential form (SI units), Maxwell's equations are:

∇·E = ρ/ε₀ (Gauss – electric) ∇·B = 0 (Gauss – magnetic: no monopoles) ∇×E = −∂B/∂t (Faraday induction) ∇×B = μ₀J + μ₀ε₀ ∂E/∂t (Ampère–Maxwell)

The genius of Maxwell's 1865 addition, the displacement current term μ₀ε₀ ∂E/∂t, was to make Ampère's law self-consistent and — as a direct consequence — predict that changing electric fields produce magnetic fields without any physical current. This single stroke predicted electromagnetic waves.

Gauss (electric)

Electric field lines originate on positive charges and terminate on negative charges. Flux through a closed surface equals enclosed charge / ε₀.

Gauss (magnetic)

Magnetic field lines form closed loops — there are no magnetic monopoles. Net flux through any closed surface is zero.

Faraday

A time-varying magnetic field induces a circulating electric field. The rate of change of flux drives the EMF around a loop.

Ampère–Maxwell

A current or changing electric flux produces a circulating magnetic field. Displacement current closes the loop and predicts radiation.

In vacuum (ρ = 0, J = 0), the equations simplify beautifully — each field is driven exclusively by the time variation of the other.

2. Deriving the Wave Equation

Taking the curl of Faraday's law and substituting Ampère–Maxwell:

∇×(∇×E) = −∂(∇×B)/∂t = −μ₀ε₀ ∂²E/∂t² Using ∇×(∇×E) = ∇(∇·E) − ∇²E and ∇·E = 0 in vacuum: ∇²E = μ₀ε₀ ∂²E/∂t²

This is the classical wave equation with propagation speed:

c = 1/√(μ₀ε₀) ≈ 2.998 × 10⁸ m/s

Maxwell immediately recognised this as the speed of light, providing the first theoretical proof that light is an electromagnetic wave. An analogous equation holds for B. Both fields satisfy identical wave equations, and their solutions are intrinsically linked through Faraday's and Ampère's laws.

Historical note: Maxwell published his equations in 1865, but Heinrich Hertz only demonstrated radio waves experimentally in 1887 — nine years after Maxwell's death.

3. Plane Waves & the Poynting Vector

The simplest solution — a monochromatic plane wave travelling in the z-direction:

E(z,t) = E₀ x̂ cos(kz − ωt) B(z,t) = (E₀/c) ŷ cos(kz − ωt) where k = ω/c = 2π/λ (wavenumber)

Key observations:

The electromagnetic energy flux (power per unit area) is given by the Poynting vector:

S = (1/μ₀) E × B [W/m²] Time-averaged intensity: ⟨S⟩ = c ε₀ E₀²/2

Radiation pressure on a perfect absorber is ⟨S⟩/c — the basis of solar sails and laser trapping of particles.

4. Polarisation States

Polarisation describes the orientation of the electric field vector:

Linear

E oscillates in a fixed plane. A polarising filter transmits only one component; intensity follows Malus's law: I = I₀ cos²θ.

Circular

E rotates at frequency ω with constant magnitude. Requires two orthogonal components 90° out of phase: E = E₀(x̂ cosωt ± ŷ sinωt).

Elliptical

The general case: E traces an ellipse. Described by the Jones vector [Eₓ, Eᵧ]ᵀ or Stokes parameters (S₀, S₁, S₂, S₃).

Unpolarised

Thermal sources emit a random superposition of all polarisation states; the Stokes parameter S₁ = S₂ = S₃ = 0, only S₀ ≠ 0.

Jones matrices allow optical elements (wave plates, mirrors, beam splitters) to be modelled as 2×2 complex matrix multiplications on the Jones vector, enabling concise analysis of complex polarisation optics.

5. Dispersion & the Sellmeier Equation

In a dielectric medium, free electrons of the material respond to the driving electric field. The refractive index n(λ) varies with wavelength — this is dispersion. The Sellmeier equation fits measured data with high accuracy:

n²(λ) = 1 + Σᵢ Bᵢ λ² / (λ² − Cᵢ) For BK7 glass (visible range): B₁ = 1.03961, C₁ = 0.00600 μm² B₂ = 0.23179, C₂ = 0.02001 μm² B₃ = 1.01047, C₃ = 103.56 μm²

Important derived quantities:

Normal dispersion (dn/dλ < 0) makes blue light travel slower than red — responsible for prismatic rainbows. Anomalous dispersion near absorption resonances reverses this.

6. Fresnel Coefficients

At an interface between media with indices n₁ and n₂, Snell's law gives the refracted angle: n₁ sinθᵢ = n₂ sinθₜ. The amplitude reflection and transmission coefficients follow from boundary conditions on E and B (fields tangential to the surface must be continuous):

s-polarisation (⊥ to plane of incidence): rₛ = (n₁cosθᵢ − n₂cosθₜ) / (n₁cosθᵢ + n₂cosθₜ) tₛ = 2n₁cosθᵢ / (n₁cosθᵢ + n₂cosθₜ) p-polarisation (∥ to plane of incidence): rₚ = (n₂cosθᵢ − n₁cosθₜ) / (n₂cosθᵢ + n₁cosθₜ) tₚ = 2n₁cosθᵢ / (n₂cosθᵢ + n₁cosθₜ) Reflectance: R = r² Transmittance: T = (n₂cosθₜ)/(n₁cosθᵢ) · t² Energy conservation: R + T = 1

At Brewster's angle (θ_B = arctan(n₂/n₁)), rₚ = 0 — reflected light is perfectly s-polarised. Total internal reflection occurs for θᵢ > θ_c = arcsin(n₂/n₁) when n₁ > n₂ — the basis of optical fibres.

7. JavaScript — E/B Field Visualiser

A canvas-based visualiser of a linearly polarised plane wave propagating along the x-axis. E is vertical (y), B is horizontal (z).

// Animate a plane wave E(x,t) = E₀ sin(kx − ωt) using Canvas 2D
function PlaneWaveVis(canvas) {
  const ctx = canvas.getContext('2d');
  const W = canvas.width, H = canvas.height;
  const cx = H / 2;
  let t = 0;

  const LAMBDA = 100; // pixels per wavelength
  const OMEGA  = 0.05; // rad / frame
  const AMP_E  = 60;
  const k = (2 * Math.PI) / LAMBDA;

  function drawArrow(x1, y1, x2, y2, color) {
    ctx.strokeStyle = color;
    ctx.lineWidth   = 1.5;
    ctx.beginPath();
    ctx.moveTo(x1, y1);
    ctx.lineTo(x2, y2);
    ctx.stroke();
    const angle = Math.atan2(y2 - y1, x2 - x1);
    const len = 8;
    ctx.beginPath();
    ctx.moveTo(x2, y2);
    ctx.lineTo(x2 - len * Math.cos(angle - 0.4), y2 - len * Math.sin(angle - 0.4));
    ctx.moveTo(x2, y2);
    ctx.lineTo(x2 - len * Math.cos(angle + 0.4), y2 - len * Math.sin(angle + 0.4));
    ctx.stroke();
  }

  function frame() {
    ctx.clearRect(0, 0, W, H);
    ctx.fillStyle = '#0f172a';
    ctx.fillRect(0, 0, W, H);

    // propagation axis
    ctx.strokeStyle = '#334155';
    ctx.lineWidth = 1;
    ctx.beginPath(); ctx.moveTo(0, cx); ctx.lineTo(W, cx); ctx.stroke();

    const STEP = 12;
    for (let x = 0; x < W; x += STEP) {
      const phase = k * x - OMEGA * t;
      const eY = AMP_E * Math.sin(phase);       // E field (vertical)
      const bLen = (AMP_E / 3) * Math.sin(phase); // B field (shown as colour)

      // E vector (cyan)
      drawArrow(x, cx, x, cx - eY, '#38bdf8');

      // B vector (orange, pointing "into" screen — shown as dot/cross)
      const r = Math.abs(bLen) * 0.18;
      ctx.fillStyle = '#fb923c';
      ctx.beginPath();
      ctx.arc(x, cx, Math.max(1.5, r), 0, Math.PI * 2);
      ctx.fill();
    }
    t++;
    requestAnimationFrame(frame);
  }
  frame();
}

// Sellmeier refractive index for BK7
function sellmeierBK7(lambdaMicron) {
  const l2 = lambdaMicron * lambdaMicron;
  return Math.sqrt(
    1
    + (1.03961 * l2) / (l2 - 0.00600)
    + (0.23179 * l2) / (l2 - 0.02001)
    + (1.01047 * l2) / (l2 - 103.56)
  );
}

// Fresnel reflectance at normal incidence
function fresnelR(n1, n2) {
  return ((n2 - n1) / (n2 + n1)) ** 2;
}

// Example: air → BK7 glass at 589 nm (sodium D-line)
const n_bk7 = sellmeierBK7(0.589); // ≈ 1.5168
console.log(`n = ${n_bk7.toFixed(4)},  R = ${(fresnelR(1, n_bk7) * 100).toFixed(2)}%`);

Run new PlaneWaveVis(document.querySelector('canvas')) to see the animated wave. The B-field circles represent the magnitude of the out-of-plane component — cyan arrows are the electric field.

8. Applications & Further Topics

Key insight: Light, radio waves, X-rays and gamma rays are all the same phenomenon — electromagnetic waves differing only in frequency. Maxwell's equations describe them all on an equal footing.