Skip to content

Repository files navigation

🌀 Fractal Explorer v.2

License: MIT

An interactive GTK3 fractal explorer for Linux, written in C with Cairo rendering. Pan, zoom, and tweak parameters live in a multithreaded preview, then export a 4K (3840×2160) PNG render with one click. Includes a built-in Customize Fractal workshop for building your own iterative maps, 2D attractors, and IFS (Iterated Function System) fractals from scratch.

Repository: https://github.com/igor101964/fractal_explorer


Screenshots

Mandelbrot z²+c, Fire palette z·sin(z)+c, Psychedelic palette

Mandelbrot z²+c — Fire palette  |  z·sin(z)+c — Psychedelic palette

Julia z²+c, Psychedelic palette, dark theme Custom workshop, IFS Barnsley Fern

Julia z²+c — Psychedelic palette, dark theme  |  Custom workshop — IFS: Barnsley Fern

Custom workshop, Attractor Hopalong Custom workshop, Iterative |z|·z+c

Custom workshop — Attractor: Hopalong  |  Custom workshop — Iterative: |z|·z + c

More screenshots in screenshots/.


Features

  • 58 built-in fractal formulas across 8 families (Mandelbrot powers, Burning Ship variants, Julia sets, trigonometric/hyperbolic maps, Newton fractals, magnetic/Phoenix maps, polynomials, and quasi-fractals).
  • A Customize Fractal workshop with 3 generator types (Iterative, 2D Attractors, IFS) and 17 starter templates, each with up to 4 free parameters.
  • 16 color palettes, light/dark theme toggle.
  • Live preview rendering on a background thread (UI stays responsive).
  • One-click 4K PNG export ("Save 4K", 3840×2160).
  • Pure C, GTK3 + Cairo — no external runtime dependencies beyond GTK3.

Fractal Library (58 formulas)

# Category Formulas
1–10 Mandelbrot Powers Mandelbrot z²+c, z³+c, z⁴+c, z⁵+c, z⁶+c, z⁸+c, z¹⁰+c, z¹²+c, z¹⁵+c, z²⁰+c
11–14 Burning Ship Family Burning Ship, Buffalo, Celtic, Mandelbar (Tricorn)
15–23 Julia Sets Julia z²+c, z³+c, z⁴+c, z⁵+c, Julia Burning Ship, Julia Buffalo, Julia Celtic, Julia Mandelbar, Julia Phoenix
24–41 Trigonometric / Hyperbolic sin(z)+c, cos(z)+c, tan(z)+c, sinh(z)+c, cosh(z)+c, exp(z)+c, z·sin(z)+c, z·cos(z)+c, z²·sin(z)+c, z²·cos(z)+c, sin(z²)+c, cos(z²)+c, exp(sin(z))+c, sin(exp(z))+c, z·exp(z)+c, sinh(z²)+c, cosh(z²)+c, tanh(z)+c
42–46 Newton Methods Newton z³−1, z⁴−1, z⁵−1, z⁶−1, z⁸−1
47–51 Magnetic / Phoenix Magnet Type 1, Magnet Type 2, Phoenix λ=−0.5, Manowar, Lambda z·(1−z)+c
52–56 Polynomials z³+z²+c, z⁴+z²+c, z⁵+z³+c, z²+z+c, (z²+c)²
57–58 Quasi-Fractals Wavy z²+c·sin, Fish z²+c/(1+z)

Customize Fractal workshop (17 templates)

Generator type Templates
Iterative (Mandelbrot-type) z²+c·sin(z), z²+c·cos(z), z·sin(z)+c, |z|·z+c, z²/(z+1)+c, z²−|z|+c, (z²+c)·sin(z)
Attractor (2D systems) Clifford (a=−1.4, b=1.6), De Jong (a=1.4, b=−2.3), Hopalong (a=0.4, b=1.0), Gingerbread, Tinkerbell (a=0.9, b=−0.6)
IFS (Iterated Function Systems) Barnsley Fern, Sierpinski Triangle, Sierpinski Carpet, Tree, Dragon Curve

