Questing · 2026-08-27 · Ice Crystal Growth · Zero Dependencies
FROST
A single frozen seed on a hexagonal lattice. Vapor diffuses inward. Tips protrude into richer vapor — and freeze faster than flat faces. Six arms emerge from physics alone.
Open Frost →What Is Frost?
Frost is an interactive ice crystal growth simulator running in your browser. A small hexagonal seed sits at the center of a hexagonal lattice filled with water vapor at supersaturation β. At each step, vapor diffuses through the lattice; cells on the crystal surface accumulate vapor from the diffusive flux until they exceed a freeze threshold and lock into ice. The diffusion field does the rest — no rules for symmetry are imposed. The 6-fold dendrite emerges from the geometry of the hex lattice and the physics of diffusion alone.
The Physics
The key mechanism is the Mullins-Sekerka instability(1963): a flat crystal-vapor interface is unstable. Any small protrusion sticks further into the surrounding vapor field and intercepts a larger diffusive flux — so it grows faster than its neighbors, amplifying the protrusion further. Flat faces fall behind; tips race ahead. The same instability governs dendritic growth in metal casting, frost on a windowpane, and solidification in igneous rocks.
On the hex grid, the initial 7-cell seed has six corners. Each corner is a slight protrusion relative to the flat edges of the growing hexagon. The Mullins-Sekerka instability amplifies these corners into six primary arms. Each arm then develops secondary side branches by the same mechanism — tips on the arms outrun the flat sides — cascading recursively into the familiar branched snowflake structure.
The Model
Frost uses the Gravner-Griffeath simplified lattice model (after Clifford Reiter 1996 and Janko Gravner & David Griffeath 2008). Each non-frozen cell holds a diffusive vapor amount d; each growth-front cell (adjacent to ice) accumulates an attachment counter a. The rules per step:
// A: Diffuse vapor (Jacobi iteration, α = 0.5)
d_new[c] = d[c] + α · (mean(d[non-frozen neighbors]) − d[c])
// frozen neighbors contribute d = 0; edge cells fixed at d = β
// B: Growth-front attachment
for each non-frozen cell c adjacent to at least one frozen cell:
a[c] += d[c]; d[c] = 0 // vapor captured by surface
if a[c] ≥ 1.0: freeze(c) // Mullins-Sekerka thresholdβ (the supersaturation) is the only free parameter. Low β (≈ 0.35) gives slow, thick plate-like hexagons. High β (≈ 0.85) gives fast, intricate dendritic arms. The transition between regimes is a morphological phase transition — also observed in real ice crystals as a function of temperature and humidity.
Why Snowflakes Have Six Arms
The six-fold symmetry comes from two sources acting together. First, water molecules freeze into ice Ih — hexagonal close-packed on the basal plane — so the crystal lattice itself has 6-fold symmetry. Second, each arm of a growing snowflake develops in essentially the same macroscopic environment (same temperature, same humidity) as its five siblings, because they all branch from a common nucleus simultaneously. Tiny local fluctuations create the fine details that differ within a single arm, but the six arms share those conditions and thus look alike. This is why the six arms of one snowflake resemble each other, but no two snowflakes look the same: the exact growth path is path-dependent and sensitive to micro-history.
Frost reproduces this via the hex lattice (which encodes the crystallographic symmetry) and diffusion-limited growth (which encodes the path-dependence). Click to plant a second seed and watch two dendrites grow into each other — their arms deform as they compete for the same vapor field.
How to Use It
The crystal grows automatically from the central seed. Drag the β slider to change the supersaturation in real time — watch the arm morphology change without resetting. Click anywhere on the canvas to plant an additional seed; two competing crystals grow and eventually collide, leaving grain boundary defects where their diffusion fields met. The Reset button plants a fresh center seed. On mobile, tap to seed.