I have a background image of a fractal on my phone that I would like in a higher resolution with super sampling, and decided to write my own program for it. I've got down rendering a Mandelbrot set, even using HSV/HSL as coloring methods, but I can't get my fractals to look as nice as these. Here's a prime example, and here is the image I use on my phone.

As far as I can tell they're rendered using Ultra Fractal 3. How would I go about coloring my Mandelbrot set in the same way?

Using HSV/HSL I have only managed to produce similar results to this JavaScript renderer.


To get the filaments drawn in such contrast, a (inverse?) distance estimator is used. This is based on the derivative $dz_n/dc$, see, e.g., http://mrob.com/pub/muency/distanceestimator.html for details and the links there for application ideas.

That is, instead of only iterating $z_{n+1}=z_n^2+c$, you now iterate

dz = 2*z*dz + 1
z = z*z + c

and return in addition to $n$ also $\log_2(|z|) \frac{|z|}{|dz|}$. Then you should get images like the cited one if you set the color hue (cyclically) by $n$ or $\log n$ and control the brightness using the distance estimate.


Asking the original author for their exact Ultra Fractal 3 parameters would be my first choice.

Mandelbrot fractal images are often made by selecting the color based on the iteration where the iteration "blew up" or the point escaped (modulo some factor, perhaps, that keeps the number in the color map (and I don't know how deep people let these iterate nowadays)) for some arbitrary definition of "escape". For $$ z_{n+1}=z_n^2+c, $$ and $c=(x,y)$ of the point you're testing for inclusion. At the very least you need the coordinates of the four corners of the domain (or anything equivalent) and any parameters that might map $n_{\rm blowup}$ back into the color map and the color map (which you can probably pick off an image with your favorite image manipulation program (like Photoshop) and the eyedropper tool). You need your own (their) definition of "blow up" since you can't iterate forever. It might just count as leaving the domain or 10x the domain or $n$ too big or $\ldots$, but it's been since high- school since I coded one of these (in QuickBasic(!) as a language learning project).

I think your best bet is to reach out to the website owner and see if they'll help you out.

  • 1
    $\begingroup$ Regarding the definition of "blow up", if the value of $|z_n|$ ever exceeds $2$ then the sequence $(z_n)$ will approach infinity $\endgroup$
    – ogogmad
    Dec 6 '20 at 23:04
  • $\begingroup$ @ogogmad, yes, but some also set a maximum number of iterations before giving up. $\endgroup$
    – Bill Barth
    Dec 11 '20 at 18:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.