After writing my previous entry, I noticed that the final equation is in fact just the negated log of the Douady-Hubbard potential (assuming n is practically infinite). (In the following I will use the binary logarithm throughout, lg x = log2 x.)
I didn’t really understand this so I sought a more intuitive explanation.
Observe that when z is large, fc(z) is very close to f0(z). So in the following we can treat the crinkly component c as insignificant.
So the double log gives us a sort of measure of distance in terms of the number of iterations needed to get from z to zn.
Recall that
Hence the equations in z also apply to r = |z|,
When z is close to the set, r is slightly greater than one (plus crinkles), so lg r is a small positive number, and lg lg r is a large negative number. Hence the negation to turn it into the equivalent of an iteration count.
The equation above also relates back to the definition of the electrostatic potential and our simplifying approximation, that is,
Thinking about what happens when we finish iterating,
So lg lg rn lies between two numbers with a difference of one,
When lg lg rn is subtracted from n, it contributes a fractional part and a fixed offset determined by the bail-out radius.
Finally, on a practical note I find that a better function for colouring pixels is to take the log again:
The extra log gives the value a more uniform gradient so it cycles through the colours evenly, and it gets much closer to the set before it flies off to infinity so less of the picture suffers from aliasing. Even better, it retains these properties as you zoom in.