Interactive Mandelbrot explorer built with C++ and SDL2.
| Input | Action |
|---|---|
| Arrow keys | Pan view |
R |
Reset center/zoom/iteration offset |
+ / = |
Zoom in (toward center) |
- |
Zoom out (toward center) |
[ / ] |
Decrease / increase iteration detail |
C |
Cycle named palettes (fire/lava, ocean/ice, neon, grayscale, rainbow) |
V |
Reverse current palette |
, / . |
Decrease / increase color contrast/intensity |
S |
Save BMP screenshot |
Esc |
Quit |
| Input | Action |
|---|---|
| Mouse wheel | Zoom toward cursor |
| Left click + drag | Pan view |
A lightweight right-side overlay provides clickable buttons for:
Zoom +Zoom -Pan ←Pan →Pan ↑Pan ↓ResetDetail +Detail -Palette
The button overlay reuses the same navigation/detail/palette logic as keyboard controls.
sudo apt update
sudo apt install -y cmake g++ libsdl2-dev
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release
./build/xfractal_visualizercmake -S . -B build -A x64
cmake --build build --config Release
.\build\Release\xfractal_visualizer.exeThe explorer chooses maxIterations automatically from zoom level, then applies a manual offset from [ and ]. This keeps boundary detail visible when zooming without forcing high cost at shallow zoom.
This build uses double precision coordinates. At extreme zoom depths, floating-point precision eventually collapses nearby coordinates into the same value, causing visual artifacts/flat regions. True "infinite" zoom generally needs arbitrary precision and/or perturbation rendering. See docs/DEEP_ZOOM.md for the staged design.
- The overlay uses SDL primitive shapes (rectangles/line icons), not font-rendered text, to stay lightweight.
- Because there is no
SDL_ttfdependency, detailed button labels are documented here and summarized in the window title/status. - The panel intentionally occupies a small right-side strip and may still cover a small part of the fractal view.