working on another fractal animation, this time a julia morph orbiting in the hairs of an island. no clue yet if it will turn out any good...

current progress:

- found the angled internal address for one exemplar by tracing a ray outwards in mandelbrot-perturbator-gtk

- found a pattern for the external angles of the prefix, by tracing a few more rays outwards (much shallower) and comparing the binary strings

- wrote some haskell to combine the prefixes with the suffix of the examplar address, and compute one of the corresponding external angle pairs

- now tracing the rays to end-points in parallel:

```

cat rays.txt | parallel -k m-exray-in 100 "{}" 8 $((2 * 8 * 1378)) | tee -a endpoints.txt

```

- a total of 256 rays on 16 threads, ETA about 1h30 wall-clock (plus the 20mins done already)

...and results are in: it doesn't work as an animation at all, frames are seemingly unconnected. I guess pasting a different prefix onto an angled internal address does not do anything useful structurally, even though it happened to give valid addresses in this instance.

The first 3 prefixes were 1 1/2 2 1/2 3 followed by:

- 1/10 28

- 1/8 24 1/2 28

- 1/7 21 1/2 28

where the first is what I designed, and the other 2 are extrapolated. I think the change of /10 to /8 and /7 messed up the structural assumptions of the suffix, which was

1/2 56 1/2 57 1/2 58 1/3 144 1/2 145 1/2 146 1/3 320 ... 1378

In particular the influencing island had period 3 and the influencing angle was n/10, so 3*10=30 aligned nicely with the repeated structure of p->2p+30 in the angled internal addresses; while the non-n/10 addresses are forced/unrelated so don't look as good...

Show thread

Follow

Haskell implementation of previous toot:

```

main = writeFile "rays.txt" . unlines . map (\prefix ->

let Just addressPrefix@(Sym.Angled 1 _ (Sym.Angled 2 _ (Sym.Angled 3 pq _))) = (Sym.angledAddress . Sym.rational) =<< Txt.parse prefix

addressSuffix (Sym.Angled p t a) = Sym.Angled p t (addressSuffix a)

addressSuffix (Sym.Unangled p) = Sym.Angled p (1 Sym.% 2) (go 4 (2 * p))

where

go 0 p = Sym.Angled p (1 Sym.% 2) (Sym.Angled (p + 1) (1 Sym.% 2) (Sym.Unangled (p + 2)))

go n p = Sym.Angled p (1 Sym.% 2) (Sym.Angled (p + 1) (1 Sym.% 2) (Sym.Angled (p + 2) (1 Sym.% 3) (go (n - 1) (2 * (p + 2) + m - 2))))

m = 3 * fromIntegral (Sym.denominator pq)

address = addressSuffix addressPrefix

Just ray = Txt.plain . Sym.binary . fst <$> Sym.addressAngles address

in ray) $ prefixes

where

lo = "011"

hi = "100"

prefixes = (".(" ++) . (++ "0111)") . concat <$> replicateM 8 [lo, hi]

```

claude@mathr@post.lurk.orgBash script to trace all the rays (they have different periods now which complicates things, optimal ray tracing depth generally depends on period; next stage after this will be Newton's method to find the center and that explicitly needs the period):

```

cat rays.txt |

while read ray

do

period=$(( $(echo "$ray" | wc -c) - 4 ))

echo m-exray-in 100 "'${ray}'" 8 "$((2 * 8 * $period))"

done |

parallel -k |

tee -a endpoints.txt

```

note double and single quotes around ${ray}, otherwise the () in the string are interpreted by bash -c within parallel and that breaks everything (syntax error)