Here is another
method to generate smooth colors.
I first learned
about the log-log smooth coloring method
Continuous_(smooth)_coloring
in the mid-1990s on the alt.fractals or was it sci.fractals news group. I was
afraid of this method because the log function is slow. Actually, log-log is
very efficient. But my fear of taking a performance hit was enough that I
continued to use a different method that I call accumulator colors. My method
turns out to be slower, but it has other advantages.
I assume you have
some basic knowledge about generating fractal images, so I will jump right into
the middle
Suppose
is the start point, is the orbit, and R is the escape radius. Color
banding, happens when gets close to R. The fractal function is
continuous, but a small change in the starting point, can result in
landing on the “other side” of R, and thus getting
assigned a different color.
Think of escape
counting as adding 1 to an accumulator in the inner loop. The accumulator, acc,
is set to 0 at the start of the iteration, and inside the inner loop we have
if( |z| < R ) { acc = acc + 1 }
This should make it obvious how a small change in |z| near R, results in a big change +1 in the result.
Now use this
instead:
if( |z| < R ) { acc = acc + 1 - |z| / R }
The added value is
between 0 and 1, and it is close to 0 when |z| is close to R. The resulting
color is continuous.
The derivative of the function is not continuous. Often the result has a different kind of banding, where the rate of color change varies between bands. If the value is squared then we get a continuous derivative:
if( |z| < R ) { acc = acc + (1 - |z| / R)^2 }
https://fractalforums.org/fractal-mathematics-and-new-theories/28/smooth-1d-coloring/2753
has all the math details.
And https://fractalforums.org/image-threads/25/smooth-1d-coloring/2755
has many example images
This method has a
rich set of variations.
Today’s image
required some parameter twiddling to get a color range similar to the first
log-log smooth color image.