loading...
running...
How to use
Pick a preset, then change the droplet size and watch the rings move: smaller drops = wider rings. Raise the optical depth to wash the colour out. Raise the size spread to smear it. Hold up a hand to block the glare (or turn the Sun behind the spire).
Controls: drag to look around, wheel or pinch to zoom, arrow keys nudge the view. Space pauses the clouds, R resets.
The science
What you are seeing. A thin sheet of water cloud (altocumulus or lenticular) near the Sun or Moon. Light bent by each droplet's edge interferes with itself, so the glare is surrounded by rings. Each wavelength has its own ring spacing, so the rings are coloured. This is a corona. Where the droplet size changes slowly across the cloud the colour bands trace the lines of equal size: cloud iridescence (mother-of-pearl).
Diffraction by a disc (Fraunhofer).
I(theta) = I0 [ 2 J1(x) / x ]^2 , x = pi d sin(theta) / lambda
dark rings at x = 3.832, 7.016, 10.173 ... => theta_1 = 1.22 lambda / d , theta_k ~ (k + 0.22) lambda / d
Example: d = 14 um, lambda = 550 nm gives theta_1 = 2.25 deg. Red (640 nm) rings sit about 40 % farther out than blue (460 nm), so each ring is blue inside and red outside.
Mie theory (exact for a sphere). With size parameter x = pi d / lambda and relative index m = 1.333, the Bohren-Huffman recursion gives the scattering amplitudes a_n, b_n and
S1 = sum (2n+1)/(n(n+1)) (a_n pi_n + b_n tau_n) , S2 = sum (2n+1)/(n(n+1)) (a_n tau_n + b_n pi_n) , I = (|S1|^2 + |S2|^2) / 2
The page computes this in your browser for 48 droplet sizes, 13 wavelengths (400-700 nm) and 480 angles, then converts the spectrum to colour with the CIE 1931 matching functions (an analytic fit), assuming an equal-energy source. The result is stored relative to the forward intensity I(0). The 0.53 deg solar disc is convolved in, and a Gaussian spread of sizes in ln d is applied.
How bright? For a thin layer, single scattering from the Sun (solid angle 6.8e-5 sr) gives a radiance relative to the solar radiance of about
L_cor / L_sun ~ Omega_sun * w(tau) * [I(theta)/I(0)] / (0.84 pi theta_1^2) , w(tau) = tau e^(-tau)
so small droplets (large theta_1) make dimmer coronas. The weight tau e^-tau is a simple stand-in for multiple scattering: thin cloud gives colour, thick cloud washes it out into white (the white glow term is 1 - e^-tau).
Honest simplifications. No polarisation, no ice (halos are a different mechanism), no absorption or dispersion of water, one cloud layer, a procedural cloud pattern. The Moon uses the same diffraction physics with a dimmer light; its absolute brightness is not calibrated. The glare and the eye's adaptation are imitated by a display compression curve, so absolute brightness on screen is not physical. A droplet-size field that varies by +-35 % across the cloud is a stand-in for real size gradients. Typical cloud droplet diameters are 5-30 um.
Numerical checks on this page. Bessel zero versus 1.22; the optical theorem for Mie (extinction from the amplitudes equals scattering from the amplitudes squared); white balance of the colour pipeline; and Mie ring positions versus the Airy zeros for 20 um drops.