HomeJournalThis post

Diffusion-Limited Aggregation Art

Grow deterministic branching artwork while separating simulation rules, approximation, and art direction.

JP
JP Casabianca
UI/UX designer and full-stack engineer · Bogotá

Diffusion-limited aggregation art can look like coral, lightning, frost, roots, or capillaries because random walkers freeze onto the first connected structure they touch.

This field note builds that growth deterministically, distinguishes the bounded simulation from physical claims, and turns parameters, interventions, and output hashes into an edition receipt.

Diffusion-limited aggregation art starts with a claim

The bounded claim is that a computational cluster grows by releasing random walkers, moving them through a discrete domain, and fixing them when they reach a chosen neighborhood of the existing aggregate. The visual resemblance to natural systems is an analogy, not proof that the artwork reproduces a particular biological or electrical process.

Write the domain, motion rule, seed, sticking rule, boundary, and stop condition before styling. That contract lets viewers distinguish algorithmic structure from the later color, line, crop, and print decisions that create the edition.

For diffusion-limited aggregation art, the working artifact is a simulation claim card. It records domain, lattice or continuous motion, seed geometry, neighborhood, sticking probability, boundary, stop rule, and limitations. I would stop the release when a natural resemblance is presented as scientific simulation; that failure means the evidence cannot support this step's claim.

A tiny seeded aggregate should match a simulation claim card; capture domain, lattice or continuous motion, seed geometry, neighborhood, sticking probability, boundary, stop rule, and limitations. Stop when a natural resemblance is presented as scientific simulation, because that outcome breaks the first boundary under test.

The exact implementation vocabulary here includes DLA algorithm, so the term remains connected to a concrete decision rather than hidden in metadata.

Random walkers join one branching aggregateSeeded walkers move from a launch ring toward a central occupied cluster, with one contact freezing into a new branch.walker 17walker 31occupied cluster
  • Specify: Pin motion, contact, boundary, and RNG.
  • Grow: Attach particles under explicit budgets.
  • Direct: Compare each intervention to baseline.
  • Edition: Render, print, describe, and archive.
Figure 1: Stochastic motion remains reproducible through the RNG and rule receipt; art direction begins from explicit interventions.

Anchor the growth model carefully

The original Witten and Sander work provides the diffusion-limited aggregation reference. This implementation uses Brownian-like random steps in a finite computational field and a browser rendering surface; it does not recreate every experimental condition or establish fractal dimension from one image. Pin coordinate convention, random generator, precision, and Canvas transformation.

If work moves to a Worker, message ordering and transferred state join the deterministic contract. Primary references support the model and platform boundaries while the artistic recipe remains this article's authored layer.

The decision surface for diffusion-limited aggregation art is a source-and-approximation ledger. Its compact receipt contains reference, adopted idea, omitted physics, coordinate system, RNG, renderer, worker protocol, and claim language. If platform implementation details are confused with the physical model, the route stays unresolved and returns to design before polish.

Spatial acceleration should preserve a source-and-approximation ledger; an uninvolved reviewer must recover reference, adopted idea, omitted physics, coordinate system, RNG, renderer, worker protocol, and claim language. Hold the next action when platform implementation details are confused with the physical model.

The primary references for this decision are Witten and Sander DLA paper, HTML Canvas specification, and Web Workers specification. The original DLA paper anchors the growth model, while Canvas and Worker specifications define two practical rendering environments. Artistic bias, acceleration, and print preparation must remain declared interventions rather than being attributed to the physical model.

The exact implementation vocabulary here includes Brownian walkers, so the term remains connected to a concrete decision rather than hidden in metadata.

Build one seeded walker loop

Place a seed near the center or along an authored baseline. Spawn a walker on a launch circle outside the aggregate, move it by a seeded direction rule, kill or relaunch it beyond a bounded radius, and test for occupied neighbors after each step. When the sticking rule passes, add the site exactly once.

Keep occupancy and drawing separate: the simulation updates a canonical structure, then the renderer derives pixels or paths. Brownian walkers can take many unproductive steps, so include maximum steps and total attempts as explicit computational budgets rather than allowing a rare trajectory to hang the page.

I would review diffusion-limited aggregation art through a seeded single-walker state machine, not a slide assembled after implementation. The saved evidence is walker ID, launch point, RNG state, steps, relaunchs, contact site, stick decision, and resulting particle ID. The explicit rejection rule is simple: rendered pixels are the only simulation state.

