Right-click for context menu (save location, view Julia set)
Touch:
Pinch to zoom
Double-tap to zoom in
Drag to pan
Long tap for context menu
Keyboard:
Arrow keys or WASD to pan
+ / - to zoom in/out
R to reset view
Escape to return to title screen
Deep Zoom Implementation
Two Rendering Methods
This application uses two different rendering techniques depending on the zoom depth:
Standard Method (Zoom < 10-7)
At shallow zoom levels, we use the direct iteration method where each pixel independently calculates:
zn+1 = zn2 + c
This is computed using 32-bit floating-point numbers on the GPU, which is fast and provides good precision down to about 10-7 zoom depth. Beyond this, numerical precision limits prevent further accurate zooming.
Perturbation Method (Zoom ≥ 10-7)
At extreme zoom depths (10-7 to 10-38), we switch to a more sophisticated approach:
Reference orbit calculation: A single high-precision orbit is calculated on the CPU using arbitrary-precision arithmetic (Decimal.js). This gives us the "true" orbit path for one point.
Delta calculations: For every other pixel, we calculate small differences (deltas) from this reference orbit using GPU 32-bit floats. Since these differences are small, 32-bit precision is sufficient.
Orbit composition: The final orbit for each pixel is: orbit = reference_orbit + delta
This technique, known as perturbation theory, allows us to reach zoom depths of 10-38 on desktop while maintaining full visual detail and smooth performance.
Understanding Orbits
An orbit is the sequence of points generated by repeatedly applying the Mandelbrot formula:
z0 → z1 → z2 → z3 → ...
When pixels are close together (at deep zoom), their orbits follow very similar paths. The perturbation method exploits this similarity by only calculating one precise orbit, then using deltas to approximate nearby orbits efficiently.
Orbit Quality
The orbit quality indicator shows how well the perturbation approximation is working. It measures how close the delta orbits remain to the reference orbit:
100%: Perfect accuracy, all pixels use valid perturbation calculations
90-99%: Very good, minor deviations at image edges
Below 90%: Some pixels may show artifacts or pixelation
When orbit quality drops, panning or zooming slightly will recalculate a new reference orbit and restore quality. Areas near black (in-set) regions typically have better orbit quality than boundary areas.
Automatic Iteration Optimisation
The max iterations setting controls how many times we iterate the formula before giving up. Higher values reveal more detail but require more computation. In Auto mode (recommended), the app uses two different strategies:
Shallow zoom (>10-7): Iterations scale linearly with zoom depth (deeper = more iterations)
Deep zoom (≤10-7): Intelligent optimisation searches for the iteration count that achieves 92-99.5% orbit quality
The deep zoom optimiser uses a four-phase search algorithm:
Phase 1 - Coarse search: Tests 40 samples across a wide range (20%-300% of current value)
Phase 2 - Fine search: Narrows in around the best result with smaller steps
Phase 3 - Ultra-fine search: Final refinement when quality is 95-99%
Phase 4 - Stability test: Tests ±1 iteration for optimal stability when quality is 98%+
Watch for the red "⏳ Optimising" indicator when this is running. It appears automatically when orbit quality drops below 95%. The optimiser runs asynchronously so you can continue panning and zooming.
Manual mode lets you override the optimiser and set iterations yourself:
Mobile: Slider range 50-4,000 iterations
Desktop: Slider range 50-20,000 iterations
Black areas (points inside the set) always use the maximum iterations, while coloured areas (points that escape) typically use fewer iterations. This is why panning through black regions is more GPU-intensive.
Platform Differences
Desktop and mobile devices have different capabilities:
Desktop: Can reach 10-38 zoom depth with aggressive iteration scaling. Includes coordinate display with arbitrary precision.
Mobile: Limited to ~10-20 zoom depth with conservative iteration scaling to maintain smooth, responsive performance. Some features like coordinate display are disabled for performance.
Zoom: 1×
Scale: 0
Orbit Quality:100%
⏳Optimising
View This Julia Set
Save Location...
Save Julia Set...
Share Location
Save Location
Manage My Locations
Save Julia Set
Manage My Julia Sets
Entering Deep Zoom Territory!
You've crossed the 10-7 barrier where normal floating-point precision runs out of steam. The app now uses perturbation theory to reach extreme depths!
Best Navigation Strategy
For the most stunning images with minimal artifacts:
Target the boundary between black and colour
Black → stability (95-100% quality)
Near colour → detail and beauty
Pro tip: Use double-click/double-tap to zoom instead of mouse wheel/pinch - makes it easier to zoom precisely on a black spot near colour
Automatic Optimisation
The app automatically finds the best iteration count for image quality. Watch for the red "⏳ Optimising" indicator (bottom right).
Usually: Just wait - it'll find the sweet spot!
If needed: Use the Max Iterations slider to fine-tune manually, or try tiny panning with arrow keys to find a better reference point
Orbit Quality shows how well it's working: 🟢 Green (90-100%) = Excellent
What's Possible?
You can reach zoom depths of 10-38 viewing details trillions of times smaller than atoms compared to your starting view!