Currently investigating in in the set. Have rediscovered (I had forgotten) that the complex dynamics of a pre-periodic point under z→z²+c don't necessarily exactly match the dynamics of its rays under angle doubling (but there is a relationship).

For example: take an embedded Julia set with 5-fold hubs, with an influencing island of period 3. Then the main tips of the EJS where two rays land have period 3 (both point and rays), but the hubs with five spokes have period 3 in complex dynamics, but period 15 = 3 × 5 in ray dynamics.

What I'm doing now is tracing some of the rays to calculate their binary expansions, to see how they are made up from the blocks of digits from the influencing island and central island.

Later I want to see how the external angles are related when moving about inside the structure of an embedded Julia set in different ways.

Example diagram, the rays (black lines extending from infinity to the fractal in dark grey), ordered from least to greatest (anti-clockwise from bottom right) have external angles expressed in binary with .preperiodic(periodic) parts:

```
.01110001110001101101(110)
.0111000111000110110111(011011100011100)
.0111000111000110110111(011100011011100)
.(0111000111000110110111)
.01110001110001101101(110111000111000)
.01110001110001101101(111000110111000)
.01110001110001101101(111000111000110)
.0111000111000110110111(100)
.0111000111000110111000(011)
.01110001110001101110(000110111000111)
.01110001110001101110(000111000110111)
.(0111000111000110111000)
.0111000111000110111000(011100011100011)
.0111000111000110111000(100011011100011)
.0111000111000110111000(100011100011011)
.01110001110001101110(001)
```

The influencing island has period 3, with external angles `.(011) .(100)`. The central island has period 22 (external angles above), and is in the hair at the tip of the most-clockwise spoke of the 2/5 bulb of the period 3 island. Its angled internal address is 1_1/2->2_1/2->3_2/5->15_1/2->22.

Replacing the periodic binary strings of the central island with (O,I) and those of the influencing island with (o,i), the patterns are much more obvious. (let me know if case sensitivity is an issue for you)

The tips are made with the preperiodic part from the central island's periodic part, and the periodic part made from the influencing island.

The hubs' periodic parts are all cyclic shifts of (ooioi), which are related to the external angles of the 2/5 bulb of the main Mandelbrot set (they are (.(01001), .(01010)) which are cyclic shifts of the same pattern).

```
.O(o)
.O(ooioi)
.O(oiooi)
.(O)
.O(oioio)
.O(iooio)
.O(ioioo)
.O(i)
.I(o)
.I(ooioi)
.I(oiooi)
.(I)
.I(oioio)
.I(iooio)
.I(ioioo)
.I(i)
```

Follow

Note that the ray preperiods in the previous two posts are different. The previous post has the semantic relationship of construction, while the post before that has the dynamics - the ray preperiods are sometimes shorter because the end of the pre-periodic part matches the end of the periodic part, so the periodic part can be shifted forwards. And the diagram has the (pre)periods of the complex dynamics, which may be different again...

Another example:

Angled internal address:
1_1/3->3_1/2->4_1/5->20_1/2->29

Components:
```
influencing island
o = .(0011)
i = .(0100)
1/5 bulb
b = .(00001)
B = .(00010)
central island
O = .(00110011001100110100001100111)
I = .(00110011001100110100001101000)
```

rays of interest:
```
.(O)
.(I)
.O(o)
.O(i)
.I(o)
.I(i)
.O(ooooi)
.O(oooio)
.O(ooioo)
.O(oiooo)
.O(ioooo)
.I(ooooi)
.I(oooio)
.I(ooioo)
.I(oiooo)
.I(ioooo)
```

which become:
```
.(00110011001100110100001100111)
.(00110011001100110100001101000)
.001100110011001101000011001(1100)
.00110011001100110100001100111(0100)
.00110011001100110100001101000(0011)
.001100110011001101000011010(0001)
.00110011001100110100001100111(00110011001100110100)
.001100110011001101000011001(11001100110011010000)
.001100110011001101000011001(11001100110100001100)
.001100110011001101000011001(11001101000011001100)
.001100110011001101000011001(11010000110011001100)
.001100110011001101000011010(00001100110011001101)
.00110011001100110100001101000(00110011001101000011)
.00110011001100110100001101000(00110011010000110011)
.00110011001100110100001101000(00110100001100110011)
.00110011001100110100001101000(01000011001100110011)
```

Now imagine moving from the bottom 28p4 hub towards the bottom right 30p4 tip, via the main hub in between at each step. The tip has rays
.O(i)
.I(o)
and the initial hub has rays
.O(oooio)
.O(ooioo)
.O(oiooo)
.O(ioooo)
.I(ooooi)
Each next hub along has preperiod 4 higher, and in the limit the rays of the hub must approximate the rays of the tip, so it makes sense to append an 'i' or 'o' to the preperiodic part depending if the hub's ray is above or below the tip. Thus the next hub along has rays
.Oi(oooio)
.Oi(ooioo)
.Oi(oiooo)
.Oi(ioooo)
.Io(ooooi)
and the next
.Oii(oooio)
.Oii(ooioo)
.Oii(oiooo)
.Oii(ioooo)
.Ioo(ooooi)
and the next
.Oiii(oooio)
.Oiii(ooioo)
.Oiii(oiooo)
.Oiii(ioooo)
.Iooo(ooooi)
and so on. In the limit an infinite number of i or o will be inserted, so the remainder is never reached, and the periodic part is just (i) or (o).

