Agnes Scott College
Larry Riddle, Agnes Scott College
KochSnowflake100

Koch Snowflake IFS Details

\({f_1}({\bf{x}}) = \left[ {\begin{array}{*{20}{c}} { - 1/6} & {\sqrt 3 /6} \\ { - \sqrt 3 /6} & { - 1/6} \\ \end{array}} \right]{\bf{x}} + \left[ {\begin{array}{*{20}{c}} {1/6} \\ {\sqrt 3 /6} \\ \end{array}} \right]\)
 
   scale by 1/3, rotate by −120°
\({f_2}({\bf{x}}) = \left[ {\begin{array}{*{20}{c}} { 1/6} & {- \sqrt 3 /6} \\ { \sqrt 3 /6} & { 1/6} \\ \end{array}} \right]{\bf{x}} + \left[ {\begin{array}{*{20}{c}} {1/6} \\ {\sqrt 3 /6} \\ \end{array}} \right]\)
 
   scale by 1/3, rotate by 60°
\({f_3}({\bf{x}}) = \left[ {\begin{array}{*{20}{c}} { 1/3} & {0} \\ { 0} & { 1/3} \\ \end{array}} \right]{\bf{x}} + \left[ {\begin{array}{*{20}{c}} {1/3} \\ {\sqrt 3 /3} \\ \end{array}} \right]\)
 
   scale by 1/3
\({f_4}({\bf{x}}) = \left[ {\begin{array}{*{20}{c}} { 1/6} & { \sqrt 3 /6} \\ {- \sqrt 3 /6} & { 1/6} \\ \end{array}} \right]{\bf{x}} + \left[ {\begin{array}{*{20}{c}} {2/3} \\ {\sqrt 3 /3} \\ \end{array}} \right]\)
 
   scale by 1/3, rotate by −60°
\({f_5}({\bf{x}}) = \left[ {\begin{array}{*{20}{c}} { 1/2} & {- \sqrt 3 /6} \\ { \sqrt 3 /6} & { 1/2} \\ \end{array}} \right]{\bf{x}} + \left[ {\begin{array}{*{20}{c}} {1/3} \\ {0} \\ \end{array}} \right]\)
 
   scale by \(\sqrt{3} /3\), rotate by 30°
\({f_6}({\bf{x}}) = \left[ {\begin{array}{*{20}{c}} { -1/3} & {0} \\ { 0} & { -1/3} \\ \end{array}} \right]{\bf{x}} + \left[ {\begin{array}{*{20}{c}} {2/3} \\ {0} \\ \end{array}} \right]\)
 
   scale by 1/3, rotate by 180°
\({f_7}({\bf{x}}) = \left[ {\begin{array}{*{20}{c}} { 1/3} & {0} \\ { 0} & { 1/3} \\ \end{array}} \right]{\bf{x}} + \left[ {\begin{array}{*{20}{c}} {2/3} \\ {0} \\ \end{array}} \right]\)
 
   scale by 1/3

This particular IFS is motivated by a dragon curve construction based on the following motif generated from the unit line segment from (0,0) to (1,0).

IFSdetails

The seven red segments of the motif lie along parts of an equilateral triangle of side length 1. Each segment is replaced by a scaled and rotated version of the motif such that the scaled version lies to the left of the oriented segment, as illustrated in the image below.

IFSdetails2nditeration

The red segments in the motif are rotated from the original horizontal unit segment by angles of −120°, 60°, 0°, −60°, 30°, 180°, and 0°, respectively, to get the desired orientation. Six of the red segments have been scaled by 1/3. The fifth (longer) line segment makes a 90° angle with one side of the equilateral triangle and by the Pythagorean theorem has length \[\sqrt {{{\left( {\frac{2}{3}} \right)}^2} - {{\left( {\frac{1}{3}} \right)}^2}} = \sqrt {\frac{3}{9}} = \frac{1}{{\sqrt 3 }}.\]

This gives us the scaling factors and the rotations for the IFS. Each line segment in the motif must be translated to the appropriate point (large dot) shown in the figure. Since the sides of the original equilateral triangle have been divided into thirds, the x-coordinates of these points are at 1/6, 1/3, and 2/3, and the y-coordinates are at 0, \(\sqrt 3 /6\), and \(\sqrt 3 /3\).

Why is the Koch snowflake the attractor for this IFS?

lineFractalmotif lineFractalproof

 
 

Convergence
Demo

