This simulation grows a snowflake using Reiter's 1996 cellular-automaton model on a hexagonal grid: each cell holds a floating-point vapour value, and ice cells "feed" vapour to their unfrozen hex-neighbours. A boundary cell freezes once its vapour level crosses the freezing threshold κ, after which leftover vapour diffuses across the remaining liquid field every step. The result is the same kind of local, additive rule set that produces the six-fold branching patterns seen in real snow crystals, without simulating actual fluid dynamics or temperature gradients directly.
A single frozen seed cell at the centre of a 201×201 hexagonal grid grows outward step by step. Vapour (shown as shades of dark blue) accumulates near the ice front and converts to ice (white-blue) once it exceeds the freezing threshold, producing the characteristic branching dendrites of a snowflake.
Drag Supersaturation ρ to raise or lower the background vapour supply, and Freezing threshold κ to make cells freeze more or less readily. Noise σ adds randomness to the freezing test for rougher, less symmetric branches, and Speed controls how many iterations run per animation frame. Use Pause and Regrow to stop the simulation or restart it from a single seed cell.
The simulation automatically pauses once the crystal's radius nears the edge of the grid, since the underlying array would otherwise run out of room to keep growing — a nod to how real snow crystals eventually stop growing once they fall out of their ideal humidity and temperature layer.
It implements a version of Clifford Reiter's 1996 local cellular-automaton model for snow crystal growth, published in Chaos, Solitons & Fractals. Each hexagonal cell tracks a water-vapour value, ice cells pass vapour to their unfrozen neighbours, and cells freeze once their vapour crosses a threshold — the same class of local rule that produces dendritic, six-fold branching in nature.
ρ sets the background vapour level that the grid boundary is continually replenished with — higher ρ means more vapour available to feed growth, producing faster, denser crystals. κ is the vapour level a boundary cell must reach before it freezes; a lower κ makes cells freeze more readily, giving thinner, more delicate branches, while a higher κ produces slower, chunkier growth.
Real snow crystals form on the hexagonal lattice of ice crystal structure, which is what gives them their natural six-fold symmetry. The simulation uses an offset hexagonal grid with six neighbours per cell (rather than four or eight, as in a square grid) so that the branching pattern that emerges matches the six-armed shape of real snowflakes.
Noise σ adds a small random perturbation to the freezing check, so a cell freezes when its vapour exceeds κ plus or minus a random offset scaled by σ. This breaks the perfect symmetry of the growth, producing rougher, more irregular branch tips similar to the asymmetries seen in many real snowflakes.
The simulation checks each step whether any ice cell has reached close to the edge of the 201×201 grid. Once the crystal's radius approaches that boundary, growth automatically pauses (the Pause button switches to Resume) to avoid the crystal running past the edge of the simulated area; use Regrow to reset and start again from a single seed cell.