The blancmange curve is an interesting fractal formed by summing a series of zigzags. It
takes its name from its resemblance to the milk-pudding known as a blancmange
(blanc-manger in French, meaning “white eating”):
Blancmange curve
In successive zigzags, the number of zags doubles as their height halves, i.e. z(i) = z(i-1) * 2, h(i) = h(i-1) / 2. If all the zigzags are represented at once, the construction looks like this:
Zigzags 1 to 10
Zigzags 1 to 10 (animated)
Here is a step-by-step construction, with the total sum of zigzags in white, the present zigzag in red and the previous zigzag in green:
Blancmange curve: Stage 1
Stage 2
Stage 3
Stage 4
Stage 5
Stage 6
Stage 7
Stage 8
Stage 9
Stage 10
Blancmange curve (animated)
It’s easy to think of variants on the standard blancmange curve. Suppose the number of
zags triples as their height is divided by three, i.e. z(i) = z(i-1) * 3, h(i) = h(i-1) /
3:
Blancmange curve for z(i) = z(i-1) * 3, h(i) = h(i-1) / 3
Stage 1
Stage 2
Stage 3
Stage 4
Stage 5
Stage 6
Blancmange z(i) = z(i-1) * 3 (animated)
All zigzags
All zigzags (animated)
Here is a blancmange curve for z(i) = z(i-1) * 4:
Blancmange curve for z(i) = z(i-1) * 4
Stage 1
Stage 2
Stage 3
Stage 4
Stage 5
Blancmange curve z(i) = z(i-1) * 4 (animated)
And a blancmange curve for z(i) = z(i-1) * 5:
Blancmange curve for z(i) = z(i-1) * 5
Blancmange curve z(i) = z(i-1) * 5 (animated)
Now trying incrementing the number of zags rather than multiplying them. This is z(i) =
z(i-1) + 1, h(i) = h(1) / z(i):
Blancmange curve for z(i) = z(i-1) + 1, h(i) = h(1) / z(i)
Stage 1
Stage 2
Stage 3
Stage 4
Stage 5
Blancmange curve z(i) = z(i-1) + 1 (animated)
(Note that these curves should be mirror-symmetrical, but my programming and
graphics software weren’t good enough to achieve this.)
And here are blancmange curves summing a series of humps rather than zigzags:
Blancmange curve using humps
Stage 1
Stage 2
Stage 3
Stage 4
Stage 5
Stage 6
Stage 7
Blancmange curve with humps (animated)
Blancmange curve for z(i) = z(i-1) * 3 using humps
z(i) = z(i-1) * 3 using humps (animated)
z(i) = z(i-1) + 1, h(i) = h(1) / z(i) using humps
z(i) = z(i-1) + 1 using humps (animated)
And blancmange curves summing a series of sine waves rather than zigzags:
Blancmange curve using sine waves
Stage 1
Stage 2
Stage 3
Stage 4
Stage 5
Stage 6
Stage 7
Stage 8
Stage 9
Blancmange curve using sine waves (animated)
z(i) = z(i-1) * 3 using sine waves
z(i) = z(i-1) * 3 using sine waves (animated)
z(i) = z(i-1) + 1, h(i) = h(1) / z(i) using sine waves
z(i) = z(i-1) + 1 using sine waves (animated)
z(i) = z(i-1) + 2, h(i) = h(1) / z(i) using sine waves
z(i) = z(i-1) + 2 using sine waves (animated)
z(i) = z(i-1) + 3, h(i) = h(1) / z(i) using sine waves
z(i) = z(i-1) + 3 using sine waves (animated)
z(i) = z(i-1) + 3 using sine waves (all waves)
z(i) = z(i-1) + 4, h(i) = h(1) / z(i) using sine waves
z(i) = z(i-1) + 4 using sine waves (all waves)