MY SIMULATOR
storm - km thunder after - s heard - FPS 0
Observer view Side view
Observer view: drag to look around, wheel to zoom; the sea hides the lower part of the storm. Side view: vertical scale is exaggerated (see slider); orange = light line of sight, teal = sound rays that reach the sea, grey = rays that bend away into the sky.
WebGL is not available here — the numbers, charts and numerical checks on the right still work.
Heat Lightning Lab: Why a Distant Storm Flashes in Silence
A thunderstorm far over the sea flashes, but no thunder ever arrives. Two facts of geometry and physics explain it: the curved Earth hides the base of the storm while its sunlit-by-lightning top stays visible for hundreds of kilometres, and sound rays bend upward in a cooling atmosphere so a silent shadow zone opens up beyond a few tens of kilometres. Move the storm, change its height, the observer's height and the air temperature profile and watch both limits.
Educational model with typical values. Light follows straight lines over an Earth of effective radius R/(1−k) (standard refraction k = 0.13); sound follows circular arcs in a linear temperature profile. No wind, no turbulence scattering, no terrain, a single flash height. The sound level at 1 km and the absorption are illustrative, not measured.
Flash now Auto flashes: on Sound: off Reset Quality: High
Scenario
The storm and the observer
Air and sound
Live readout
What the sea hides
How loud is the thunder?
Experiment 1: sweep the distance
Uses the current storm, observer and air settings: how much of the cloud you see, whether the bolt itself is above the horizon, whether you hear it, and the delay.
Run sweep
Experiment 2: temperature profile and the shadow zone
Farthest audible distance for a flash at the current height, from the closed form and from tracing a fan of sound rays one by one.
Run sweep
Experiment 3: how far away can you see the storm?
Largest distance at which the top of the cloud is still above the horizon, for different observer and cloud heights (exact circle geometry, current refraction).
Run table
Independent numerical checks running...
Also run in Node: node src/check.js.
Controls Observer view: drag or one finger to look around, wheel or pinch to zoom. Side view: drag to orbit, wheel to zoom. Sliders act at once. "Flash now" fires a flash; auto flashes repeat at the chosen rate. Thunder is shown as a travelling teal front in the side view, sped up by the time-lapse factor; with Sound on you also hear a synthetic rumble when it arrives (only if the geometry allows it). The scenario list loads typical situations: close storm, edge of hearing, classic heat lightning, tall anvil, a temperature inversion that carries sound, a higher lookout.
The science
Why only the top is seen. The sea curves away from the line of sight. For an eye at height ho the horizon lies at d0 = √(2 Reff ho ) (about 3.86√h km for h in metres). Beyond it the line of sight rises above the sea: its height at distance d is Reff /cos(d/Reff − α0 ) − Reff with α0 = arccos(Reff /(Reff +ho )) (close to (d − d0 )²/2Reff ). Everything of the storm below that height is hidden. Reff = R/(1−k) with k = 0.13 stands for the downward bending of light in the normal atmosphere; the model is the standard way to keep light rays straight.
Why a flash can be seen from 400 km. A cloud top at height H becomes invisible when the hidden height reaches H, i.e. at dmax = Reff (α0 + arccos(Reff /(Reff +H))). For H = 12 km this is about 420 km. The lightning channel inside the cloud lights the cloud from within; if the channel itself is below the hidden height you only see the glowing cloud top: "heat lightning", which has nothing to do with heat.
Why no thunder. The speed of sound is c = 331.3√(T/273.15) m/s; the air cools with height at the lapse rate Γ (6.5 K/km standard), so c falls with height: dc/dz = −(c/2T)Γ. In a linear profile Snell's law makes sound rays circles of radius Rs = c/|dc/dz| = 2T/Γ (about 90 km), bending upward. A flash at height z can send sound to the sea only up to daud = √(2z/(1/Rs + 1/R)) (about 30 km for z = 5 km); beyond it lies the shadow zone. Over a temperature inversion (Γ ≤ 0) rays bend down and sound can be ducted much farther. Within the audible zone the level falls as L = L1km − 20 log10 (d/1 km) − αd and the thunder must exceed the background noise.
Delay. Sound crosses 1 km in about 2.9 s at 20 °C (1000/c); the light is instantaneous, so counting seconds between flash and thunder gives distance, as long as the thunder is heard at all.
Numerics and checks. Horizon and hidden height are closed forms compared with the textbook rules; the sound-ray limit is checked by integrating Snell's law step by step and by tracing a fan of rays. Details in the checks list below.
Honest simplifications. Real storms are 3-D and many strokes occur at different heights; refraction varies with weather (k from 0 to 0.25 is allowed); wind bends sound further (downwind it carries, upwind it shadows); the thunder level and absorption are illustrative values; scattering of sound by turbulence fills the shadow zone a little in reality. The cloud picture is schematic: real thunderheads are lit and shaped by the whole storm.
3D anvil cloud and lookout modelled in Blender, baked PBR textures; rendered with Three.js