mathr / blog / #

Distance estimation for IFS fractals

Distance estimation for IFS fractals

In a previous post I wrote about continuous escape time for iterated function system fractals. Referring to the second case in the definition of E(x) about half way down that page,

\[ \begin{aligned} E(z_k) &= \frac{\log R - \log |z_k|}{\log |z_{k+1}| - \log |z_k|} \\ &= \log_{\frac{|z_{k+1}|}{|z_k|}} \frac{R}{|z_k|} \\ &\approx \log_{\rho^{-1}} \frac{R}{|z_k|} \\ z_k &\approx R \rho^{E(z_k)} \\ \rho &= \max \{ \text{scale factors of the } F_i \} \end{aligned}\]

Plugging this into the distance estimator for iteration towards \(\infty\) gives:

\[ d = \lim_{k \to \infty} \frac{|z_k| \log |z_k|}{ | \frac{d}{dz} z_k | } \]

where \(\frac{d}{dz} z_k\) is the product of the scale factors of all the \(F_i\) chosen when calculating the continuous escape time. The final piece of the puzzle is that we have \(z_k\) in terms of \(E(z_k)\), but we calculate \(E(z_0)\) - luckily what we want is just the fractional part of that - the other case in its definition just adds 1.

The fern at the top of this post was coloured with both continuous escape time (larger values darker brown) and distance estimate (lower values brighter white). Strictly speaking I cheated a bit and assumed all the transformations had uniform scaling, for affine transformations you might want to multiply Jacobian matrices instead of scale factors to account for the different scalings in different directions, with the distance estimator based on the final result.