draw a curveclick / drag — closes into a loop if you end near where you started
draw as many as you like, then press ▶ grow
Differential Growth
mode
speed60/s
point spacing10px
repulsion radius24px
repulsion strength10
smoothing0.15
split at1.5×

Differential Growth

The curve is a chain of points connected by edges, like beads on a string. Every step, each point feels a few simple rules:

Each point is pulled toward its neighbors so edges hold a target length — the chain doesn't fall apart or stretch into spaghetti.

Any two points that drift too close, even ones far apart along the chain, push each other away. This is the key rule: the curve refuses to touch or crowd itself. If you draw more than one curve, this rule applies between them too — separate curves push each other apart, but each one only holds itself together, so they compete for the same limited space.

Each point is nudged toward the average of its neighbors, relaxing sharp kinks into gentler curves. Turn it down for jagged, fingerprint-like ridges; up for smoother, coral-like folds.

Whenever an edge gets stretched past a length limit, it splits in two. The curve is constantly gaining new points and total length.

The curve keeps growing longer, but it's stuck in a bounded dish and forbidden from overlapping itself. The only way to pack ever more length into a fixed area without self-touching is to buckle and wrinkle — nobody programs the folds, they're forced by growing length + no self-overlap + bounded space. The same three rules produce the convolutions of brain cortex, coral, kale leaves, intestines, and fingerprints.