HomeArticlesVoronoi Growth

Voronoi Growth: How Crystals Tile a Plane as They Form

Seeds growing outward at equal speed trace straight Voronoi boundaries; seeds that nucleate over time trace curved Johnson-Mehl ones — both governed by the Avrami equation for transformed fraction.

mysimulator teamUpdated June 2026≈ 7 min read▶ Open the simulation

Seeds that grow until they meet

Scatter a handful of seed points across a plane and let each one grow outward at the same constant speed in every direction, and the boundaries where neighbouring growth fronts collide trace out a mosaic of convex cells — a Voronoi diagram. It is one of the simplest generative processes in geometry, and it is also, almost exactly, how real crystals form when a metal or mineral solidifies from a melt.

live demo · seeds nucleating and growing into a cellular mosaic● LIVE

The mathematics of a single cell

Each Voronoi cell is the set of all points closer to its own seed than to any other seed. With the ordinary Euclidean distance, the boundary between two seeds is simply the perpendicular bisector of the line joining them, so simultaneous, equal-speed growth from a fixed set of seeds produces perfectly straight cell walls and a diagram identical to the mathematical Voronoi tessellation:

cell(i) = { x : dist(x, seed_i) <= dist(x, seed_j)  for all j != i }

Swap the distance function and the mosaic's character changes completely even though the seeds and the growth rule are the same. Euclidean distance gives straight bisectors and the familiar convex polygons. Manhattan (taxicab, |dx| + |dy|) distance gives cell walls at 45-degree angles, producing diamond-like cells. Chebyshev (max(|dx|, |dy|)) distance gives square-edged cells. All three are the same algorithm with one line changed.

Nucleation timing: straight versus curved boundaries

Real crystallisation rarely nucleates all its seeds at the same instant, and that timing difference is exactly what separates a plain Voronoi diagram from its more general cousin, the Johnson-Mehl tessellation. If every seed appears at time zero and then grows at the same rate, the boundary between two cells is fixed by geometry alone and stays a straight line. If seeds instead nucleate one after another over time, an early seed has a head start — its front has already grown outward before a late-appearing neighbour even exists — so the boundary between them is no longer equidistant in space; it is equidistant in arrival time, which works out to a curved, hyperbola-like boundary bowed toward the later, disadvantaged seed.

The Avrami equation: how fast the whole plane fills in

Metallurgists studying phase transformations — a metal solidifying, a polymer crystallising — needed a way to predict what fraction of the material has transformed at time t, not just the final geometry. Johnson, Mehl, Avrami and Kolmogorov independently derived the same result in the 1930s-40s, now called the JMAK or Avrami equation:

X(t) = 1 - exp( -K . t^n )

X(t) = fraction of the plane/volume transformed by time t
K    = a rate constant (nucleation rate x growth rate, combined)
n    = the Avrami exponent — encodes nucleation mode and dimensionality

The exponent n is the interesting number: for growth in d dimensions with a constant, ongoing nucleation rate, n = d + 1 (so n = 4 for ordinary 3-D solidification with continuous nucleation); for site saturation, where all nuclei appear at once and only grow afterward, n = d exactly (n = 3 in 3-D, n = 2 for a 2-D sheet). Measuring n and K from real transformation-fraction-versus-time data is a standard way materials scientists diagnose which nucleation mechanism actually occurred, entirely from a single curve.

Lloyd relaxation: making the mosaic more uniform

A Voronoi diagram from randomly scattered seeds tends to have some very small, cramped cells next to some very large, sprawling ones — visually noisy. Lloyd's algorithm smooths this out with a simple iterative rule: compute the current Voronoi diagram, move each seed to the centroid (centre of mass) of its own cell, and recompute. Repeating this a handful of times converges toward a centroidal Voronoi tessellation, where every cell is centred on its own seed — visually far more even, and the same relaxation technique used to generate blue-noise point distributions and to smooth meshes in computer graphics.

Frequently asked questions

Why do some Voronoi-like crystal patterns have curved boundaries instead of straight ones?

Straight boundaries only appear when every seed nucleates at the same moment and then grows at equal speed — a pure Voronoi diagram. If seeds instead appear at different times (continuous nucleation), an earlier seed's growth front has a head start over a later neighbour, so the boundary between them is set by equal arrival time rather than equal distance, which produces a curved, Johnson-Mehl-style boundary bowed toward the later seed.

What does the Avrami exponent n actually tell you about a material?

It encodes both the dimensionality of the growth (1-D needles, 2-D discs, 3-D spheres) and whether nucleation happens all at once or continuously over time. Fitting n from experimental transformation-fraction data is a standard way to infer, without ever watching the microstructure directly, whether a solidifying or crystallising material nucleated in a single burst or kept nucleating new grains throughout the process.

What is Lloyd relaxation actually doing to the diagram?

It repeatedly moves each seed to the centroid of the cell it currently owns and recomputes the tessellation, which is mathematically the same update rule as k-means clustering. Each iteration reduces the variance in cell size and shape, converging toward a centroidal Voronoi tessellation where every seed sits at its own cell's centre of mass — a much more visually uniform mosaic than the original random scatter.

Try it live

Everything above runs in your browser — open Voronoi Growth and change the parameters while it is running. Nothing is installed, nothing is uploaded, the whole model lives in one tab.

▶ Open Voronoi Growth simulation

What did you find?

Add reproduction steps (optional)