Ripple Tank

Draw walls. Watch the waves bend.

A ripple tank in your browser. Two gaps split a wave, the pieces overlap, and bright bands appear on the screen, right where the formula says.

Draw your own walls

Ripple Tank

Fig. 1. Waves are starting.

How it's built

A wave solver written from scratch
The tank is a 2D wave equation stepped on the GPU: WebGL2 float textures ping-ponged at 60 frames a second, with walls, shallow plates that slow the wave, and an absorbing edge so nothing bounces back from the glass.
A twin that checks the GPU
A second copy runs on the CPU in a worker, with its own sine and Float32 arithmetic. At start-up it checks the GPU against it and takes over if they disagree, so the tank never goes blank.
Shadowgraph rendering
Brightness comes from the curvature of the water surface, the way a real tank's lamp projects it: crests that curve up focus light, troughs spread it.
Measured, not painted
The bright bands on the screen are found by fitting a peak to the averaged brightness and compared with the textbook formula d sin θ = mλ in the caption.
Next: a daily puzzle
Daily Focus is planned: a physics puzzle scored on Pages Functions and D1 from a table the CPU twin precomputes, so the server never simulates.
The leapfrog stencil: the new height at a point comes from its four neighbours, itself now and itself one step ago. u aboveu belowu leftu rightnownext stepone step ago
Fig. 2. The next height at a point is twice its height now, minus its height one step ago, plus the pull of its four neighbours.