1618.dev

small tools, one committed a day

Julia Set Explorer

A Julia set runs the very same loop as the Mandelbrot setz → z² + c — but flips which knob you turn: instead of starting at zero and sweeping c, you fix one c and sweep the starting point z over the whole plane. Every point of the Mandelbrot set is the recipe for a different Julia set. Drag the dot across the mini Mandelbrot map below and watch this fractal morph.

c = zoom

On the Julia view: scroll to zoom · drag to pan · double-click to zoom in · single-click to inspect a point's orbit.

Inside the black body → a connected Julia set. Outside → it shatters into dust. The boundary is where the most intricate shapes live.

What a Julia set is

Fix a complex constant c. For every starting point z0 on the plane, run zn+1 = zn² + c. Some starting points stay trapped near the origin forever; others escape to infinity. The filled Julia set is the trapped ones (painted black here); its frizzy outline — the boundary between "stays" and "escapes" — is the Julia set proper. Change c and you get a completely different shape, which is why this tool is really an infinite family of fractals behind one slider.

Julia and Mandelbrot are the same equation

The only difference between this page and the Mandelbrot explorer is which value moves. Mandelbrot fixes the start at z = 0 and varies the parameter c; Julia fixes c and varies the start z. That makes the Mandelbrot set a map of all Julia sets at once: its location tells you, at a glance, what the matching Julia set looks like — which is exactly what the mini-map above is for.

Connected, or dust?

There is a clean either/or, the Fatou–Julia dichotomy:

Right on the Mandelbrot boundary you get the wildest, most delicate forms — dendrites and near-dust filaments. The read-out above tells you which side of the line your current c sits on.

The escape rule and smooth colouring

|z| > 2  ⇒  the orbit diverges — stop iterating

Same escape-time trick as before: once |z| passes 2 the orbit is doomed to blow up, so we stop and record the step count. To avoid ugly colour bands we use the fractional normalised count μ = n + 1 − log2(log|z|), fed through a cosine palette. Push the max iterations slider up to sharpen thin filaments at deep zoom.

A few famous c values

How this page is built

The math lives in logic.py — the escape iteration, the |z| > 2 bailout, the smooth-μ formula, and the connectivity test (run the Mandelbrot iteration on c and see if it stays bounded). The picture is drawn in JavaScript on a canvas for speed, but the same Python backs the point inspector, so the orbit and escape count under your cursor come straight from the source of truth.