No. This is why I hate calling these functions "curves". They map closed intervals onto closed areas of C. This is why they are dense with double and triple points. --rwg On 2016-08-22 16:20, James Propp wrote:
I misunderstood what game you all were playing, so my question was a bit off base.
Joerg and Bill et al. are looking at ways to fill all of a discrete plane; I was thinking more about Peano curves and the like, which fill a finite portion of a continuous plane.
Jim
On Monday, August 22, 2016, James Propp <jamespropp@gmail.com> wrote:
Mulling over what it might mean to say that a spacefilling curve lives on a grid, I came up with a nonstandard topology to put on R^2.
The basic open sets are open line segments. This is a finer topology than the standard one. What mappings from [0,1] into R^2 are continuous in this topology? Piecewise-polygonal ones; what else? Does this topology have any uses?
But this doesn't address the question that started me down this line of thought, namely: what might it mean to say that a spacefilling curve lives on a grid, or prefers certain directions? The approximating polygonal curves may use only certain directions, but how does this property manifest itself with regard to the limit-object?
Jim Propp
On Mon, Aug 22, 2016 at 3:26 AM, Joerg Arndt <arndt@jjj.de <javascript:_e(%7B%7D,'cvml','arndt@jjj.de');>> wrote:
For similar curves (that exist for orders that are odd squares) on the (3.6.3.6)-grid see http://jjj.de/3frac/p6/all-r25-b-curve-decompositions.pdf (last two pages) and http://jjj.de/3frac/p6/all-r25-b-tiles.pdf (last four pages).
Sextuple and triple points are easy to see in these.
I cannot decode the Mathca, does you curve live on the (3.6.3.6)-grid as well (morally it should)?
Best regards, jj
* Bill Gosper <billgosper@gmail.com <javascript:_e(%7B%7D,'cvml','billgosper@gmail.com');>> [Aug 22. 2016 08:17]:
using a 25-way conditional. ClearAll[piecewiserecursivefractal]; piecewiserecursivefractal[x_, f_, which_, iters_, fns_] := piecewiserecursivefractal[x, g_, which, iters, fns] = ((piecewiserecursivefractal[x, h_, which, iters, fns] := Block[{y}, y /. Solve[f[y] == h[y], y]]); Union @@ ((fns[[#]] /@piecewiserecursivefractal[iters[[#]][x], Composition[f, fns[[#]]], which, iters, fns]) & /@which[x]));
(I cannot praise this function enough.)
In[363]:= trifil25[t_] := piecewiserecursivefractal[t, Identity, Piecewise[{{{1}, #1 == 0}, {{Ceiling[25*#1]}, Inequality[0, Less, #1, LessEqual, 1]}}, {}] & , {25*#1 + 0 & , -25*#1 + 2 & , 25*#1 - 2 & , 25*#1 - 3 & , 25*#1 - 4 & , 25*#1 - 5 & , 25*#1 - 6 & , 25*#1 - 7 & , 25*#1 - 8 & , -25*#1 + 10 & , -25*#1 + 11 & , 25*#1 - 11 & , -25*#1 + 13 & , -25*#1 + 14 & , 25*#1 - 14 & , -25*#1 + 16 & , 25*#1 - 16 & , -25*#1 + 18 & , 25*#1 - 18 & , 25*#1 - 19 & , -25*#1 + 21 & , -25*#1 + 22 & , 25*#1 - 22 & , -25*#1 + 24 & , 25*#1 - 24 & }, {#1/5 & , (1/10)*(3 + I*Sqrt[3] + (-1 - I*Sqrt[3])* #1) & , (1/10)*(3 + I*Sqrt[3] + #1 - I*Sqrt[3]*#1) & , (2 + #1)/5 & , (1/10)*(6 + #1 + I*Sqrt[3]*#1) & , (1/10)*(7 + I*Sqrt[3] + I*(I + Sqrt[3])*#1) & , (1/5)*(3 + I*Sqrt[3] - #1) & , (1/10)*(4 + 2*I*Sqrt[3] + (-1 - I*Sqrt[3])*#1) & , (1/10)*(3 + I*Sqrt[3] - 2*#1) & , (-(1/10))*I*(-I + Sqrt[3])*(-2 + #1) & , (1/5)*(2 + I*Sqrt[3] - #1) & , (1/5)*(2 + I*Sqrt[3] + #1) & , (1/10)*(5 + 3*I*Sqrt[3] + #1 - I*Sqrt[3]*#1) & , (1/10)*(4 + 2*I*Sqrt[3] + #1 + I*Sqrt[3]*#1) & , (1/10)*(4 + 2*I*Sqrt[3] + I*(I + Sqrt[3])*#1) & , (-(1/10))*I*(-I + Sqrt[3])*(-4 + #1) & , (1/5)*(2 + 2*I*Sqrt[3] + #1) & , (1/10)*(5 + 3*I*Sqrt[3] + #1 + I*Sqrt[3]*#1) & , (1/10)*(5 + 3*I*Sqrt[3] + 2*#1) & , (1/10)*(7 + 3*I*Sqrt[3] + (-1 - I*Sqrt[3])*#1) & , (1/5)*(4 + I*Sqrt[3] - #1) & , (1/10)*(9 + I*Sqrt[3] + I*(I + Sqrt[3])*#1) & , (1/10)*(9 + I*Sqrt[3] - 2*#1) & , (1/10)*(8 + I*(I + Sqrt[3])*#1) & , (4 + #1)/5 & }][[1]] E.g., In[361]:= trifil25[2/25 + 2/75] // ComplexExpand
Out[361]= {1/2 + (I Sqrt[3])/10}
In[367]:= Graphics[{Hue@#, Line[ReIm@{trifil25@#, trifil25[# + 5^-5]}]} & /@ Range[0, 1 - 5^-5, 5^-5]] gosper.org/trifil25.png (Those little white hexagons are sextuple points.)
The inverse fractal, constructed more or less automatically: In[380]:= untrifil25[t_] := piecewiserecursivefractal[t, Identity, If[0 <= Re[#1] <= 1 && 0 <= Im[#1] <= Sqrt[3]/2, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25}, {}] &, {ComplexExpand[5 #1] &, ComplexExpand[1/4 (6 - 2 I Sqrt[3] - 10 #1 + 10 I Sqrt[3] #1)] &, ComplexExpand[1/4 (-4 I Sqrt[3] + 10 #1 + 10 I Sqrt[3] #1)] &, ComplexExpand[-2 + 5 #1] &, ComplexExpand[1/4 (-6 + 6 I Sqrt[3] + 10 #1 - 10 I Sqrt[3] #1)] &, ComplexExpand[1/4 (4 + 8 I Sqrt[3] - 10 #1 - 10 I Sqrt[3] #1)] &, ComplexExpand[3 + I Sqrt[3] - 5 #1] &, ComplexExpand[1/4 (10 - 2 I Sqrt[3] - 10 #1 + 10 I Sqrt[3] #1)] &, ComplexExpand[1/2 (3 + I Sqrt[3] - 10 #1)] &, ComplexExpand[1/4 (8 - 10 #1 + 10 I Sqrt[3] #1)] &, ComplexExpand[2 + I Sqrt[3] - 5 #1] &, ComplexExpand[-2 - I Sqrt[3] + 5 #1] &, ComplexExpand[1/4 (4 - 8 I Sqrt[3] + 10 #1 + 10 I Sqrt[3] #1)] &, ComplexExpand[1/4 (-10 + 2 I Sqrt[3] + 10 #1 - 10 I Sqrt[3] #1)] &, ComplexExpand[1/4 (-2 + 6 I Sqrt[3] - 10 #1 - 10 I Sqrt[3] #1)] &, ComplexExpand[1/4 (16 - 10 #1 + 10 I Sqrt[3] #1)] &, ComplexExpand[-2 - 2 I Sqrt[3] + 5 #1] &, ComplexExpand[1/4 (-14 + 2 I Sqrt[3] + 10 #1 - 10 I Sqrt[3] #1)] &, ComplexExpand[1/2 (-3 I Sqrt[3] + 5 (-1 + 2 #1))] &, ComplexExpand[1/4 (16 - 4 I Sqrt[3] - 10 #1 + 10 I Sqrt[3] #1)] &, ComplexExpand[4 + I Sqrt[3] - 5 #1] &, ComplexExpand[1/4 (6 + 10 I Sqrt[3] - 10 #1 - 10 I Sqrt[3] #1)] &, ComplexExpand[1/2 (9 + I Sqrt[3] - 10 #1)] &, ComplexExpand[1/4 (8 + 8 I Sqrt[3] - 10 #1 - 10 I Sqrt[3] #1)] &, ComplexExpand[-4 + 5 #1] &}, {#1/25 &, (2 - #1)/25 &, (2 + #1)/ 25 &, (3 + #1)/25 &, (4 + #1)/25 &, (5 + #1)/25 &, (6 + #1)/ 25 &, (7 + #1)/25 &, (8 + #1)/25 &, (10 - #1)/25 &, (11 - #1)/ 25 &, (11 + #1)/25 &, (13 - #1)/25 &, (14 - #1)/25 &, (14 + #1)/ 25 &, (16 - #1)/25 &, (16 + #1)/25 &, (18 - #1)/25 &, (18 + #1)/ 25 &, (19 + #1)/25 &, (21 - #1)/25 &, (22 - #1)/25 &, (22 + #1)/ 25 &, (24 - #1)/25 &, (24 + #1)/25 &}]
Here it finds the preimages of the simplest sextuple point:
In[381]:= untrifil25[1/2 + I Sqrt[3]/10]
Out[381]= {8/75, 11/75, 14/75, 17/75, 4/15, 23/75} --rwg