The IFS motif lies inside the equilateral triangle S(0) that starts the construction of the Koch snowflake. The image on the left above shows S(1), the first iteration in the Koch construction, and illustrates how six of the seven line segments in the motif lie along the edges of the triangles around the outside of S(1), and that the other line segment (labeled #5) lies along another equilateral triangle inscribed inside the hexagon formed by the six outer triangles. The orientation of the line segments in the motif guarantees that the next iteration of the IFS will place the scaled copies of the motif inside each of these seven triangles as shown in the image on the right. We now have 7 scaled copies of the original equilateral triangle and IFS motif inside S(1). Continued iterations of the IFS will fill in the Koch snowflake with more and more scaled copies of the motif.

Notice that during the iterations we always have a continuous curve from (0,0) to (1,0) that will never cross itself. The Koch snowflake is the range of a continuous function from the interval [0,1] to the plane and is a space-filling curve.

A Modified IFS

IFSdetails13edges

If we keep segments 1, 2, 3, 4, 6, and 7 from the original motif but replace segment 5 with a rotated version of the motif scaled by \(1/ \sqrt 3 \) and oriented as shown above, we will obtain another IFS whose attractor is the Koch snowflake. The iterations inside the interior hexagon are simply one step ahead of those from the other segments in the motif with respect to the IFS given above. This new IFS will contain the same functions as above except for function 5 which must be replaced by the following 7 affine transformations (for a total of 13 functions in the IFS).

 
 
 

IFS
Animation
(line segments)

 

IFS
Animation
(triangles)

 

Convergence
Demo

\({f_{5a}}({\bf{x}}) = \left[ {\begin{array}{*{20}{c}} { - 1/6} & {-\sqrt 3 /18} \\ { \sqrt 3 /18} & { - 1/6} \\ \end{array}} \right]{\bf{x}} + \left[ {\begin{array}{*{20}{c}} {5/6} \\ {\sqrt 3 /6} \\ \end{array}} \right]\)
 
   scale by \(1/ (3 \sqrt 3) \), rotate by 150°
\({f_{5b}}({\bf{x}}) = \left[ {\begin{array}{*{20}{c}} { 1/6} & { \sqrt 3 /18} \\ { - \sqrt 3 /18} & { 1/6} \\ \end{array}} \right]{\bf{x}} + \left[ {\begin{array}{*{20}{c}} {1/2} \\ {5\sqrt 3 /18} \\ \end{array}} \right]\)
 
   scale by \(1/ (3 \sqrt 3) \), rotate by −30°
\({f_{5c}}({\bf{x}}) = \left[ {\begin{array}{*{20}{c}} { 1/6} & {-\sqrt 3 /18} \\ { \sqrt 3 /18} & { 1/6} \\ \end{array}} \right]{\bf{x}} + \left[ {\begin{array}{*{20}{c}} {1/3} \\ {2\sqrt 3 /9} \\ \end{array}} \right]\)
 
   scale by \(1/ (3 \sqrt 3) \), rotate by 30°
\({f_{5d}}({\bf{x}}) = \left[ {\begin{array}{*{20}{c}} { 0} & {- \sqrt 3 /9} \\ { \sqrt 3 /9} & { 0} \\ \end{array}} \right]{\bf{x}} + \left[ {\begin{array}{*{20}{c}} {1/3} \\ {\sqrt 3 /9} \\ \end{array}} \right]\)
 
   scale by \(1/ (3 \sqrt 3) \), rotate by 90°
\({f_{5e}}({\bf{x}}) = \left[ {\begin{array}{*{20}{c}} { 1/3} & {0} \\ { 0} & { 1/3} \\ \end{array}} \right]{\bf{x}} + \left[ {\begin{array}{*{20}{c}} {1/3} \\ {\sqrt 3 /9} \\ \end{array}} \right]\)
 
   scale by \(1 /3\)
\({f_{5f}}({\bf{x}}) = \left[ {\begin{array}{*{20}{c}} { -1/6} & {\sqrt 3 /18} \\ { - \sqrt 3 /18} & { -1/6} \\ \end{array}} \right]{\bf{x}} + \left[ {\begin{array}{*{20}{c}} {2/3} \\ {\sqrt 3 /9} \\ \end{array}} \right]\)
 
   scale by \(1/ (3 \sqrt 3) \), rotate by −150°
\({f_{5g}}({\bf{x}}) = \left[ {\begin{array}{*{20}{c}} { 1/6} & {-\sqrt 3 /18} \\ { -\sqrt 3 /18} & { 1/6} \\ \end{array}} \right]{\bf{x}} + \left[ {\begin{array}{*{20}{c}} {1/3} \\ {0} \\ \end{array}} \right]\)
 
   scale by \(1/ (3 \sqrt 3) \), rotate by 30°

IFSsnowflake13
[Enlarge (5 iterations)]

Notice that in this version we have 13 self-similar non-overlapping copies of the snowflake. Seven copies are scaled by 1/3 and six copies are scaled by \(1/ \left( 3 \sqrt 3 \right) \). By Moran's Equation the similarity dimension d must satisfy

\[1 = 7{\left( {\frac{1}{3}} \right)^d} + 6{\left( {\frac{1}{{3 \sqrt 3 }}} \right)^d}\]

and again the unique solution to this equation is d = 2.

These two iterated function systems are based on Benoit Mandelbrot's solution to creating Peano curves to fill the Koch snowflake (what Mandelbrot called the "snowflake sweeps").

 

References

  1. Mandelbrot, Benoit. The Fractal Geometry of Nature, W.H. Freeman and Co. 1983. [Preview available at Google Books]