Drop circles into a space, growing each until it kisses a neighbour, never overlapping. The gaps fill with smaller and smaller circles — a packing — the look of foam, pomegranate seeds, and a thousand generative posters. Simple rule (no overlaps), rich result. Slide the density and watch the froth fill in.
Circle packing places non-overlapping circles: a candidate at position p with radius r is accepted only if, for every placed circle, the centre distance is at least the sum of radii (dist ≥ rᵢ+rⱼ). A common greedy method throws darts, grows each new circle until it touches the nearest neighbour or a wall, and repeats — filling gaps with ever-smaller circles (an Apollonian-like froth). A fail-loud self-check throws unless every pair in a valid packing satisfies the no-overlap inequality. ◆ real computational geometry, node-verified.
A greedy dart-and-grow packing (not a maximal or optimal packing); the NO-OVERLAP guarantee is exact — every rendered circle satisfies dist ≥ rᵢ+rⱼ. Colours and count are art choices.