White Rites

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”):

blanc_solid

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:

blanc_all

Zigzags 1 to 10


blancmange_all

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:

blanc1

Blancmange curve: Stage 1


blanc2

Stage 2


blanc3

Stage 3


blanc4

Stage 4


blanc5

Stage 5


blanc6

Stage 6


blanc7

Stage 7


blanc8

Stage 8


blanc9

Stage 9


blanc10

Stage 10


blancmange

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:

blanc_x3_solid

Blancmange curve for z(i) = z(i-1) * 3, h(i) = h(i-1) / 3


blanc_x3_1

Stage 1


blanc_x3_2

Stage 2


blanc_x3_3

Stage 3


blanc_x3_4

Stage 4


blanc_x3_5

Stage 5


blanc_x3_6

Stage 6


blancmange_x3

Blancmange z(i) = z(i-1) * 3 (animated)


blanc_x3_all

All zigzags


All zigzags (animated)


Here is a blancmange curve for z(i) = z(i-1) * 4:

blanc_x4_solid

Blancmange curve for z(i) = z(i-1) * 4


blanc_x4_1

Stage 1


blanc_x4_2

Stage 2


blanc_x4_3

Stage 3


blanc_x4_4

Stage 4


blanc_x4_5

Stage 5



blancmange_x4

Blancmange curve z(i) = z(i-1) * 4 (animated)



And a blancmange curve for z(i) = z(i-1) * 5:

blanc_x5_solid

Blancmange curve for z(i) = z(i-1) * 5


blancmange_x5

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):

blanc+1_solid

Blancmange curve for z(i) = z(i-1) + 1, h(i) = h(1) / z(i)


blanc+1_1

Stage 1


blanc+1_2

Stage 2


blanc+1_3

Stage 3


blanc+1_4

Stage 4


blanc+1_5

Stage 5


blancmange+1

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:
blanc_hump_solid

Blancmange curve using humps


blanc_hump1

Stage 1


blanc_hump2

Stage 2


blanc_hump3

Stage 3


blanc_hump4

Stage 4


blanc_hump5

Stage 5


blanc_hump6

Stage 6


blanc_hump7

Stage 7


blancmange_hump


Blancmange curve with humps (animated)


blanc_hump_all


blanc_hump_x3_solid

Blancmange curve for z(i) = z(i-1) * 3 using humps


blancmange_hump_x3

z(i) = z(i-1) * 3 using humps (animated)


blanc_hump_x3_all


blanc_hump+1_solid

z(i) = z(i-1) + 1, h(i) = h(1) / z(i) using humps


blancmange_hump+1

z(i) = z(i-1) + 1 using humps (animated)


And blancmange curves summing a series of sine waves rather than zigzags:
blanc_sine_solid

Blancmange curve using sine waves


blanc_sine1

Stage 1


blanc_sine2

Stage 2


blanc_sine3

Stage 3


blanc_sine4

Stage 4


blanc_sine5

Stage 5


blanc_sine6

Stage 6


blanc_sine7

Stage 7


blanc_sine8

Stage 8


blanc_sine9

Stage 9


blancmange_sine

Blancmange curve using sine waves (animated)


blanc_sine_all


blanc_sine_x3_solid

z(i) = z(i-1) * 3 using sine waves


blancmange_sine_x3

z(i) = z(i-1) * 3 using sine waves (animated)


blanc_sine_x3_all


blanc_sine+1_solid

z(i) = z(i-1) + 1, h(i) = h(1) / z(i) using sine waves


blancmange_sine+1

z(i) = z(i-1) + 1 using sine waves (animated)


blanc_sine+1_all


z(i) = z(i-1) + 2, h(i) = h(1) / z(i) using sine waves


blancmange_sine+2

z(i) = z(i-1) + 2 using sine waves (animated)


blanc_sine+2_all


blanc_sine+3_solid

z(i) = z(i-1) + 3, h(i) = h(1) / z(i) using sine waves


blancmange_sine+3

z(i) = z(i-1) + 3 using sine waves (animated)


blanc_sine+3_all

z(i) = z(i-1) + 3 using sine waves (all waves)


blanc_sine+4_solid

z(i) = z(i-1) + 4, h(i) = h(1) / z(i) using sine waves


blanc_sine+4_all

z(i) = z(i-1) + 4 using sine waves (all waves)