A biased launch field should be declared in a seeded single-walker state machine, with walker ID, launch point, RNG state, steps, relaunchs, contact site, stick decision, and resulting particle ID retained for comparison. Reopen the design if rendered pixels are the only simulation state.

The exact implementation vocabulary here includes branching generative art, so the term remains connected to a concrete decision rather than hidden in metadata.

Accelerate contact without changing meaning

A naive walker can check every aggregate particle on every step, making growth unusably slow. On a lattice, an occupancy grid or bitset gives local neighbor checks; in continuous space, a spatial hash or quadtree narrows candidates. Add launch and kill radii that follow the cluster's extent, and consider safe long steps only when distance bounds guarantee the walker cannot cross the aggregate unnoticed.

Benchmark each optimization against the reference implementation on small seeded fixtures. Matching particle coordinates or declared equivalence metrics matter more than a prettier frame rate.

This part of diffusion-limited aggregation art becomes testable through a reference-versus-accelerated parity table. Preserve seed, particle count, algorithm, checks, steps, runtime, output digest, divergence, and accepted tolerance. Treat the step as failed whenever an optimization changes sticking while retaining the DLA label silently, even when the visual result appears convincing.

A worker-disabled render should reproduce a reference-versus-accelerated parity table; the fallback receipt is seed, particle count, algorithm, checks, steps, runtime, output digest, divergence, and accepted tolerance. Treat an optimization changes sticking while retaining the DLA label silently as an explicit failed state.

The exact implementation vocabulary here includes deterministic canvas rendering, so the term remains connected to a concrete decision rather than hidden in metadata.

Measure convergence before composing

Track particles, walker steps per attachment, relaunch rate, radial extent, occupied cells, branch density by radius, and angular occupancy. Repeat several seeds at increasing particle counts. The image may appear finished before growth statistics stabilize, while a visually sparse edge can consume most compute.

Choose an edition stop rule from both composition and budget: particle count, radius, coverage, time, or a documented combination. Do not claim a universal fractal dimension from a small cropped cluster. The measurements are a process receipt and comparison tool, not decorative scientific authority.

For diffusion-limited aggregation art, the working artifact is a growth convergence ladder. It records seed, checkpoints, particle count, attempts, radius, density summaries, runtime, memory, and stop reason. I would stop the release when the run stops only when the artist likes a frame; that failure means the evidence cannot support this step's claim.

A tiny seeded aggregate should match a growth convergence ladder; capture seed, checkpoints, particle count, attempts, radius, density summaries, runtime, memory, and stop reason. Stop when the run stops only when the artist likes a frame, because that outcome breaks the first boundary under test.

Art-direct forces without hiding interventions

Composition can begin from multiple seeds, masks, anisotropic step probabilities, flow fields, restricted launch arcs, erosion, pruning, or collisions between differently colored aggregates. Each intervention changes the growth process and should be named in the edition.

Preserve a neutral baseline alongside the directed version so the authored difference remains legible. Branching generative art becomes more interesting when intervention has a purpose: pull growth toward a typographic void, create an asymmetric field around a photograph, or let two color families negotiate one boundary.

The decision surface for diffusion-limited aggregation art is an intervention contact sheet. Its compact receipt contains baseline seed, changed parameter or field, rationale, particle checkpoint, output digest, and selected frame. If post hoc styling is described as emergent simulation behavior, the route stays unresolved and returns to design before polish.

Spatial acceleration should preserve an intervention contact sheet; an uninvolved reviewer must recover baseline seed, changed parameter or field, rationale, particle checkpoint, output digest, and selected frame. Hold the next action when post hoc styling is described as emergent simulation behavior.

LayerExamplesReceipt
ModelWalk + stickRule version
BudgetSteps + particlesStop reason
DirectionMask + fieldIntervention
MaterialLine + inkPhysical proof
Figure 2: Simulation truth and edition direction remain distinct.

Render for screen, print, and access

Keep a vector or high-resolution canonical geometry when possible, then derive Canvas previews, raster exports, and print separations. Test thin branches at target physical size; a line visible on a bright display may disappear in ink or low-quality compression. Use color redundantly with structure and provide a textual description of seed placement, growth direction, density, and intervention.

