Poisson Disk Sampling for Organic Layouts
Generate natural spacing without clumps or lattice rhythm by validating active-list candidates against an explicit radius, domain, and deterministic grid.
Poisson disk sampling makes a field feel naturally occupied because points keep breathing room without snapping to a visible grid. This guide implements the active-list method, compares it with uniform and jittered placement, and turns minimum distance into an art-direction control.
The proposed applications are constellations, particle seeds, editorial dots, and object layouts where clumps look accidental but regular rows feel mechanical. The receipt includes seed, radius, domain, boundary rule, candidate count, point hash, and a visible three-method comparison.
The vocabulary connects blue-noise sampling, minimum-distance sampling, Bridson algorithm, and organic layout once each while keeping the search intent on natural spacing. That vocabulary supports the article's Poisson disk sampling decision without creating a second intent.
- Seed
- Active list
- Annulus
- Grid
Poisson disk sampling begins with distance
The radius is not a magic realism knob; it defines the smallest permitted center-to-center relationship in the chosen coordinate system. The Bridson sampling paper presents the active-list and background-grid method used by the runnable implementation. The radius describes negative space in the layout's coordinate system, so it should be tied to mark footprint rather than tuned as an abstract knob. A proposed review of “Poisson disk sampling begins with distance” has four inspectable moves.
- Choose domain units before radius
- Relate radius to object footprint
- Decide whether edges wrap, clip, or pad
- Keep density expectations approximate
The proposed evidence for poisson disk sampling begins with distance is the actual nearest-neighbor distribution after generation. The poisson disk sampling begins with distance receipt should bind the relevant input and configuration to the observed output, then retain a deliberately rejected control so the check can prove it distinguishes a bad result.
The falsification target for this Poisson disk sampling decision is tuning radius by screenshot while changing viewport units. If tuning radius by screenshot while changing viewport units occurs, a favorable aggregate can still conceal the exact cohort, queue state, position, geometry, or frame that invalidates the conclusion.
The article's proposed boundary is no accepted pair may violate the serialized distance rule. Promotion under “no accepted pair may violate the serialized distance rule” should wait until another reviewer can evaluate the boundary from named evidence without relying on the author's authority.
Use a background grid for local rejection
A cell size tied to radius limits which existing points can invalidate a candidate. The SVG specification defines the accessible vector output and coordinate system used for the layout specimens. The background grid is an acceleration structure whose correctness can be checked against a brute-force neighbor scan on small fields. A proposed review of “Use a background grid for local rejection” has four inspectable moves.
- Derive cell size from dimension and radius
- Store at most the allowed occupants
- Inspect the complete neighboring cell range
- Test boundary and corner cells
The proposed evidence for use a background grid for local rejection is candidate validation against a brute-force reference on small fields. The use a background grid for local rejection receipt should bind the relevant input and configuration to the observed output, then retain a deliberately rejected control so the check can prove it distinguishes a bad result.
The falsification target for this Poisson disk sampling decision is checking too few neighboring cells and admitting hidden collisions. If checking too few neighboring cells and admitting hidden collisions occurs, a favorable aggregate can still conceal the exact cohort, queue state, position, geometry, or frame that invalidates the conclusion.
The article's proposed boundary is grid and brute-force validators must return the same accepted set. Promotion under “grid and brute-force validators must return the same accepted set” should wait until another reviewer can evaluate the boundary from named evidence without relying on the author's authority.
Compare distributions at equal count
A visual method earns its name through relationships, so uniform, jittered, and distance-bounded fields need the same frame and population. The HTML Canvas specification defines the bitmap drawing surface used when the point count grows beyond the editorial SVG specimen. Equal-count comparisons reveal whether a method creates clumps, axis rhythm, or bounded irregularity without letting density bias the judgment. A proposed review of “Compare distributions at equal count” has four inspectable moves.
- Use identical domain and point count
- Render equal marker sizes
- Plot nearest-neighbor histograms
- Keep seeds visible
The proposed evidence for compare distributions at equal count is clump frequency, axis rhythm, and gap distribution. The compare distributions at equal count receipt should bind the relevant input and configuration to the observed output, then retain a deliberately rejected control so the check can prove it distinguishes a bad result.
The falsification target for this Poisson disk sampling decision is comparing a sparse organic field with a dense random control. If comparing a sparse organic field with a dense random control occurs, a favorable aggregate can still conceal the exact cohort, queue state, position, geometry, or frame that invalidates the conclusion.
The article's proposed boundary is choose the field whose measured spacing and visible rhythm support the composition. Promotion under “choose the field whose measured spacing and visible rhythm support the composition” should wait until another reviewer can evaluate the boundary from named evidence without relying on the author's authority.
| Signal | Decision | Evidence |
|---|---|---|
| Uniform random | Clumped | 0.08 min gap |
| Jittered grid | Regular | axis rhythm |
| Poisson | Organic | 0.31 min gap |
Make candidate acceptance runnable
The small geometric predicate should be proven before it disappears inside a fast generator. The boundary predicate deserves epsilon tests because mixing squared and unsquared units creates collisions that are difficult to see in a large field. A proposed review of “Make candidate acceptance runnable” has four inspectable moves.
- Test exactly-at-radius behavior
- Test one epsilon inside and outside
- Include several neighbors
- Use squared distance consistently
The proposed evidence for make candidate acceptance runnable is running deterministic boundary fixtures. The make candidate acceptance runnable receipt should bind the relevant input and configuration to the observed output, then retain a deliberately rejected control so the check can prove it distinguishes a bad result.
The falsification target for this Poisson disk sampling decision is mixing squared and unsquared units. If mixing squared and unsquared units occurs, a favorable aggregate can still conceal the exact cohort, queue state, position, geometry, or frame that invalidates the conclusion.
The article's proposed boundary is the predicate applies one documented inclusive or exclusive boundary everywhere. Promotion under “the predicate applies one documented inclusive or exclusive boundary everywhere” should wait until another reviewer can evaluate the boundary from named evidence without relying on the author's authority.
Runnable artifact. Save this bounded specimen as poisson-disk-organic-layouts.test.mjs and run node --test poisson-disk-organic-layouts.test.mjs. Expected result: PASS: radius rejects close candidates.
import assert from "node:assert/strict";
import test from "node:test";
const valid = (p, points, radius) => points.every(q => (p.x-q.x)**2 + (p.y-q.y)**2 >= radius**2);
test("enforces minimum radius", () => {
assert.equal(valid({x:3,y:4}, [{x:0,y:0}], 5), true);
assert.equal(valid({x:2,y:2}, [{x:0,y:0}], 5), false);
console.log("PASS: radius rejects close candidates");
});
Art-direct variable radii
Real layouts often contain marks of different visual weight, so a single center distance can still create apparent collisions. Variable radii should account for visible footprints; equal center spacing can still let a heavy focal mark swallow its neighbors. A proposed review of “Art-direct variable radii” has four inspectable moves.
- Map weight to collision radius
- Choose a symmetric pair rule
- Generate large elements first
- Record rejected density near focal marks
The proposed evidence for art-direct variable radii is edge-to-edge breathing room across size cohorts. The art-direct variable radii receipt should bind the relevant input and configuration to the observed output, then retain a deliberately rejected control so the check can prove it distinguishes a bad result.
The falsification target for this Poisson disk sampling decision is using center distance while a large object swallows its neighbors. If using center distance while a large object swallows its neighbors occurs, a favorable aggregate can still conceal the exact cohort, queue state, position, geometry, or frame that invalidates the conclusion.
The article's proposed boundary is every pair clears the chosen visual-footprint rule. Promotion under “every pair clears the chosen visual-footprint rule” should wait until another reviewer can evaluate the boundary from named evidence without relying on the author's authority.
Shape the domain deliberately
Masks, holes, wrapping, and margins can turn an even field into a recognizable silhouette without changing its local texture. A shaped domain changes global silhouette while the local distance rule continues to author the texture of the remaining space. A proposed review of “Shape the domain deliberately” has four inspectable moves.
- Represent the domain as an explicit predicate
- Test narrow bridges and corners
- Reserve editorial negative space
- Separate domain rejection from neighbor rejection
The proposed evidence for shape the domain deliberately is coverage and gap distribution per domain region. The shape the domain deliberately receipt should bind the relevant input and configuration to the observed output, then retain a deliberately rejected control so the check can prove it distinguishes a bad result.
The falsification target for this Poisson disk sampling decision is blaming the sampler for empty areas created by a thin mask. If blaming the sampler for empty areas created by a thin mask occurs, a favorable aggregate can still conceal the exact cohort, queue state, position, geometry, or frame that invalidates the conclusion.
The article's proposed boundary is the domain must be wide enough to support the requested radius and composition. Promotion under “the domain must be wide enough to support the requested radius and composition” should wait until another reviewer can evaluate the boundary from named evidence without relying on the author's authority.
- SeedSeed
Place one valid point and register its grid cell.
- ProposePropose
Draw bounded candidates around an active point.
- RejectReject
Inspect nearby grid cells for radius violations.
- RetireRetire
Remove points that cannot produce another neighbor.
Budget progressive generation
Large browser fields should appear without monopolizing input and should reproduce regardless of how work is sliced across frames. Chunking work across animation frames must not change random draw order, or performance scheduling becomes an undocumented seed. A proposed review of “Budget progressive generation” has four inspectable moves.
- Use a fixed random stream
- Process bounded candidate batches
- Yield between batches
- Keep generation order independent of display frames
The proposed evidence for budget progressive generation is p95 task duration and final point hash. The budget progressive generation receipt should bind the relevant input and configuration to the observed output, then retain a deliberately rejected control so the check can prove it distinguishes a bad result.
The falsification target for this Poisson disk sampling decision is letting frame timing decide random draw order. If letting frame timing decide random draw order occurs, a favorable aggregate can still conceal the exact cohort, queue state, position, geometry, or frame that invalidates the conclusion.
The article's proposed boundary is chunked and uninterrupted runs must produce the same point set. Promotion under “chunked and uninterrupted runs must produce the same point set” should wait until another reviewer can evaluate the boundary from named evidence without relying on the author's authority.
Publish the spacing recipe
The durable artifact is a set of points plus the rules that made their negative space intentional. The point set is reproducible when radius, domain, boundary, candidate limit, seed, ordering, and export hash stay together. A proposed review of “Publish the spacing recipe” has four inspectable moves.
- Save radius and variable-size mapping
- Save seed and candidate limit
- Save domain and boundary mode
- Hash ordered points and export
The proposed evidence for publish the spacing recipe is regenerating the field at the original dimensions. The publish the spacing recipe receipt should bind the relevant input and configuration to the observed output, then retain a deliberately rejected control so the check can prove it distinguishes a bad result.
The falsification target for this Poisson disk sampling decision is saving only the final bitmap. If saving only the final bitmap occurs, a favorable aggregate can still conceal the exact cohort, queue state, position, geometry, or frame that invalidates the conclusion.
The article's proposed boundary is another renderer can reconstruct the same layout and collision proof. Promotion under “another renderer can reconstruct the same layout and collision proof” should wait until another reviewer can evaluate the boundary from named evidence without relying on the author's authority.
Keep the boundary visible
Define the radius in the same units as the marks, validate candidates locally with a proved grid rule, and compare distributions at equal population. The negative space is the primary output.
Variable footprints, shaped domains, progressive generation, and fixed random order turn a classic sampler into a useful compositional tool rather than a one-off texture trick.
Continue through four related field notes: seeded randomness, WebGPU generative art, constraint-based layout, canvas dithering. Each extends the Poisson disk sampling method without changing this article's single search intent.