Presets
Playback
Map parameters
View window
Rendering and speed
Camera
Layers
Quality
Model check
The science
The map
The Clifford attractor (named after Clifford Pickover's books) iterates the plane map
xn+1 = sin(a yn) + c cos(a xn), yn+1 = sin(b xn) + d cos(b yn).
Because |sin| and |cos| are at most 1, every orbit ends up in the box |x| ≤ 1+|c|, |y| ≤ 1+|d| (dashed in the picture), whatever a, b, c, d are. The picture is a histogram of where one long orbit lands: brighter pixels are visited more often, so you are looking at the invariant measure, not at individual points.
Chaos: Lyapunov exponents
Two orbits that start a distance δ apart separate like δ eλ1 n. The exponents are the long-run averages of the log stretching rates of the Jacobian
J = [[-a c sin(a x), a cos(a y)], [b cos(b x), -b d sin(b y)]]. The page follows two orthonormal tangent vectors with Gram-Schmidt re-orthonormalisation every step (Benettin's method) and accumulates λi = (1/n) Σ ln |stretchi|. λ1 > 0 means sensitive dependence (chaos); λ1 < 0 means an attracting cycle, and the picture collapses to a few bright dots. Since the product of the two stretch factors is |det J|, the identity λ1 + λ2 = mean ln |det J| holds and is checked live. The map in the bottom-right graph is λ1 over the (a, b) plane for the current c, d (900 steps per pixel): click it to jump to any point.
Dimension
Box counting covers the picture with boxes of side ε and counts the occupied ones, N(ε) ∝ ε-D; the slope in the log-log graph is the box-counting dimension D (1 for a curve, 2 for a filled area). The Kaplan-Yorke (Lyapunov) dimension DKY = 1 + λ1/|λ2| uses the exponents instead, valid when λ1 > 0 and λ1 + λ2 < 0. A fixed point solves F(p) = p; Newton's method finds it and its multipliers (eigenvalues of J) tell whether it attracts (both below 1) or repels.
Honest simplifications
The histogram is 512 x 512 cells, so box sizes below two cells are not available, the fitted D is biased low when few points have landed, and the fit uses scales of 4 to 64 cells only. Lyapunov exponents come from a separate orbit with the same parameters (to keep the picture cheap), so they agree with the picture statistically but not point by point. With 64-bit floats a chaotic orbit is a shadow of a true orbit, which is fine for the invariant measure. The map has no physical units: it is a pure mathematical example of a dissipative chaotic system.
What to try
Load the presets, then move one slider by 0.01 and watch the picture change shape. Click the blue regions of the Lyapunov map to see regular cycles and the orange ones to see chaos. Zoom in with the wheel and drag to pan: fine filaments never resolve into smooth surfaces, which is what a fractal dimension below 2 means.
What the 3D scene shows
The glass case holds a relief of the invariant density of the orbit: height and colour both come from the same histogram that the 2D page paints (a 512 x 512 grid, 4 x 4 cells per mesh vertex, maximum of each block, log tone curve). The bright bead is the current orbit point on the relief; its tail shows the last iterations and rises with age so that the order of visits can be read (the rise is a visual device, not a third coordinate of the map). The green or red ring marks the period-1 fixed point (stable or unstable). The gallery was modelled and baked in Blender; the relief and the numbers are computed live in JavaScript with the same code as the 2D page.