Fractal generator

The server computes the Mandelbrot, Julia and Burning Ship sets pixel by pixel with PHP GD. Scroll or pinch to zoom, drag to pan, double-click to zoom in: the image moves instantly, and the sharp version streams in from the server tile by tile.

Magnification

1×

The first image is still being rendered on the serverRe -0.500000 Im 0.00000Wheel or pinch: zoom. Drag: pan. Double-click: zoom in (Shift: zoom out). Shift + drag: zoom to a rectangle. Keyboard: arrows, + and -, 0.

Type

Famous places

Seahorse Valley
Elephant Valley
Mini Mandelbrot
Spiral
Starfish
Tripod star
Islands
Deep spirals

Gradient

Fits the color scale to the histogram of the view, so deep views do not look flat.Color bands

Detail

More iterations and a higher resolution, but slower rendering on the server.

What is the Mandelbrot set, and how is this image made?

The Mandelbrot set contains all complex numbers c for which the iteration z → z² + c, starting from z = 0, never runs off to infinity. The points of the set form the dark interior of the image, which the server shades subtly according to the shape of the orbit.

The escape-time algorithm assigns a complex number to every pixel, then counts how many steps it takes for the sequence to cross a threshold. To avoid stair-step bands, the server uses the continuous (normalized) iteration count and interpolates colors in the perceptually uniform OKLab space, optionally equalized to the histogram of the view.

Julia sets are close relatives of the Mandelbrot set: the same z → z² + c formula, but c is a fixed constant and every pixel starts from its own value. With the "Julia set from this point" button you can see the Julia set belonging to any point of the Mandelbrot set.

The Burning Ship takes the absolute values of the real and imaginary parts before each step, which creates the ship-like shapes it is named after.

A large image is expensive to compute pixel by pixel in PHP, so the browser first asks for a small preview and then the sharp image split into tiles, in parallel: the tiles share a single global pixel grid, so they fit together without seams. The server speeds up the interior with period detection and closed-form formulas, and raises the iteration count with the zoom so the boundary does not fall apart.

Depth has a physical limit: a double-precision number holds about 16 digits, so around a magnification of 10¹² neighboring pixels would round to the same number. There the generator stops and tells you instead of showing a broken image.