There is a conformal map between the complement of the Mandelbrot set and the complement of the unit disk. Straight lines through the origin from infinity landing on the boundary of the unit disk are mapped to external rays from infinity landing on the boundary of the Mandelbrot set. The angle of the original straight line measured in circle turns (a real number in \([0,1)\) is the external angle of the ray landing on the boundary of the Mandelbrot set.

For \(|z| >> |c|\) the iterative equation \(z \to z^2 + c\) defining the Mandelbrot set is related to the angle doubling map \(t \to 2 t \mod 1\). The \(2\) means it is much more useful to express external angles in binary form. All rational external angles have an eventually periodic binary expansion, and only those with an even denominator have a pre-periodic part. For uniformity, I consider terminating binary expansions to have a period of 1 consisting of 0. A couple of simple examples: \(\frac{1}{2} = .1(0)\), \(\frac{1}{3} = .(01)\), where the periodic part is in (parentheses). Irrational external angles have no repeats, and are not considered in this blog post.

Periodic external angles have rays landing on the roots of hyperbolic components (solid regions resembling cardioids or circles) whose center is periodic with the same period. These rays land in pairs, one from the lower side and one from the upper side. The special case of the period 1 cardioid has only one distinct external angle \(.(0)\), though in some circumstances it can be useful to have a phantom ray at angle \(.(1)\). For example, the two rays \(.(01)\) and \(.(10)\) have period \(2\) and land at \(-0.75\), which is the root of the component with center \(-1\), and checking that the center has period \(2\) is simple: \((0^2 + -1)^2 + -1 = 0\).

Pre-periodic external angles have rays landing on Misiurewicz points. For example the external angle \(.1(0)\) has pre-period \(1\) and period \(1\), and it lands on the point \(-2\) whose iterates are \(0, -2, 2, 2, ...\), which repeats with pre-period \(2\) and period \(1\). This shows that the pre-period can differ between the external angle and the landing Misiurewicz point. The period can also differ: the three external angles \(.001001(010010100)\), \(.001001(010100010)\), \(.001001(100010010)\) all have rays landing on the same point \(0.026593792304386393 + 0.8095285579867694 i\). The external angles all have pre-period \(6\) and period \(9\), but their common landing point has pre-period \(7\) and period \(3\):

\[0.0 + 0.0 i \\ 0.026593792304386393 + 0.8095285579867694 i \\ -0.628035464102623 + 0.8525854266579085 i \\ -0.3058795732744643 + -0.26137921024969535 i \\ 0.051837014100200335 + 0.969429680574756 i \\ -0.9105130372440626 + 0.9100332380289821 i \\ 0.027467288978280196 + -0.8476656971148656 i \\ -0.6911888897970283 + 0.7629624006675106 i \\ -0.07777575114909609 + -0.24517371136173505 i \\ -0.02746728897169486 + 0.8476656971131106 i \\ -0.6911888897944147 + 0.7629624006787714 i\]

This is counter to what I originally (mistakenly!) believed - that the dynamics of the external angle under angle doubling matched the dynamics of the landing point under iteration.

I found the second counter-example in a database of Misiurewicz points. I made the database by tracing every pre-periodic ray with pre-period and period summing to less than or equal to 16. I traced the rays to the limit of double precision, averaging 400 rays per second on my quad core desktop. Then I grouped together the rays landing at the same point (or nearby, with a small threshold radius). I only grouped together rays having the same period and pre-period, which I now think was a mistake (there may be Misiurewicz points whose rays have different dynamics, but I can't check this in my database). The grouping process is rather brute force \(O(n^2 \log n)\) - for each point, sort all the points by distance from the original point, take the nearest few. The \(\log n\) factor could be avoided by using a fixed threshold, but I needed to sort a few examples to find a suitable threshold (somewhere around 1e-10). If I were to regenerate the database without the same period and pre-period restriction, there would be a vastly greater (millions vs thousands) number of points to consider making the \(O(n^2)\) approach intractible, so I need to look into spatial data structures supporting fast neighbourhood search.

Anyway, the original reason I made the database was to try to find patterns in the external angles of multiple rays landing on Misiurewicz points, to try to figure out combinatorial ways of determining the answer to questions like:

Given an external angle, how many other rays are there which land on the same point?

and:

What are the external angles of those other rays?

without having to resort to numerical methods like tracing rays. The periodic case is easy: there are always two rays, and the other external angle can be found by converting to an angled internal address and back again.

**EDIT**: I found a solution via stackexchange:
Finding external angles for Misiurewicz points in the Mandelbrot set.
I'll write a new blog post with more details soon.