Double-click a point in the tiling set to grow its σ⁻¹ preimage tree (≈).
Limit set — dimension (≈)
Sample the σ limit set (the fractal the tiling converges to) by the chaos game on σ⁻¹, and
estimate its box-counting dimension (≈).
Orbit family — sweep · canonical
Trace many σ-orbits at once: a circle of seeds swept around the view centre (hue-ramped),
or the map's canonical seeds.
Level curves — |σ| · arg σ (≈)
Contour the reflection over Ω: iso-|σ| lines (solid) and iso-arg-σ lines (dashed), by
marching squares. σ is numerical, so the curves are approximate (≈).
Cycles — period-n orbits (≈)
Search for period-n cycles of σ (σⁿ(w) = w) by grid-seeded Newton. A coarse, advisory
search — reliable at low periods, approximate (≈) throughout.
Forward curve — σ of a drawn path (≈)
Shift-drag on the plot to draw a path in Ω; its forward σ-images
σ(path), σ²(path), … are traced (hue-ramped). σ is numerical, so the images are ≈.
Render
View — centre & zoom
+i
Export
Controls
Appearance
Overlays
External rays use double precision — accurate at shallow to moderate zoom.
Iteration & precision
Perturbation renders escape / smooth colouring only — relief lighting,
boundary outline, and equipotential overlays use the standard view.
● unapplied edits — press Enter or Apply
Julia set properties
Computed properties of the filled Julia set Kc at the current parameter.
Connectivity
—
Parameter c
—
Fractal dimension
—
Area of Kc
—
Lyapunov exponent
—
Bounding region
—
Symmetry
—
Capacity
—
Exterior map (uniformization)
Laurent coefficients of the exterior Riemann map.
Exterior map ψ(w) = γ₁·w + Σ aₘ/bₖ·w⁻ᵏ.
Parameter plane · ∂Md — coefficients am
Dynamical plane · ∂Kc — coefficients bk
Go to external angle (z²+c)
Enter an external angle θ = p/q (turns). The parameter ray at θ is traced to its
landing, then a periodic θ snaps to the component centre and a preperiodic θ lands
at its Misiurewicz point — the inverse of ray drawing, no nearby click needed. The
Landing line reports the ray's true landing (the component root, not its
centre) on both planes.
Angles of a point (z²+c)
The inverse of “Go to external angle”. Click a point on either plane — an α or β fixed
point, a component root, a Misiurewicz tip — then press Find angles. The
external rays landing there are drawn in cyan and their angles listed, with the point’s
valence and whether it is biaccessible (≥ 2 rays land).
On the parameter plane it also reads off the clicked component’s internal
address (rabbit 1-3 vs airplane 1-2-3). The click snaps to the nearest
low-period landing.
Component data (z²+c)
Exact algebraic data for the period-n hyperbolic components of the Mandelbrot set,
computed in exact ℚ(i): the Gleason polynomial Gn(c) (roots =
period-n centres), the dynatomic polynomial Φn(z,c) (roots in
z = period-n points), and the special c where a period-n cycle is parabolic —
root points (multiplier 1) and period-doubling points
(multiplier −1). Everything is = exact; the numeric values are the roots of the
exact polynomials.
Yoccoz puzzle (z²+c)
The
depth-n graph: the external rays landing at the α fixed point, pulled back n times
(q·2ⁿ rays, in violet), the pieces between them nesting toward the set. Show it on the
current Julia set (the puzzle) and/or the parameter plane
(the parapuzzle — the same angles as parameter rays on ∂M). Needs a repelling α — a c
outside the main cardioid (e.g. −1, or a rabbit).
Lamination (z²+c)
Thurston's
pinched-disk model, drawn as a corner disk widget where a chord joins every
pair of external rays that land at the same point. On the Julia set it is the
dynamical lamination (needs a repelling α — a c outside the main cardioid, e.g. −1); on the
parameter plane it is the
QML, whose minor leaves join the parameter rays landing at each component root.
Symbolic console (z²+c)
Enter an internal address (the increasing periods from the main
cardioid to a component, e.g. 1-3-6). The stripping algorithm returns its kneading
sequence, the two characteristic external angles θ⁻, θ⁺ that bound its wake, and its
tuning tower (each step a satellite ×q bulb or a primitive small copy).
…or go the other way: enter an external angle θ = p/q and read off the
internal address of the component whose root ray it is (1/7 → 1-3 rabbit, 3/7 → 1-2-3
airplane — same period, different address).
Mating check (z²+c)
Two quadratics z²+c can be mated (their filled Julia sets glued into one rational
map) iff they are not in complex-conjugate limbs of the Mandelbrot set. Enter two
main-cardioid bulbs by rotation number p/q.
Or render a mating: its mated rational map is computed by the Thurston
pullback and drawn as a Julia set on the dynamical plane / sphere. Pick a named example,
mate any satellite bulb p/q with the basilica, or mate two satellite bulbs with each
other (the general second parent). The engine refuses a pair it can't compute
trustworthily — including obstructed conjugate limbs — rather than draw it wrong.
Herman ring (rational)
Reports the rotation number and modulus and draws the invariant circles in gold. Load
the Herman-ring preset for an example.
Status
—
Rotation number α
—
Modulus
—
Annulus (about z = 0)
—
Projection & Riemann sphere (view)
Remap both plots into a live projection (single precision; resets the view). Log-polar
is the exponential map; the Poincaré disk compresses the plane into the unit disk
(rim = ∞) via w = tanh(|z|/2)·ẑ.
Or render a plane on the Riemann sphere in interactive 3-D — drag to
rotate, scroll to zoom (∞ at the north pole; any f).
Save & animate
Export image
Animate
Help & reference
About
Left is parameter space (each point a value of c);
right is the dynamical plane for that c. Drag
either white point — the Glossary button in the top bar
defines the terms used here.
GPU acceleration limits accuracy beyond a certain zoom;
perturbation (deep zoom) extends it for polynomial maps.
Methods & references
Every computed quantity is a standard construction from holomorphic dynamics
or potential theory — distance estimation, the Böttcher / uniformization
coefficients, Fatou–Julia connectivity (critical points via Durand–Kerner),
the cycle multiplier, logarithmic capacity, Gronwall's area bound, Ruelle's
small-|c| dimension, box-counting dimension, and the Benettin Lyapunov
exponent. The
Glossary attributes each one inline.
The
Methods & references
section of the README lists the algorithm and citation for each, so a result
can be described and checked.
Controls
Move the plot window with the arrow keys or by clicking and dragging the
background.
Zoom with the +/- keys or the mouse wheel (zooms toward the cursor).
Drag the white point in each plot to change its value; the coordinate under
the cursor is shown beneath each plot.
Below each plot a compact row sets its iterations,
canvas size (px), centre, and
zoom — edit any and press Enter or that
plot's apply button (it highlights when there are unapplied
edits). The escape test, c, and
Copy coordinates sit under more ▾.
On a touch screen: one finger pans or drags the white
point, a two-finger pinch zooms, and a double-tap zooms in.
On a phone the settings open in a bottom sheet via the floating
Controls
button, so the plot stays visible while you adjust them.
On a wide screen the top bar's Stack plots and
Hide controls enlarge the plots, each plot's
⤢ expand button maximises just that one (Esc restores), and
a corner grip lets you drag- (or arrow-key-) resize a plot
— handy for shrinking stacked plots so both fit on screen.
Press "enter" or "apply changes" to apply edits; "reset" reverts every
option to the selected preset.
Pick a colouring mode, palette, and anti-aliasing level with the coloring
controls (smooth, histogram, distance/edges, orbit trap, stripe/triangle
average, binary decomposition, period, multiplier map, interior distance
(carves the z²+c interior), Marty (Julia-set normality), Newton basins, and
domain colouring), design a
custom gradient or spin the rotation slider to cycle
colours, and toggle relief lighting,
post-processing (vignette/gamma), or a
boundary outline.
Toggle dynamics overlays: the white-point orbit is
classified by its fate (escapes / fixed point / cycle / undetermined); add
the critical orbit (a Julia-connectivity test) or
equipotential contours.
Tick Newton's method to iterate the Newton map of
f (e.g. z^3-1) and colour the root basins by
convergence.
Tick auto iterations to raise the iteration cap
automatically as you zoom in.
Tick refine while idle to accumulate extra anti-aliasing
while the view sits still — it converges to a cleaner image over a few
seconds.
Tick perturbation (deep zoom) on a polynomial map — z²+c, a
multibrot z^d+c, or a general additive-c polynomial like z³−z+c — and its Julia
sets to zoom past the point where ordinary deep zoom turns to mush.
Fast deep zoom (BLA) — on by default — then accelerates it
roughly 20× at deep minibrots with a pixel-identical skip-table; untick it to
compare against the exact kernel.
Profile (top bar) applies a bundle of settings tuned to a
use case — Explore, Artist, Researcher, Educator, Performance, or Deep zoom —
and remembers your choice. It re-skins the view without changing your formula
or zoom; editing a setting afterwards shows Custom.
Suggestions (on by default) pop a small, dismissible tip
over a plot when a setting is degrading the view — e.g. too few iterations
for the zoom, deep zoom needing perturbation, or a flat escape-time image.
Each tip has a one-click fix; untick suggestions to silence
them.
Use Record Julia morph or
Record zoom-in in the Animate section to save a WebM video
— the dynamical plane morphing as the parameter sweeps a circle, or a zoom
into the parameter plane.
Put the variable a in f (e.g.
a*z*(1-z)) to get a live slider that sweeps it in real time.
Build a keyframe path: Add keyframe at a
few parameter-space views, then scrub or Record path to fly
between them.
Prefer a shareable GIF? Use Morph GIF or the keyframe
GIF button to export an animated GIF instead of WebM.
Click Share link to copy a URL that reopens the current
view — formula, zoom, colouring, and toggles.
Save view keeps the current view under a name in your
browser; reopen it from Saved views or remove it with
Delete.
↶ undo / ↷ redo (or Ctrl+Z / Ctrl+Y) step
back and forth through your recent changes to the formula, view, colouring,
and toggles.
Each plot can be saved to a file (Save) or copied to the clipboard (Copy) at
a chosen resolution using the size dropdown next to the buttons. The image
is re-rendered off-screen at that exact size, so it is sharp at any
resolution (the on-screen plots are unaffected).
Tick "overlays" to include the orbit polyline, white point, and coordinate
label; leave it unticked for a clean fractal-only image.
Very large sizes take a moment to render — a progress bar with a Cancel
button appears while they do. The plot is rendered at the exact size you
choose (no upscaling), up to your GPU's maximum texture size; larger sizes
are disabled in the dropdown.
Rendering…
Welcome to the Complex Dynamics Visualizer
Parameter space (left): drag the white point to choose the parameter
c.
Dynamical plane (right): the behaviour for that c; drag its
white point to move the orbit start.
Scroll to zoom toward the cursor, drag the background to pan, and edit
f(z, c) or pick a preset below. On a touch screen, drag with one finger and
pinch with two to zoom.
Measure & explore: click any point to inspect its orbit, toggle
Overlays (external rays, Farey labels, …), and use
Places to fly to famous spots.
How will you use it? Pick a starting profile (a bundle of settings — change
it anytime from the top bar):