The tip at the other end (the side closer to the main body of the set) has rays
.O(o)
.I(i)
and the initial hub has rays
.O(ooooi)
.I(oooio)
.I(ooioo)
.I(oiooo)
.I(ioooo)
and moving towards the tip gives
.Oo(ooooi)
.Ii(oooio)
.Ii(ooioo)
.Ii(oiooo)
.Ii(ioooo)
followed by
.Ooo(ooooi)
.Iii(oooio)
.Iii(ooioo)
.Iii(oiooo)
.Iii(ioooo)
and so on.

Trying to analyse the patterns in the external angles of hubs heading towards the other tips of the spokes:

```
-- influencing island p4
o = .(0011)
i = .(0100)
-- central island p29
O = .(00110011001100110100001100111)
I = .(00110011001100110100001101000)
-- bulb 1/5
b = .(00001)
B = .(00010)
-- main inner hub
.O(ooooi)
.I(oooio)
.I(ooioo)
.I(oiooo)
.I(ioooo)
-- spoke one (towards inner tip)
.O(o)
.I(i)
.Oo(ooooi)
.Ii(oooio)
.Ii(ooioo)
.Ii(oiooo)
.Ii(ioooo)
-- spoke two
.Io(i)
.Ii(o)
.Ioi(oooio)
.Ioi(ooioo)
.Ioi(oiooo)
.Ioi(ioooo)
.Iio(ooooi)
-- spoke three
.Ioo(i)
.Ioi(o)
.Iooi(oooio)
.Iooi(ooioo)
.Iooi(oiooo)
.Iooi(ioooo)
.Ioio(ooooi)
-- spoke four
.Iooo(i)
.Iooi(o)
.Ioooi(oooio)
.Ioooi(ooioo)
.Ioooi(oiooo)
.Ioooi(ioooo)
.Iooio(ooooi)
-- spoke five (towards central island)
.Ioooo(i)
.Ioooi(o)
.Oooooi(oooio)
.Oooooi(ooioo)
.Iooooi(oiooo)
.Iooooi(ioooo)
.Ioooio(ooooi)
```

Spoke one is discussed in the previous post in this thread.

Spokes two, three, four seem to be something like: if the last part of the periodic part of the hub is i (resp. o) take the preperiodic part of the tip with periodic part (i) (resp. (o)) and append o (resp. i) combining with the periodic part of the hub.

Continuing along a spoke in the same direction means going along spoke one of each next hub.

Spoke five needs more thought.

Ordering rays to see how to construct the tip rays (one letter inside ()) from their neighbouring hub rays (five letters inside ()).
```
. O(o) -- one lo
. O(o o o o i)
.(O) -- central lo
.(I) -- central hi
. I o o o o(i) -- five lo
. I o o o i(o) -- five hi
. I(o o o i o)
. I o o o(i) -- four lo
. I o o i(o) -- four hi
. I(o o i o o)
. I o o(i) -- three lo
. I o i(o) -- three hi
. I(o i o o o)
. I o(i) -- two lo
. I i(o) -- two hi
. I(i o o o o)
. I(i) -- one hi
```
The pattern seems to be "match longest prefix of neighbouring hub rays, then append o(i) and i(o). Except for spoke five. Needs to be verified for other locations, just in case it is a fluke.

This is reminiscent of my 2013 blog posts about in the set:

navigating by spokes: mathr.co.uk/blog/2013-02-01_na
> The tip of each spoke is the longest matching prefix of neighbouring angles, with 1 appended.

islands in the hairs:
mathr.co.uk/blog/2013-10-02_is
> Actually, a finite binary expansion is really an infinite binary expansion, ending in an infinite string of 0s. But there's another infinite binary expansion for each number ending in infinite 0s, that ends in an infinite string of 1s: .xyz1000... = .xyz0111...

By the tuning algorithm 1(0) and 0(1) become i(o) and o(i), I suppose.

Uploaded a 10min silent of me operating my `m-perturbator-gtk` GUI for exploring and annotating the set. There are still some annoying bugs (annotation sorting/ordering is mildly inconvenient, sometimes it crashes when zooming which is a big big pain as there is no autosave yet).

1080p video link (43MB):
mathr.co.uk/mandelbrot/2019-10

This version of the program has some local changes to the code from my public repositories, will push soon.

on (derivative distributions may also work, other distros may need tweaks). Installs into ~/opt by default, you can change that with make options (e.g. `make -C c/lib install prefix=~/fantastic-software/`).

```
sudo apt install git build-essential libpari-dev libmpc-dev libgtk-3-dev libsndfile-dev libglfw3-dev libglew-dev
mkdir -p ~/opt/src
cd ~/opt/src/
git clone code.mathr.co.uk/mandelbrot-sy
git clone code.mathr.co.uk/mandelbrot-nu
git clone code.mathr.co.uk/mandelbrot-pe
cd ~/opt/src/mandelbrot-symbolics
make -C c/lib/ install
make -C c/bin/ install
cd ~/opt/src/mandelbrot-numerics
make -C c/lib/ install
make -C c/bin/ install
cd ~/opt/src/mandelbrot-perturbator
make -C c/lib/ install
make -C c/bin/ install
cd
LD_LIBRARY_PATH=~/opt/lib ~/opt/bin/m-perturbator-gtk
```

I tested the build process in a chroot (which grew to 1.2GB), but I haven't figured out how to run graphical applications from a chroot yet.

I fixed the crash (race condition caused by freeing something in the wrong (non-GTK) thread), and improved the sort ordering too.

Also added an automatic dynamic level of detail feature for the annotations, so when you zoom out you don't get a mess of unreadable overlapping text. Not perfect yet (the rays still bunch up heavily) but better than before.

Sign in to participate in the conversation
post.lurk.org

Hometown is adapted from Mastodon, a decentralized social network with no ads, no corporate surveillance, and ethical design.