• The Pharaoh's Breastplate IFS defintion challenge

    From Roger Bagula@21:1/5 to All on Thu Sep 24 14:03:40 2015
    Back a few years I challenged people to
    give an actual algorithmic IFS for the Mandelbrot book cover: http://mathweb.scranton.edu/monks/pubs/pharaoh/pharaoh.html

    Back in 2002 and 2004 I failed even with Dr. Ken Monks' circle drawing definition in hand.
    The main reason was that you actually need the Klein group
    to get a good algorithm.

    My efforts have yielded some results. https://lh5.googleusercontent.com/-tjrQm_ICW-I/VgRjNkwIhdI/AAAAAAAAnso/NFisSPGgC9U/w610-h534-no/IFS_4part_Apollonian_strip_xequalssqrt5_inversion_3000000.png

    Still not perfect,
    but much closer:

    The first important thing that this IFS version seems to show is that
    the circles drawing approach is not giving the actually Klein group limit set ( the spiraling sections are left out).
    The Ken Monks picture is appears to be a bad approximation of the actual Klein group?!
    Now, why would that be important in a Mathematical sense?

    (* mathematica*)
    (* Klein group from Indra's Pearl's page 265*)
    (* Gaussian sphere projections*)
    Clear[f, dlst, pt, cr, ptlst, ptlst2, cr2]
    dlst = Table[ Random[Integer, {1, 4}], {n, 3000000}];
    allColors = ColorData["Legacy"][[3, 1]];
    firstCols = {"Tomato", "DeepNaplesYellow", "DodgerBlue", "Cyan", "Red",
    "Blue", "DeepNaplesYellow", "Green", "Magenta", "DarkOrchid",
    "LightSalmon", "LightPink", "Sienna", "Green", "Mint", "DarkSlateGray",
    "ManganeseBlue", "SlateGray", "DarkOrange", "MistyRose",
    "DeepNaplesYellow", "GoldOchre", "SapGreen", "Yellow", "LimeGreen"};
    cols = ColorData["Legacy", #] & /@
    Join[firstCols, Complement[allColors, firstCols]];
    s = Sqrt[3];
    z = x + I*y;
    (* Klein group {a,b} generators*)
    f1a[z_] = ComplexExpand[ z/(-2*I*z + 1)];
    f2a[z_] = ComplexExpand[ ((1 - I)*z + 1)/(z + (1 + I))];

    (* projection {a,b,a^(-1),b^(-1)}*)

    f[1, {x_, y_}] = N[{-Re[f2a[z]], -Im[f2a[z]]}];
    f[2, {x_,
    y_}] = (N[{Re[f1a[z]],
    Im[f1a[z]]}/({Re[f1a[z]], Im[f1a[z]]}.{Re[f1a[z]], Im[f1a[z]]})]);
    f[3, {x_, y_}] =
    N[{Re[f2a[z]],
    Im[f2a[z]]}/({Re[f2a[z]], Im[f2a[z]]}.{Re[f2a[z]], Im[f2a[z]]})];
    f[4, {x_, y_}] = N[{-Re[f1a[z]], -Im[f1a[z]]}];


    pt = {0.5, 0.5};
    cr[n_] := cr[n] = cols[[12 + n]]
    cr2[n_] := cr2[n] = cols[[4 + n]]
    cr3[n_] := cr3[n] = cols[[8 + n]]
    cr4[n_] := cr4[n] = cols[[n]]
    aa = Table[pt = f[dlst[[j]], pt], {j, Length[dlst]}];
    dd = Table[{aa[[i,
    2]]/(1 + {aa[[i, 1]] + Sqrt[5], aa[[i, 2]]}.{aa[[i, 1]] + Sqrt[5],
    aa[[i, 2]]}), (Sqrt[5] +
    aa[[i, 1]])/(1 + {aa[[i, 1]] + Sqrt[5],
    aa[[i, 2]]}.{aa[[i, 1]] + Sqrt[5], aa[[i, 2]]})}, {i, Length[aa]}]; dd1 = Table[{-aa[[i,
    2]]/(1 + {aa[[i, 1]] + Sqrt[5], aa[[i, 2]]}.{aa[[i, 1]] + Sqrt[5],
    aa[[i, 2]]}), (Sqrt[5] +
    aa[[i, 1]])/(1 + {aa[[i, 1]] + Sqrt[5],
    aa[[i, 2]]}.{aa[[i, 1]] + Sqrt[5], aa[[i, 2]]})}, {i, Length[aa]}]; ListPlot[{dd, dd1}, PlotStyle -> {PointSize -> 0.001, {Red, Blue}},
    PlotRange -> All]
    ptlst4 :=
    Point[Developer`ToPackedArray[dd],
    VertexColors -> Developer`ToPackedArray[cr4 /@ dlst]];
    ptlst5 :=
    Point[Developer`ToPackedArray[dd1],
    VertexColors -> Developer`ToPackedArray[cr2 /@ dlst]];
    g4 = Graphics[{PointSize[.001], ptlst4, ptlst5}, AspectRatio -> Automatic,
    PlotRange -> {{-0.4, 0.4}, {-0.1, 0.6}}, ImageSize -> 1000]

    (* end*)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)