If animation shows walkers, honor reduced motion and offer a still frame. Deterministic canvas rendering should preserve the same simulation coordinates even when display scale and palette change.

I would review diffusion-limited aggregation art through a multi-output rendering proof, not a slide assembled after implementation. The saved evidence is geometry digest, canvas size, pixel ratio, palette, line policy, export profile, print sample, alt description, and motion mode. The explicit rejection rule is simple: the only artifact is a browser screenshot.

A biased launch field should be declared in a multi-output rendering proof, with geometry digest, canvas size, pixel ratio, palette, line policy, export profile, print sample, alt description, and motion mode retained for comparison. Reopen the design if the only artifact is a browser screenshot.

Connect spatial structure to adjacent methods

Quadtrees can accelerate locality and become visual material, OffscreenCanvas can move rendering work away from input, reaction diffusion creates a different continuous-field texture, and sonification offers a nonvisual path through data. Link these approaches without claiming equivalence.

DLA grows a connected aggregate through particle contact; reaction diffusion evolves concentrations; a mosaic partitions space. The distinctions sharpen the artistic choice and help an engineer choose the right computational material rather than selecting by surface resemblance.

This part of diffusion-limited aggregation art becomes testable through a generative-method distinction table. Preserve method, state, update rule, topology, acceleration, visual affordance, and accessible derivative. Treat the step as failed whenever similar organic textures are treated as the same algorithm, even when the visual result appears convincing.

A worker-disabled render should reproduce a generative-method distinction table; the fallback receipt is method, state, update rule, topology, acceleration, visual affordance, and accessible derivative. Treat similar organic textures are treated as the same algorithm as an explicit failed state.

Related implementation evidence lives in quadtree mosaics, offscreen canvas posters, reaction diffusion WebGPU art, and accessible data sonification. Quadtree layouts, off-thread canvas, reaction diffusion, and sonification provide adjacent techniques with different generative claims. Keep their algorithms named in the edition ledger so hybrid craft does not blur the provenance of a branch.

  1. 1Specify

    Pin motion, contact, boundary, and RNG.

  2. 2Grow

    Attach particles under explicit budgets.

  3. 3Direct

    Compare each intervention to baseline.

  4. 4Edition

    Render, print, describe, and archive.

Figure 3: One work grows from model to material evidence.

Archive a reproducible physical edition

The edition record should contain code and dependency digests, random generator and seed, domain, rules, budgets, optimization, interventions, particle data or checkpoint, geometry hash, viewport, palette, crop, export profile, material, printer, proof notes, and final asset hashes. Re-run a small deterministic fixture before regenerating a large work.

Diffusion-limited aggregation art succeeds when the result can remain unruly and organic while every computational and material choice has an address. The archive preserves surprise without pretending the artist did not direct it.

For diffusion-limited aggregation art, the working artifact is a source-to-print edition ledger. It records simulation identity, intervention history, selected checkpoint, render identity, material proof, rights, final hashes, and owner. I would stop the release when a seed number alone is called reproducibility; that failure means the evidence cannot support this step's claim.

A tiny seeded aggregate should match a source-to-print edition ledger; capture simulation identity, intervention history, selected checkpoint, render identity, material proof, rights, final hashes, and owner. Stop when a seed number alone is called reproducibility, because that outcome breaks the first boundary under test.

The artifact produces a seeded coordinate receipt, demonstrating deterministic input before the full spatial growth implementation.

Runnable artifact — dla-seed-receipt.test.mjs

import assert from "node:assert/strict";import crypto from "node:crypto";
let s=20260824;const random=()=>((s=(s*1664525+1013904223)>>>0)/4294967296);const points=[];
for(let i=0;i<64;i++)points.push([Math.floor(random()*32),Math.floor(random()*32)]);
const hash=crypto.createHash("sha256").update(JSON.stringify(points)).digest("hex");assert.equal(points.length,64);assert.equal(hash.length,64);
console.log("PASS: aggregate is deterministic");

Run node dla-seed-receipt.test.mjs. Expected receipt: PASS: aggregate is deterministic.

Build diffusion-limited aggregation art from a seeded, inspectable walker process, then disclose every force, pruning choice, crop, and material intervention used for composition. Reopen the edition when code, random generation, optimization, or export changes; reproducibility should preserve the recipe without erasing artistic direction.