Scroll or pinch to zoom · drag to pan · double-click/tap to reset

Points

The whole page was created with Claude Code. These were the most significant prompts that shaped this page:

  1. Write a JavaScript parser for the fractint.ifs format in canvas.php and load the data via PHP.
  2. Add a dropdown below the canvas filled with all the fractal names so I can select a fractal.
  3. Render the currently selected fractal in the canvas using the chaos game algorithm.
  4. Change opacity so that pixels get darker each time they are drawn multiple times.
  5. Optimize rendering by accumulating hit counts in a typed array and writing all pixels with a single putImageData call.
  6. Remove all 3D fractals from parsing entirely.
  7. Add a checkbox overlay showing each affine transformation applied to the bounding box, with colored quadrilaterals labeled T1…Tn.
  8. Add a "Color by transformation" checkbox, tinting each plotted point by which transform produced it instead of shading by hit density. Built on a new shared lib/larsi.org/point-cloud-renderer-2d.js, extracted alongside a matching "color by vertex" checkbox on the Chaos Game page since both needed the same last-write-wins categorical coloring.
  9. Extend PointCloudRenderer2D with mouse-wheel zoom-to-cursor, drag-to-pan, pinch-zoom, and a double-click/double-tap reset — the 2D counterpart of the 3D point-cloud renderer's existing rotate/zoom. Keep the transform overlay in sync with the current zoom/pan instead of a stale snapshot.
  10. Add a Points slider, matching the one on the Chaos Game page — Chaos Game is really just a special case of IFS with a fixed set of "shrink toward this vertex" transforms.