Palettes (16)

Rainbow, Fire, Ocean, Psychedelic, Sunset, Matrix, Ice&Fire, Purple, Neon, Forest, Copper, Electric, Hot, Cool, Gray, Pastel.


Dependencies

  • GCC (or another C11 compiler) and GNU Make
  • pkg-config
  • GTK3 development headers (libgtk-3-dev) — this also pulls in Cairo, GLib, Pango and GdkPixbuf development headers
  • POSIX threads (pthread, part of glibc) and libm (part of glibc)

No other third-party libraries are required.


Quick Install

Clone the repository:

git clone https://github.com/igor101964/fractal_explorer.git
cd fractal_explorer

On Ubuntu 24.04 LTS or Ubuntu 26.04 LTS (x86_64)

chmod +x install_deps.sh
./install_deps.sh
make
./fractal_explorer

On Raspberry Pi 4B (arm64 — Raspberry Pi OS / Ubuntu arm64)

chmod +x install_deps_arm.sh
./install_deps_arm.sh
make
./fractal_explorer

Rendering at 4K is CPU-bound. On a Raspberry Pi 4B, expect noticeably slower previews and exports than on a desktop x86_64 machine, especially with high iteration counts.

Manual dependency install (any Debian/Ubuntu-based system)

sudo apt-get update
sudo apt-get install -y build-essential pkg-config libgtk-3-dev libcairo2-dev

Building

The project uses a single Makefile in the repository root.

make            # build the release binary -> ./fractal_explorer
make debug      # build with -g -O0 for debugging
make run        # build (if needed) and launch the program
make clean      # remove build artifacts

Installing system-wide

sudo make install                  # installs the binary + .desktop menu entry to /usr/local
make PREFIX=$HOME/.local install   # or install to a user-writable prefix
make uninstall                     # remove the installed binary and menu entry

After make install, the program also appears in your desktop's application menu as Fractal Explorer (via fractal_explorer.desktop), in addition to being runnable from the terminal as fractal_explorer.

Build options can be overridden on the command line, e.g. make CC=clang or make DESTDIR=/tmp/pkgroot install for staged/packaged builds.


Usage

  1. Launch ./fractal_explorer.
  2. Pick a Fractal from the library dropdown, or click 🎨 Customize Fractal to open the workshop and build your own from an Iterative / Attractor / IFS template.
  3. Adjust Iterations, Zoom, Center X/Y, and the Julia/parameter sliders — the preview re-renders live on a background thread.
  4. Pick a Palette and toggle Dark Theme to taste.
  5. Click 💾 Save 4K to export the current view as a 3840×2160 PNG.
  6. 🔄 Reset restores the default parameters for the current fractal.

Project Structure

fractal_explorer/
├── .github/
│   └── workflows/
│       └── build.yml           # CI: build on Ubuntu 24.04/26.04 (x86_64) and arm64, lint
├── src/
│   └── fractal_explorer_v2.c   # full application source (single file)
├── screenshots/                # example renders used in this README
├── Makefile                    # build / install / uninstall / debug / run
├── install_deps.sh             # dependency installer — Ubuntu 24.04/26.04 LTS (x86_64)
├── install_deps_arm.sh         # dependency installer — Raspberry Pi 4B (arm64)
├── fractal_explorer.desktop    # application menu entry, installed by `make install`
├── .gitattributes              # language detection (C / Shell / Makefile) for GitHub
├── .gitignore
├── CHANGELOG.md
├── LICENSE                     # MIT License
└── README.md

License

Released under the MIT License.

Changelog

See CHANGELOG.md for release history.

Author

Igor Lukyanov — Art2Dec SoftLab, June 2026 Repository: https://github.com/igor101964/fractal_explorer

Releases

Packages

Contributors

Languages