FbfBm

Procedural · Scale 3

fBm

fBm, fractal Brownian motion, makes smooth random hills by adding copies of one noise, each twice as fine and half as strong as the last. These plates use four copies.

What it is

Start with gradient noise: a random direction is dropped at each point of a coarse lattice and blended smoothly in between, which gives smooth hills. Add a second copy at double the frequency and half the strength, then a third, then a fourth. Each copy is called an octave. The sum is fBm.

On these plates the lattice is 300 units apart, on a canvas of 1,000 units, and there are four octaves.

The plates

Five plates. The height of the hills is cut into five bands and each band takes a flat tone. The dial is the push: how far the word bends the hills around itself. At the first position the word does not push at all. At 60, 120, 200 and 320 units, the height at each place is read up to that many units away, in the direction pointing away from the letters. The push fades out about 110 units from the word.

Safari stop · Smooth noise · Push
  • none

  • 60 units

  • 120 units

  • 200 units

  • 320 units

Turn the dial on the safari →

The plates are drawn by mosaic, a small Python library of our own, built on numpy, scipy, shapely and contourpy. No image model is involved, and each plate is a flat-colour SVG under 45 KB. The word Ciao is the safari's constant: it sits in the same place on every plate.

What we did and found

We wrote the noise ourselves, in about 30 lines of numpy. The opensimplex package (MIT licence) took 5.7 s per octave at 1024 x 1024. Ours took 0.24 s for five octaves.

The bend works without loss only on a field that is a formula, one that can be worked out at any point. When we bent a field that had already been sampled to a grid, 21% of the canvas was lost at the edges.

What is open

One kind of bend has been drawn: a push away from the word. The plates use four octaves, and we have not put other counts side by side on a plate.

mosaic is not yet part of Platypus, our visuals engine. That is why this cell is marked as working and not as shipped: the page is our notebook on the element.

Composes with

Other cells in the table — most still to be walked into in coming sessions.