# 240 full-field explorations

**[Open the visual gallery](gallery.html)** · [All collections](../index.html) · [Previous 240 patterns](../full-field-collection/gallery.html) · [First research experiments](../research-full-field/gallery.html)

[![Twenty-four families of whole-field QR art](contact-sheet.png)](gallery.html)

Twenty-four families: six actual fractal families, six harmonic/parametric-curve families, and twelve further optical, cellular, organic and geometric families. Each has ten different compositions. Every final QR encodes exactly **https://jdt.engineering**. Artwork constraints cover the complete data/parity field with equal priority, right to the symbol edges. There is no central picture insert, transparent background, or painted-over QR. The required function patterns and four-module white quiet zone remain intact.

Use the offline gallery to filter, search, enlarge, move between designs with arrow keys, inspect targets and download PNG/SVG files. Targets are clearly marked **not QR codes**. The gallery embeds its metadata and works from a local file without fetch/CDNs; Panton is loaded from the existing sibling patterns/panton.css.

## Families

| Family | Explore | Exports | Contact sheet |
|---|---|---|---|
| Mandelbrot contours | [10 designs](gallery.html#mandelbrot) | [PNG/SVG index](families/mandelbrot/README.md) | [Sheet](families/mandelbrot/contact-sheet.png) |
| Julia lattices | [10 designs](gallery.html#julia) | [PNG/SVG index](families/julia/README.md) | [Sheet](families/julia/contact-sheet.png) |
| Burning Ship fields | [10 designs](gallery.html#burning-ship) | [PNG/SVG index](families/burning-ship/README.md) | [Sheet](families/burning-ship/contact-sheet.png) |
| IFS quilts | [10 designs](gallery.html#ifs-quilts) | [PNG/SVG index](families/ifs-quilts/README.md) | [Sheet](families/ifs-quilts/contact-sheet.png) |
| Hilbert transformations | [10 designs](gallery.html#hilbert-flow) | [PNG/SVG index](families/hilbert-flow/README.md) | [Sheet](families/hilbert-flow/contact-sheet.png) |
| Dragon folds | [10 designs](gallery.html#dragon-folds) | [PNG/SVG index](families/dragon-folds/README.md) | [Sheet](families/dragon-folds/contact-sheet.png) |
| Lissajous knots | [10 designs](gallery.html#lissajous) | [PNG/SVG index](families/lissajous/README.md) | [Sheet](families/lissajous/contact-sheet.png) |
| Lissajous ribbons | [10 designs](gallery.html#lissajous-ribbons) | [PNG/SVG index](families/lissajous-ribbons/README.md) | [Sheet](families/lissajous-ribbons/contact-sheet.png) |
| Phase diagrams | [10 designs](gallery.html#lissajous-phase) | [PNG/SVG index](families/lissajous-phase/README.md) | [Sheet](families/lissajous-phase/contact-sheet.png) |
| Hypotrochoid fields | [10 designs](gallery.html#hypotrochoids) | [PNG/SVG index](families/hypotrochoids/README.md) | [Sheet](families/hypotrochoids/contact-sheet.png) |
| Epitrochoid fields | [10 designs](gallery.html#epitrochoids) | [PNG/SVG index](families/epitrochoids/README.md) | [Sheet](families/epitrochoids/contact-sheet.png) |
| Fourier loop textiles | [10 designs](gallery.html#fourier-loops) | [PNG/SVG index](families/fourier-loops/README.md) | [Sheet](families/fourier-loops/contact-sheet.png) |
| Reaction diffusion | [10 designs](gallery.html#gray-scott) | [PNG/SVG index](families/gray-scott/README.md) | [Sheet](families/gray-scott/contact-sheet.png) |
| Voronoi mosaics | [10 designs](gallery.html#voronoi) | [PNG/SVG index](families/voronoi/README.md) | [Sheet](families/voronoi/contact-sheet.png) |
| Cellular ribbons | [10 designs](gallery.html#cellular-bands) | [PNG/SVG index](families/cellular-bands/README.md) | [Sheet](families/cellular-bands/contact-sheet.png) |
| Warped checkerboards | [10 designs](gallery.html#conformal-checks) | [PNG/SVG index](families/conformal-checks/README.md) | [Sheet](families/conformal-checks/contact-sheet.png) |
| Moiré screens | [10 designs](gallery.html#moire-screens) | [PNG/SVG index](families/moire-screens/README.md) | [Sheet](families/moire-screens/contact-sheet.png) |
| Woven ribbons | [10 designs](gallery.html#ribbon-weaves) | [PNG/SVG index](families/ribbon-weaves/README.md) | [Sheet](families/ribbon-weaves/contact-sheet.png) |
| Distance-field contours | [10 designs](gallery.html#distance-contours) | [PNG/SVG index](families/distance-contours/README.md) | [Sheet](families/distance-contours/contact-sheet.png) |
| Superformula tiles | [10 designs](gallery.html#superformula) | [PNG/SVG index](families/superformula/README.md) | [Sheet](families/superformula/contact-sheet.png) |
| Wave packets | [10 designs](gallery.html#wave-packets) | [PNG/SVG index](families/wave-packets/README.md) | [Sheet](families/wave-packets/contact-sheet.png) |
| Recursive tilings | [10 designs](gallery.html#recursive-tiles) | [PNG/SVG index](families/recursive-tiles/README.md) | [Sheet](families/recursive-tiles/contact-sheet.png) |
| Optical staircases | [10 designs](gallery.html#optical-stairs) | [PNG/SVG index](families/optical-stairs/README.md) | [Sheet](families/optical-stairs/contact-sheet.png) |
| Harmonic light fields | [10 designs](gallery.html#harmonic-caustics) | [PNG/SVG index](families/harmonic-caustics/README.md) | [Sheet](families/harmonic-caustics/contact-sheet.png) |

## What was selected and checked

- **240 distinct PNGs**: ZXing 240/240, OpenCV 240/240, exact full-symbol payload and detection extent checked. All encode the exact root URL above.
- All 240 matrices independently reconstructed from raw data + Reed–Solomon parity + mask using Nayuki qrcodegen, independent of the generating QR arithmetic.
- Every saved PNG and SVG is audited against its matrix; no introduced codeword errors or overwritten function modules. See [audit.json](audit.json) and the [manifest](manifest.json).
- Versions 12–15, ECC L, four candidate masks per composition. Each family changes complex-plane viewport, Julia parameter, recursion/transform, frequency ratio, phase or rolling-circle geometry; variants are not just different QR masks or random seeds.
- Whole-matrix target agreement ranges **81.6–85.1%**. This measures artwork resemblance, not scanning reliability. Fixed structures count toward this score.
- 1040 candidates were evaluated, 1024 passed both decoders. Only verified choices are presented as finished designs. [All candidate matrices and evidence](archives/all-candidates.zip) are retained, including failed or superseded experiments.

These are artistic, exact-parity QR codes with **noncanonical padding after the terminator**. Masks are selected for appearance and observed decoding rather than minimum standard visual penalty. Successful decoding and exact parity do not establish formal ISO conformance or universal scanner compatibility. This batch has not been qualified with phone cameras, printing, perspective, glare, blur or damage. ECC L leaves less damage margin than higher levels. Fractal texture is not recursive scannability; radial artwork is not a claim of exact rotational symmetry.

The method and alternatives are explained in the [original research notes](../research-full-field/README.md), including conventional numeric-fragment QArt as a possible later route. No DNS, subdomain, redirect or website mutation was performed for this collection.

## Mathematical targets

- Mandelbrot targets iterate z²+c with a variable c and z=0; Julia targets use a fixed c and vary the initial z. The source records ten viewports or parameters per family. Images are finite escape-time bands (180 iterations), not claims that every sampled point has been proven to belong to an infinite set.
- Burning Ship uses the same quadratic iteration after taking the absolute value of each component. Different viewports and contour frequencies expose its angular filaments.
- IFS quilts use actual iterative affine/contractive point systems: Barnsley fern, triangular gasket, pentagonal gasket, Vicsek cross and a branching system. Repeated, transformed copies extend over the entire QR field.
- Hilbert targets transform a recursively ordered Hilbert traversal with global shear, waves and twist. Dragon targets generate actual paperfold turn sequences; two variants use recursively subdivided Levy C curves. These transformed path artworks do not claim to preserve every property of the ideal untransformed curve.
- Lissajous targets trace x=sin(at+phase), y=sin(bt) with coprime frequency pairs; ribbon and phase families layer or progressively phase-shift these curves.
- Hypotrochoids and epitrochoids use the inner/outer rolling-circle equations, while Fourier textiles sum several sinusoidal harmonics. Curves are tiled, overlap adjacent tiles or are warped across the whole field instead of appearing as a lone central logo.
- Voronoi mosaics and cellular ribbons use periodic nearest-site distance fields with different distance metrics and contour rules. Checkerboards use complex powers, inversion and global warps; moiré images combine binary screen patterns.
- Reaction-diffusion targets run the actual two-species Gray–Scott equations on a periodic 72×72 lattice for 1,300 steps, with ten feed/kill parameter pairs. They are thresholded finite-time simulations, not asserted equilibrium solutions. Woven ribbons use crossing bands with alternating local priority.
- Distance-field contours, superformula tiles, wave packets, multiscale geometric tilings and quantized staircase fields provide further nonfractal designs. Harmonic light fields are analytic caustic-inspired patterns, not a physically traced optical simulation.

All target arrays are retained next to the final QR. The art solver approximates these mathematical targets while preserving the exact QR payload and parity.

## Reproduce

All heavy generation was performed on the native WSL filesystem. Included standalone JS needs only Node; rebuilding it from TypeScript uses pinned esbuild 0.28.2.

~~~sh
npm ci
npm run build
mkdir -p work
node src/generate.mjs
# Existing workspace environment; never use system Python for packages.
source ../.venv/bin/activate
python src/validate.py
node src/build-notes.mjs
node src/build-gallery.mjs
python src/audit.py
~~~

For a fresh checkout, create and activate a local virtual environment and install the pinned packages in [requirements.txt](requirements.txt). Existing Panton font assets in ../patterns/fonts are required for the contact sheets. Normal generation produces 960 candidates. The delivered archive retains 1040 candidates, including any later curation/rescue trials. The delivered run was built in two stages: 480 initial fractal/curve candidates and 480 additional visual candidates; <code>--additional</code> generates only the latter families. <code>--repair family-01,family-02</code> generates selected compositions separately; validation prefers a repair over superseded candidates. <code>--rescue</code> generates alternative masks/versions only for designs listed in work/missing.json with no dual-decoder candidate.

The [manifest](manifest.json) contains codewords, exact URLs, masks, dimensions, scores, PNG hashes, decoder results and tool versions. Per-design data.json also contains base64 module/target arrays (one byte 0/1 per module). The ZIP retains every generated candidate in this format, so unselected options can be reconstructed without guessing. Contact sheets are previews; use individual PNG/SVG exports to scan or print.

## Source and attribution

Original full-field solver and mathematical targets: [bit-field.ts](src/bit-field.ts), [fractal/curve targets](src/patterns.mjs), [additional targets](src/patterns-extra.mjs), [generation script](src/generate.ts). QR arithmetic: pinned MIT furious-qr commit 456a598a3630bb0b1d74421c1f9f0c769b542608; [provenance](src/core/UPSTREAM.md) and [license](src/core/LICENSE-furious-qr.txt). Original collection additions are MIT; Panton assets retain their separate existing license. Independent validation uses qrcodegen, zxing-cpp, OpenCV, Pillow and CairoSVG; versions are recorded in the audit.
