Diffraction & Interference — When Light Bends Around Corners
Diffraction — the spreading of waves around obstacles and through apertures — is where geometric optics breaks down and the wave nature of light becomes undeniable. Thomas Young's 1801 double-slit experiment shattered the Newtonian corpuscle theory of light; Augustin-Jean Fresnel then quantified it via the Huygens-Fresnel principle. Today diffraction sets the resolution limit of every optical instrument, determines the colour of CDs, and governs X-ray crystallography's ability to reveal molecular structures.
1. Huygens-Fresnel Principle
Every point on a wavefront acts as a secondary point source of spherical wavelets. The amplitude at any point P is the coherent superposition of all secondary wavelets from the previous wavefront:
2. Single-Slit Diffraction
3. Double-Slit Interference (Young)
4. Diffraction Grating
5. Airy Disk and Resolution Limit
6. Fresnel vs Fraunhofer Regimes
7. JavaScript Diffraction Simulator
// Fraunhofer diffraction intensity for arbitrary 1D aperture
// using numerical DFT (or analytically for standard shapes)
function singleSlitIntensity(theta, lambda, a) {
const beta = (Math.PI * a * Math.sin(theta)) / lambda;
if (Math.abs(beta) < 1e-10) return 1;
const sinc = Math.sin(beta) / beta;
return sinc * sinc;
}
function doubleSlitIntensity(theta, lambda, a, d) {
const envelope = singleSlitIntensity(theta, lambda, a);
const delta = (Math.PI * d * Math.sin(theta)) / lambda;
const interference = Math.cos(delta) ** 2;
return envelope * interference;
}
function gratingIntensity(theta, lambda, a, d, N) {
const envelope = singleSlitIntensity(theta, lambda, a);
const delta = (Math.PI * d * Math.sin(theta)) / lambda;
let multi;
if (Math.abs(Math.sin(delta)) < 1e-10) {
multi = N * N;
} else {
const r = Math.sin(N * delta) / Math.sin(delta);
multi = r * r;
}
return envelope * multi / (N * N); // normalise
}
// Generate intensity pattern on screen at distance L
function diffractionPattern(type, params, screenW = 0.05, L = 1, nPoints = 2000) {
const pts = [];
for (let i = 0; i < nPoints; i++) {
const y = (i / nPoints - 0.5) * screenW;
const theta = Math.atan(y / L);
let I;
if (type === 'single')
I = singleSlitIntensity(theta, params.lambda, params.a);
else if (type === 'double')
I = doubleSlitIntensity(theta, params.lambda, params.a, params.d);
else
I = gratingIntensity(theta, params.lambda, params.a, params.d, params.N);
pts.push({y: y * 1000, I}); // y in mm
}
return pts;
}
// Example: 600-line/mm grating, λ=589nm, N=200 illuminated slits
const pattern = diffractionPattern('grating', {
lambda: 589e-9,
a: 0.8e-6, // slit width 0.8 μm
d: 1/600000, // 600 lines/mm → d in m
N: 200
}, 0.1, 1);
const peak = Math.max(...pattern.map(p => p.I));
console.log(`Peak at I = ${peak.toFixed(3)}`);
8. Applications
X-Ray Crystallography
Crystal planes (spacing d ~0.1–1 nm) act as diffraction gratings for X-rays (λ~0.1 nm). Bragg's law nλ = 2d sinθ locates peaks. Inverse FT of peak intensities → electron density → molecular structure.
Optical Lithography
IC fabrication prints features using diffraction-limited optics. Rayleigh resolution = k₁·λ/NA (NA = numerical aperture). Extreme UV (EUV, λ=13.5 nm) enables 3 nm feature sizes.
Holography
Interference of reference beam and scattered object beam records a diffraction grating that reconstructs the object's 3D wavefront when illuminated. Phase and amplitude both encoded.
Spectrometers
Blazed diffraction gratings (tilted groove faces) concentrate diffracted light into a single order for maximum efficiency. Echelle gratings use high diffraction orders for ultra-high resolution spectroscopy.