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...

The structure of the first frame was created by going one step along into one of the neighbouring double spirals; if the angle is n/10 this affects the period by p->2p+30. If the angle is say n/8, I suspect the period would change by p->2p+24; for angle n/7 by p->2p+21, etc. So maybe I can rescue this animation concept after all:

0. calculate external angle of prefix as .({011,100}^8 0111) (256 locations)
1. calculate angled internal address of prefix from external angle of prefix
2. extract the angle at 1 1/2 2 1/2 3 n/q
3. build the suffix by repetitions of (p-2) 1/2 (p-1) 1/2 p 1/3 2p+3q-2 1/2 2p+3q-1 1/2 2p+3q 1/3 ...

Not sure if this will be sufficient, as some of the hairs come off grandchild bulbs with more than one non-1/2 angle..

It wasn't the grandchild-bulbs causing issues, it was naivety that the address patterns would be so simple. Suppose the address starts:

1 2 3 p/q ... 28 ...

If 3q > 28, then the first ... is empty, but if 3q < 28 then 3q appears in the address. When 3q is not in the address (the case I started with, turns out to be rare) then the address pattern is as described above.

When 3q is in the address it's much simpler: after the 28 comes 1/2 28+3q, then after that the pattern is ... p 1/3 2p+3q 1/3 ...

I think. I need to actually render all the corresponding images to check that it is correct...

Nice, this works.

The alignment code needs to be adjusted. For an address with patterns ending ... M 1/3 ... N, the nodes to align with have period M+N. So I'll extend the Haskell code to dump that out too, then import it in a small C program to do the aligning. Good viewport zoom factor was 2 / (10 * atom domain size ** 1.125), this will be tweaked and rotated so the alignment nodes are fixed in screenspace.

Animation may end up a bit stroboscopic all the same, as branching order changes quite often.

quite pleased with parts of this, though when the number of branches jumps a few times in quick succession it's a bit annoying. maybe i can ping-pong some of the longer sections (corresponding to the 1/3, 1/2, 2/3 child bulbs)

`paste` is my new favourite command line tool, along with `parallel -k`. Here I use it to add columns to a table. It's annoying that you can't replace the file you're reading from all in one operation, but I suppose it's good to have copies in case of a crash or power failure etc.

```
#!/bin/bash
prec=1000
cat a.txt | while read ray period node ; do echo "m-exray-in 100 '\${ray}' 8 \$((2 * 8 * \${period}))" ; done | parallel -k | paste a.txt - | tee b.txt
cat b.txt | while read ray period node re im ; do echo m-nucleus \$prec \$re \$im \$period 64 1 ; done | parallel -k | paste b.txt - | tee c.txt
cat c.txt | while read ray period node ere eim nre nim; do echo m-domain-size \$prec \$nre \$nim \$period ; done | parallel -k | paste c.txt - | tee d.txt
cat d.txt | while read ray period node ere eim nre nim ds ; do echo \$ds ; done | ghc -e "interact \$ unlines . map (show . (\s -> 2 / (10 * s**1.125)) . read) . lines" | paste d.txt - | tee e.txt
cat -n e.txt | while read n ray period node ere eim nre nim ds zoom ; do echo -e "Re: \$nre\r\nIm: \$nim\r\nZoom: \$zoom\r" | m-align-nodes \${node} > \$(printf %04d.kfr \$n) ; done
for i in ????.kfr ; do kf.x86_64.exe -s settings.kfs -l "\$i" -c palette.kfp -t "\$i.tif" 2>&1 | grep -v fix ; done
```

· · Web · · ·

Welcome to post.lurk.org, an instance for discussions around cultural freedom, experimental, new media art, net and computational culture, and things like that.