Klein-Fricke inversion fractals of the triangle

Read about these here. and here, and here. A point can be inverted to a circle. If there are several circles, you can continue by inverting the resulting points to the same circles. If there are two circles the pattern will be a few points. If three circles they will be an infinite number of point on the orthogonal circle of the original circles. If four or more circles, the pattern is in general a fractal.

Klein and Fricke first investigated this resulting is a famous fractal curve, one of the first fractal curves every displayed. But the curve was too complicated for them to discover and 85 years later Mandelbroid published an equally famous correction. Both are shown here.

An excellent description of both this history and the mathematics is found in Mandelbroit's The Fractal Geometry of Nature.

[Graphics:HTMLFiles/index_1.gif]


These inversion fractals clearly happen in triangle geometry and these pages show some of them.

The Circles

Here we define the data structures for the four incircles and the nine point circle. io, ia, ib, and ic are the barycentric coordinates of the four incenters. b2x converts from barycentric to rectangular coordinates.

circ1 = {b2x[io], area/s} ;

circ2 = {b2x[ia], area/(s - a)} ;

circ3 = {b2x[ib], area/(s - b)} ;

circ4 = {b2x[ic], area/(s - c)} ; circ5 = {b2x[ninecenter], (b)/Sin[angleB]/4} ;

In[485]:=

circ5 = {b2x[circumcenter//.rules3], (b)/Sin[angleB]/2} ;

In[410]:=

ninecenter = nineptcenter//.rules3

Out[410]=

{220., 190., 170.}

Here we check to see that the circles are correct.

In[475]:=

Show[interior, Graphics[{Circle @@ circ1, Circle @@ circ2, Circle @@ circ3, Circle @@ circ4, Circle @@ circ5}], AspectRatio→Automatic] ;

[Graphics:HTMLFiles/index_10.gif]

Invert to circles

Here we take a point and invert it to 4 circles, producing 4 new points.

In[438]:=

invert4[pt_] := {invertPoint2Circle[pt, circ1], invertPoint2Circle[pt, circ2], invertPoint2Circle[pt, circ3], invertPoint2Circle[pt, circ4]}

Here we invert to 5 circles.

In[414]:=

invert5[pt_] := {invertPoint2Circle[pt, circ1], invertPoint2Circle[pt, circ2], invertPoint2Circle[pt, circ3], invertPoint2Circle[pt, circ4], invertPoint2Circle[pt, circ5]}

This applies the above to a list of points, resulting in a larger list of point.

In[391]:=

invertall[list_] := Module[{l}, l = invert5 /@ list ; Flatten[l, Depth[l] - 3]]



4 incircles and 9 point circle

Here we apply the inversions 9 deep, giving the result a name so we can plot it.

In[480]:=

p = Nest[invertall, {3., -5.}, 9]//Union ;

fractal = Show[interior, Graphics[{Circle @@ circ1, Circle @@ circ2, Circle @@ circ3, Circle @@ circ4, Circle @@ circ5}], Graphics[{PointSize[.001], Point/@ p}], AspectRatio→Automatic] ;

[Graphics:HTMLFiles/index_16.gif]

Now zoom in on the central region.

In[482]:=

Show[fractal, PlotRange→Transpose[{{-0.345221, 1}, {1.9684, -1.26703}}] ]

[Graphics:HTMLFiles/index_18.gif]

4 incircles and circumcircle

We compute the fractal 9 levels, or 9 iteratins, deep. Here the 5 circles are the 4 incircle and the circumcircle.

In[486]:=

p = Nest[invertall, {3., -5.}, 9]//Union ;

In[487]:=

cfractal = Show[interior, Graphics[{Circle @@ circ1, Circle @@ circ2, Circle @@ circ3, Circle @@ circ4, Circle @@ circ5}], Graphics[{PointSize[.001], Point/@ p}], AspectRatio→Automatic] ;

[Graphics:HTMLFiles/index_22.gif]

In[488]:=

Show[cfractal, PlotRange→Transpose[{{-8.65646, 8.48934}, {6.67013, -8}}], AspectRatio→Automatic] ;

[Graphics:HTMLFiles/index_24.gif]

In[489]:=

Show[cfractal, PlotRange→Transpose[{{-1.88881, -0.968262}, {2.22889, 2.08944}}], AspectRatio→Automatic] ;

[Graphics:HTMLFiles/index_26.gif]

In[490]:=

Show[cfractal, PlotRange→Transpose[{{-2.25574, -4.47443}, {1.16889, -2.27288}}], AspectRatio→Automatic] ;

[Graphics:HTMLFiles/index_28.gif]


Created by Mathematica  (June 24, 2006) Valid XHTML 1.1!