[Prev][Next][Up]VSFCF - CVM 1.1[Bib][Respond][Find][Help]

The Snowflake Curve

We start with von Koch's snowflake curve.

3kb three 
color gif of full snowflake curve

Figure 2. Drawn this way shows the reason for the name snowflake curve. It actually consists of three copies (placed along the sides of an equilateral triangle) of the original (in blue) von Koch curve. Also available is a larger, higher resolution version (6kb). Source code is available.

We can use iterated function systems to give a quick complete definition of the snowflake curve. It's the attractor determined by following four similarities in the complex plane:

f0: Shrinks by a factor of 1/3 toward 0.
f1: f0 followed by a rotation of 60° about 0 and a shift of 1/3.
f2: f3 followed by a rotation of -60° about 1 and a shift of -1/3.
f3: Shrinks by a factor of 1/3 toward 1.
(We've labeled the map f2 that uses f3 because later we'll want this order to show that we end with a continuous curve.) Or, analytically, for w=ei2p/6=1/2+i31/2/2 the fundamental sixth root of unity, s=1/3 the shrinking factor, and * meaning complex conjugation of the immediately preceding variable:

f0(z)=sz,     f1(z)=wsz+s,     f2(z)=w*s(z-1)+1-s,     f3(z)=s(z-1)+1         (1)

Since 0 is the fixed point of f0 and 1 is the fixed point of f3 and for k=0,1,2 we have fk(1)=fk+1(0), then the attractor of the IFS {f0, f1, f2, f3} can naturally be described as a continuous curve. (See [Hu, p. 730] for the general theorem.) Note that to have f1(1)=f2(0) we must have that Re(w)=1/(2s)-1.

Now, if we let w vary in equation (1), with w=eit for t in [0, p/2], and also let s vary so that f1(1)=f2(0), namely s=1/(2(1+Re(w))), we get a family of IFS's that gives us a continuous curve at each stage. (Note that we always have f0(1)=f1(0) and f2(1)=f3(0).) As t (the angle of rotation for f1) increases from 0 to p/2, s will increase from 1/4 to 1/2. For t=0 the attractor is just the unit interval, for t in (0,1) we get a snowflake like curve with dimension increasing from 1 to 2 as t increases. For t=p/3 we get the classical snowflake curve, and for t=1 we get what's known as the Sierpinski-Knopp space-filling curve with image a filled in right isosceles triangle.

Four examples are shown in Figure 3 with s equal to about .252, .288, .336, and .444 respectively.

2kb small snow 3kb small snow
3 kbsmall snow 7 kbsmall snow
Figure 3. Frames from the increasing dimension snowflake curve. Also available is an animated view (126 kb) and a speed controlled animation. Use the browser back button to return. Source code is available.
A similar idea to these variations of the von Koch curve is attributed to J. Lighthill by Mandelbrot ([Ma1, pp. 38-39]). The snowflake curve can also be produced using just two IFS functions, although then reflections are needed in addition to shrinking, rotating, and shifting. This is shown by example in source code.

[Next] Definition of the Hilbert Curve
[Up] Table of contents
[Prev] Mathematical Background

Communications in Visual Mathematics, vol 1, no 1, August 1998.
Copyright © 1998, The Mathematical Association of America. All rights reserved.
Created: 18 Aug 1998 --- Last modified: Sep 30, 2003 6:26:52 PM
Comments to: CVM@maa.org