Interactive color camera fractal. Tap, drag, pinch, and tilt to explore Mandelbrot and Julia sets. Use photos as source material for iterative conformal mapping. Realtime WebGL fractal photography on your phone's GPU. Make your own fractal photos free online.
See also: Michael Rule's Perceptron (Rapid Fractal Rendering with Conformal Mapping and Video Feedback)
High-res prints available on request.
Read more about how these fractals were developed.
Press 📷 to choose a video source.
Press 🌈 to switch between image colors or color table rendering.
There are four rendering modes:
A: The pixel z0 = x + yi takes the average color of source pixels at z0, z1, z2, ..., zn.
B: The pixel zn = x + yi takes the average color of source pixels at zn, zn-1, zn-2, ..., z0. For each zi, there are two solutions for zi-1. We pick the one nearest to zi.
C: The image is first made into black and white, by thresholding or dithering. Then for each pixel z0 we find the escape iteration number by finding the first zi which is on a white pixel. We use that number as an index into the color table.
D: We ignore the image. Pixels are colored by how quickly they converge (| zi - zi-1 < .1 |).
Press 🌀 then drag along the picture to change the fractal (Julia coordinate).
Press 🕂 to pan and pinch-zoom.
Press then tap the picture to start a radial cellular automaton.
Press # to browse saved pics, or upload your own to the shared gallery
Speed Dial pics are saved to your device, and not uploaded.
Press 🏄 to control the picture by tilting your phone.
🏂 starts tilting; the slider controls sensitivity.
📲 lets you connect other tilting phones.
The menu has a choice of variables to tilt; by default, the Julia c coordinate.
In 🌈 mode A, B: adjusts brightness, hue, etc.
In 🌈 mode C, D: custom color table.
+, -: add or remove handles.
Pick a handle to adjust
📌 saves as a favorite.
⚙☸ Fractal controls
Iterations: max iterations per pixel.
Colors: number of times the color wheel is repeated between 0 and max iterations.
🌌 returns to the full Mandelbrot set.
🕸 resets the geometry (distortion matrix and tiling).
📷 clears the photo.
z' =: iteration function in terms of z, the previous iteration, c, the start pixel, and real variables p, q, and r. The expression is interpreted by the Wolfram Cloud, so transcendental functions e.g. Sin[z] are allowed.
p, q, r: sliders which can be used as variables in the iteration function.
Adjusts c at each point by an amount proportional to z0.
c' = c + Distortion × z0, where Distortion is the 2x2 matrix:
To produce a Tile effect, we can quantize before (row 1: real and imaginary) and/or after (row 2) multiplying by Distortion.
The automata are developed in all four directions according to the scheme by Daniel Reynolds (SCANTRON).
The seed is a 3x3 square which presents 3 seed cells in each direction. To present the same seed in all directions,
we repeat [a] [b] around the perimeter, where [a] and [b] are user-configurable. In the traditional downward direction,
we can start the seed row with [a] (bind left) or [b] (bind right). Offset 0 sets a cell based on the three cells directly
If you have modified the fractal geometry (stretch, skew), active cells morph to show the fractal without distortion.