Mandelbrot fractals are fascinating both for the esthetic beauty and also because they are truly infinite.
Recently a new method was developed to render Mandelbrot fractal images from a reference point rather than calculating the escape-speed for each pixel.
Since lower precision then can be used, the time to render images decreases significantly.
Compared with the fastest programs using the old method, this program is more than 100 times faster on zoom levels around e100!
For details see sft_maths.pdf
My humble thanks to K.I.Martin for sharing his mathematical findings, which I think is almost as big discovery as the Mandelbrot formula itself.
My humble thanks also to Pauldelbrot for the solid glitch solving method which enables accurate render and make the new rendering method complete!
Thanks also to Dikydau for the locations in the gallery and to those that have given feedback and suggestions.
Thanks also to Botond Kósa and knighty for the extensions on Series Approximation.
Thanks also to laser blaster for the Burning Ship perturbation formula.
Thanks also to stardust4ever for formulas on other fractals (Cubic Burning Ship, Buffalo, Cubic Buffalo and Celtic)
For feedback and discussions, please visit the forum
Take a look at this tutorial if you want to make a zoom movie
Old versions of can be found here
|Update Version 2.9.2:||Custom zoom size|
|Update Version 2.9.1:||Enhanced exploring experience, Distance estimation, Arbitrary size ratio|
|Update Version 2.8.1:||Enhanced exploring experience, skew animation + bugg fix|
|Update Version 2.7.9:||New feature to only check real or imag values for bailout. Available from the Iterations dialog|
|Update Version 2.7.8:||Bug-fix|
|Update Version 2.7.7:||"Slope" encoding allows 3D look|
|Update Version 2.7.4:||New fractal types! New strectch abilities|
|Update Version 2.7.1:||New fractal types!|
|Update Version 2.7:||New fractal types: Cubic Burning Ship, Buffalo, Cubic Buffalo and Celtic|
|Update Version 2.6.2:||Arbitrary number of Series approximation terms (only for standard power 2 Mandelbrot)|
|Update Version 2.6.1:||Show Inflection + Bug fix|
|Update Version 2.5.8:||Rotation, slimmed reference calculation|
|Update Version 2.5.3:||One new fractal type: Burning Ship! Available from the Iterations dialog.|
Automatic iteration control enabled for zoom out sequences, can be disabled by un-checking the menu "Use auto iterations".
|Update Version 2.5.1:||Arbitrary powers|
|Key Frames Movie Maker|
|Update Version 1.32:||Image texture|
|Update Version 1.31:||Distance estimation|
|Update Version 1.29:||Frame by fram rendering for skew animation|
|Update Version 1.26:||"Slope" encoding|
|Update Version 1.25:||Long wave colors|
|Update Version 1.22:||Bug fix - color jumps on negative cycling and fractional color division|
|Update Version 1.21:||Current version|
| ||Toggle skew animation. Enter the number of frames in the popup dialog
||Opens the current location from a parameter file (*.kfr)
||Saves the current location in the current parameter file (*.kfr)
| ||Save as
||Saves the current location in a new parameter file (*.kfr)
| ||Save as Jpeg
||Saves the current location in a jpeg file (*.jpg)
| ||Store zoom-out images
||Zoom out automatically with the selected Zoom size and store jpeg image file and map file (*.kfb) for each zoom out. The zoom out stops when the depth is lower than 1. The resulting files can be used by the KeyFramMovie program to create a zoom-in animation.
| ||Save map
||Saves the current location in a map file (*.kfb). This file can be used by the KeyFramMovie program.
| ||Examine Zoom sequence
||Make sure you store the end location as a kfr file in the same directory as you store the zoom sequence frames. This function allows you to examine the frames one by one and add references to remove eventual visible glitch blobs, or choose another pixel as the main reference.
| ||Resume Zoom sequence
||Make sure you store the end location as a kfr file in the same directory as you store the zoom sequence frames. This function allows you to resume and continue the zoom out sequnce, if it got interrupted.
||Exit this program
| ||Zoom size
||Set the level of zoom, left mouse click to zoom in, right to zoom out
||Displays the Location dialog where the coordinates for this location is displayed and can be edited.
||Displays the Iterations dialog where the maximum iteration number for this location is displayed and can be edited.
The smooth color transition method is also set here, and the power on the Mandelbrot function.
The fractal types is also set here - Mandelbrot, Burning Ship, Buffalo or Celtic.
This dialog also displays
- Min: The minimum iteration count for a pixel in this location
- Max: The maximum iteration count for a pixel in this location
- Appr: The number of iterations given by Series approximation
- Calculations: The number of calculations performed and also the number of calculations per second is shown if this dialog is displayed while the image is rendered
| ||Set colors...
||Displays the Number of colors dialog where the colors can be edited.
||Set the location to the start point
| ||Center cursor
||Center the cursor to image's pattern center
| ||Find Minibrot
||Starts an automatic zoom-in in the image's pattern center, until a Minibrot is found or if it fails to find the center.
| ||Set window size
||Set the size of the display window.
| ||Set image size
||Set the size of the internal image size. If this is larger than the window size, an anti-alias effect is achieved
||Render the current location
| ||Cancel rendering
||Cancel the current rendering
||Activate rotation, drag to rotate the image
| ||Reset rotation
||Clear any rotation
| ||Show Inflection
||Activate or deactivate display of Inflection
||Opens the Skew dialog which allows to "un-skew" locations that are skewed
| ||Zoom animation
||Turns animation on or off when zooming
| || ||Add reference (Color)
||Add a reference and re-calculates the pixels with the same iteration count as the reference. This is useful if the Auto solve glitches function fails to find and solve glitches in the image
| || ||Set main reference
||Let you click the image and select the main reference for the whole image. This can be useful when glitches appears on top of minibrots when the reference is outside this minibrot. The glitch pattern disappears from the minibrot if the main reference is selected inside the minibrot.
| || ||Reuse reference
||Do not re-calculate the reference for further zooming. This can be useful when during automatic zoom-out and to test different reference points, but must not be used together with the Auto solve glitches function active
| || ||Find center of glitch (Color)
||Centers the mouse pointer over the glitch blob found, if any
| || ||Auto solve glitches
||Turns the Auto solve glitches function on or off
| || ||Solve glitch with near pixel method
||Instead of re-render all pixels with the same iteration count value(color) only the connected pixels are re-rendered. On some locations other areas in the same view have the exact same iteration count values. These pixels may be correctly rendered and may be incorrect if re-rendered with another reference
| || ||Find highest iteration
||Centers the mouse pointer over the pixel with the highest iteration
| || ||Show iterations
||Displays the image black-and-white with the pixels with the highest iteration as white and the pixels with the lowest iteration as black
| || ||No approximation
||Turns the Series approximation function on or off.
| || ||Non exact find Minibrot
||Makes the Find Minibrot function fail every 20 zoom-in, in order to gain depth automatically without ending up in a Minibrot
| || ||Special
Mirror - mirrors the image around the x-axis. Can be used on the deeper half of a zoom sequence to a minibrot - but not too close to the minibrot and too close to the half...
| || ||Show smooth transition colors
||Displays the image black-and-white representing the smoothing coefficient
| || ||Use long double always
||Use always the 80-bit long double hardware data type. This can solve some type of glitches
| || ||Use floatexp always
||Use always the double mantissa/integer exponent data type. This probably only make the render slower
| || ||Use auto iterations
||Turns automatic iteration control on or off. This is on per default.
| || ||Set Ratio
||Enables chaning the ratio between height and width of the background image in order to enable stretching locations. Combinated with rotation, an almost infinite skewing ability is enabled, useful when exploring the hidden treasures of the new Fractals!
| || ||Reset Ratio
||Reset ratio to default
Number of colors dialog
|Number of key colors
||Set the number of key colors between 1 and 1024.
||Divide each iteration number with this value, for dense images this value can be greater than 1
||Offset the colors in the palette
||Fill the palette with random colors made from the Seed value. The Seed button select a seed value randomly.
||Move RGB values closer to max or min
||Move RGB values closer to the middle
||Enable slope encoding for 3D effect.
First value is the magnification of the slopes. The start value of 100 is suitable for the unzoomed view. Deep views requires a couple of magnitudes higher value.
The second value is the percentage with which the slope encoding is applied on the coloring. 100 is max, however flat areas will still have the palette color visible.
||Save the current palette in file
||Load palette from file
||Double the number of key colors without changing the palette. This allows finer control of individual colors without changing the palette for other colors
||Increase the number of key color to maximum 1024 without changing the palette
||Double the key colors by repeating them
||Allows a selected color to be merged to every specied key color
||Capture the mouse, hover the mouse over the fractal image and the corresponding color in the list will be highlighted. Click and the color selection dialog will be displayed for the active color
|Smooth color transition
||Makes the transitions of colors smooth
|Inverse smooth color transition
||Inverse the smooth color transition which makes edges more visible
|Unnamed dropdown box
||Specifies handling of the iteration count values prior to coloring
||The palette can be filled from sine waves applied on Red, Green, Blue and Black-and-white. Each input box specifies the number of periods applied on the number of key colors in the palette. If the input box is left empty, no wave of this color is applied. At right of each input box the "P"-button makes the number you entered prime, since different prime numbers probably give more variation. The last input box specifies the waves offset.
The button "Generate" applies the waves on the palette, the "Seed" button fills the fields with random values
||Waves can be applied on Hue, Saturation and Brightness rather than RGB values. The Period value specifies the length of the period (not the number of periods as for the Palette waves). Periods with prime numbers should be able to produce an infinite number unique colors
A negative value on Hue, Saturation or Brightness makes a flat percentage value to be applied on all iterations.
Key Frame Movie Maker
||Use the right small button to select the directory where you have stored the zoom-out images. By doing so values will be set automatically in this dialog
||The number of frames in the movie can set for each key frame. The zoom movie will start from the last, most zoom out, image, which will have number zero. The Frame num button can be used to get help in selecting the key frame.
The speed values are applied per key frame
||The change of the degree for each movie frame in the movie can be set for each key frame. This is set with a float value, which can be negative. If the list is left empty no rotation will be performed. If set the movie resolution will be half
|Color cycle control
||The change of the color index for each movie frame in the movie can be set for each key frame. This is set with a float value, which can be negative. If the list is left empty no cycling will be performed.
|Color division control
||The value of the color division can be set for each key frame. This can be set with a float value. If the list is left empty the division value from the zoom sequence is used. The iteration division value is changed smoothly in a logarithmic way. Note that very small changes can cause chaotic changes in the movie.
|Number of colors control
||The number of colors can be set for each key frame. Decreasing the number of key colors can reveal dense patterns in a more smooth way than changing the color division.
||This is the same function as "Infinite waves". The infinite waves are not read from the KFB frames, so it must entered again in this program. The ability to quickly test the parameters is enabled with the "Test" button.
||Sine waves of any color can be applied on the frames, mainly to emphasize the final minibrot. The color is only applied every second of the sine period.
||The start frame of the movie can be specified. This is applied when creating the movie, when testing with the check box "Test only" is set, or to test single frames with the "Test" button.
|Show zoom text
||Turns the zoom text on or off. My recommendation is to have it turned on. The font can be selected with the Font button
|Smooth color transitions
||Makes the transitions of colors smooth
|Zoom out level
||This value must be the same as the Zoom size selected when the zoom out images were created
|Frames per movie
||Several avi files will be created, since some codec get corrupted if they get too large. An automatic value is set based on the Movie size field
||Frames per second. 30 is the optimize value if the movie is to be published on youtube
||Only displays the movie in the preview window and do not create avi files
||The size of the resulting movies