Original generative art / a toy numerical experiment

A landscape made from a mathematical mistake.

Two mountains begin exactly alike. One keeps its decimals. The other rounds its height after every pass. Give a small mistake enough repetitions, and it becomes geography.

Choose the mistake

The heights and distances are synthetic units. This is a numerical drawing, not a model of real erosion.

01 / Decimals retained

Neighbours soften the ridges at each pass.

02 / Rounded at every pass

The same recurrence, with one extra operation.

The distance between them

Blue: lower than ideal · cream: equal · rust: higher

—RMS height difference
—Largest absolute difference
—Mean signed difference

Error through time

Every point is measured from the two 49 × 49 height grids after that pass. The vertical axis rescales with the experiment.

The exact rule

At each grid point, take 72% of its old height and 28% of the average height of its four neighbours. Both terrains start from the same seeded hills and ripples. All points update together from the previous grid.

u = 0.72h + 0.28(N + S + E + W)/4
ideal next = u
rounded next = q × round(u/q)
when q = 0, rounded next = u

The rounding affects every point at every pass, including the border. A missing neighbour repeats the border point. The next pass reads the already rounded grid, so yesterday’s error becomes today’s input. Rounding can hold small slopes in place and create steps; it need not make error increase at every pass.

The drawings share one fixed projection and height scale. Each little quadrilateral represents the actual four surrounding grid heights. Lighting comes from the computed surface slope; the optional error colours come from rounded height minus ideal height at the same location. There are no independent random mountains in the second drawing.

At zero passes, both arrays are identical. At a zero rounding interval, they remain identical at every pass. The seed recreates the same starting surface; reset restores seed 104729, interval 0.035 and 60 passes. SVG export contains the current pair and its measured differences.