JR / JOSHUA ROGERSCOMPUTER SCIENCE · CREATIVE COMPUTING

+ INTERACTIVE PROJECT / 01

Fractal Lab.

A few lines of mathematics.
A universe of detail.

C++ → WebAssembly

Generate. Explore. Process. Export.
Your images stay in your browser.

02 / LIVE CANVAS

Mandelbrot set zₙ₊₁ = zₙ² + c

Controls ↓
Drag to pan · double-click to zoom
ƒ(z)Preparing your first exploration…
Re −0.500000 · Im 0.000000No completed image yet
OUTPUT—
ITERATIONS—
RENDER TIME—
ENGINELoading…

Keep your exploration.

Save the pixels. Share the coordinates.

THE PROJECT, NOT JUST A PICTURE

From terminal to canvas.

This lab grew out of my C++ image-processing and PPM application. Its escape-count calculations, procedural patterns, color tables, and image operations now have an interactive browser interface.

Explore my GitHub ↗
THE ORIGINAL ARCHITECTURE

Image→PPM

NumberGrid→ComplexFractal

MandelbrotSetJuliaSetJuliaSetFour

The web build uses an adapted, bounded C++ kernel compiled to WebAssembly. The original class-based sources are preserved in the project repository.

Inside the lab

Explore a set

Choose a generator or a starting-point card. Drag the canvas to pan; double-click, use the +/− controls, or hold Ctrl/⌘ while scrolling to zoom. When the canvas has keyboard focus, arrow keys pan and +/− zoom.

Make it your own

Change the iteration limit for more detail near the boundary. The color cycle and offset remap the calculated counts. Julia sets also let you edit the complex constant c. Color and filter changes render automatically; typed camera and iteration changes use Render image.

Process real images

Image studio opens local PNG, JPEG, WebP, and 8-bit P3/P6 PPM files. Images are decoded on your device, never sent to a server. The app limits dimensions and may downscale raster imports. A reference image for addition or subtraction must match the output size.

Export what you see

PNG and binary P6 PPM preserve the completed canvas dimensions. Original/Processed selects which pixels are exported. ASCII is a compact, downsampled text rendition using the original character thresholds. Share links contain the completed fractal settings, not local image files.

Faithful mathematics; a new interface

The compiled kernel preserves the original escape-count convention—including Mandelbrot’s initial step—and the quadratic and fourth-power Julia formulas. New palettes, inversion, browser controls, and safer import validation are web additions. Diagonal shading preserves rectangular dimensions and rejects division by zero, correcting two issues in the original gradient path.

Deep zoom is finite: the kernel uses double precision, caps iterations at 2,048, and keeps the original −2 to +2 plane limits. The weighted grayscale formula operates directly on stored RGB values, matching the source; it is not a color-managed conversion.

The image, in characters.

Downsampled to at most 100 columns using the original ASCII intensity map.

Share this view

Your browser could not copy automatically. Copy this link: