Cellular Automata Woven Patterns for Cloth
A loom-aware workflow for translating cellular automata into woven patterns through color plans, lift plans, drawdowns, repeat tests, float scans, and proofs.
Cellular automata woven patterns can make time visible as cloth: one generation follows another while local binary rules produce checks, diagonals, interruptions, and self-similar fields. Yet a screen grid is not a weave until each cell has a physical meaning in warp, weft, color, or interlacement.
The design task is to preserve emergence while respecting repeats, floats, sett, yarn, loom, and the knowledge embodied in textile practice. The proof names cellular automata textile design, warp-weft drawdown, woven repeat validation, and rule 30 rule 90 rule 110 as separate layers of the material decision.
Cellular automata woven patterns need a cell meaning
An elementary one-dimensional automaton begins with a binary row and uses each cell's left, center, and right neighborhood to produce the next row. Stacking generations creates a two-dimensional image. Before calling it textile, decide what zero and one control. They might select yarn colors, choose warp-over-weft, switch a binding family, or direct a supplemental thread. These mappings are materially different even when the preview uses the same black and white pixels.
The J-STAGE study of cellular automata in textile design explores cellular automata and fractal arrangement for textile application. Use such work as evidence that CA can organize textile design, then make your own production mapping explicit. Cellular automata woven patterns should include a drawdown, not only the automaton image.
Keep four layers: CA source rows, yarn color plan, interlacement or lift plan, and rendered cloth simulation. A state-as-color mapping may be printable or usable with a fixed weave. A state-as-lift mapping directly changes floats and structure. Never let the preview conflate them. Label warp direction, weft direction, generation direction, repeat unit, and loom assumptions. That vocabulary turns a generative bitmap into a proposal another textile practitioner can inspect.
- CA rows
- color plan
- drawdown
- woven proof
Runnable artifact: The 11 checks keep cellular automata woven patterns deterministic across three rules while asserting repeat behavior, fallback, accessibility, and a hard cell budget. The drawdown adapter can add material-specific float criteria without rewriting evolution.
Save this as cellular-woven-repeat.mjs and run node cellular-woven-repeat.mjs. Expected final line: PASS: 11 cellular textile assertions.
import assert from "node:assert/strict";
const variants = Object.freeze({ storm: 30, lace: 90, structure: 110 });
export function evolve(rule, width, steps, seed, maxCells = 65_536) {
if (!Number.isInteger(rule) || rule < 0 || rule > 255) throw new RangeError("invalid_rule");
if (!Number.isInteger(width) || !Number.isInteger(steps) || width <= 0 || steps <= 0 || width * steps > maxCells) throw new RangeError("cell_budget_exceeded");
let row = seed ? [...seed] : Array.from({ length: width }, (_, i) => i === Math.floor(width / 2) ? 1 : 0);
if (row.length !== width || row.some((cell) => cell !== 0 && cell !== 1)) throw new Error("invalid_seed");
const rows = [Object.freeze([...row])];
for (let generation = 1; generation < steps; generation += 1) { row = row.map((_, i) => { const left = row[(i - 1 + width) % width], center = row[i], right = row[(i + 1) % width]; return (rule >> ((left << 2) | (center << 1) | right)) & 1; }); rows.push(Object.freeze([...row])); }
return Object.freeze(rows);
}
export const repeatRow = (row, copies) => Object.freeze(Array.from({ length: row.length * copies }, (_, i) => row[i % row.length]));
export const textileMode = ({ reducedMotion, canvasAvailable }) => !canvasAvailable ? "semantic-drawdown-table" : reducedMotion ? "static-drawdown" : "generation-animation";
export const textileDescription = (rule, width, steps) => "Rule " + rule + " woven drawdown, " + width + " warp cells by " + steps + " weft picks";
let assertions = 0; const check = (fn) => { fn(); assertions += 1; };
check(() => assert.deepEqual(evolve(variants.storm, 9, 8), evolve(variants.storm, 9, 8)));
check(() => assert.notDeepEqual(evolve(variants.storm, 9, 8), evolve(variants.lace, 9, 8)));
check(() => assert.notDeepEqual(evolve(variants.lace, 9, 8), evolve(variants.structure, 9, 8)));
check(() => assert.equal(evolve(variants.structure, 9, 8).length, 8));
check(() => assert.ok(evolve(variants.storm, 9, 8).flat().every((cell) => cell === 0 || cell === 1)));
check(() => assert.deepEqual(repeatRow([1,0,1], 3), [1,0,1,1,0,1,1,0,1]));
check(() => assert.equal(evolve(30, 1, 1)[0][0], 1));
check(() => assert.throws(() => evolve(256, 9, 8), /invalid_rule/));
check(() => assert.throws(() => evolve(30, 1000, 1000), /cell_budget_exceeded/));
check(() => assert.equal(textileMode({ reducedMotion: true, canvasAvailable: true }), "static-drawdown"));
check(() => assert.match(textileDescription(90, 16, 20), /16 warp cells by 20 weft picks/));
assert.equal(Object.keys(variants).length, 3); assert.equal(assertions, 11); console.log("PASS: 11 cellular textile assertions");
Compare storm, lace, and structure rules
Choose at least three rules because one attractive swatch reveals little about the design space. Rule 30 can support an irregular storm field. Rule 90 creates a sparse, self-similar lace. Rule 110 forms persistent structures and moving interactions. These names are art-direction labels layered over known rule numbers; they do not replace the numeric receipt. Cellular automata woven patterns should show matched widths, generation counts, seeds, palettes, and material mappings.
The IJDesign pied-de-poule case study connects cellular-automata generation, emergent behavior, and woven fashion pieces. Its attention to translation is important: recognizable houndstooth is already a relationship among color blocks, balanced twill, and float length. A CA-inspired variation must still become a weaving plan rather than a printed imitation if woven structure is the claim.
Make a contact sheet of raw rows, color simulation, and drawdown for each variant. Measure state balance, run lengths, periodicity, diagonal direction, seam mismatch, and maximum structural float. Seeded randomness in generative art matters if initial rows contain randomness; otherwise use a centered single-cell seed as a clean reference. Select rules for genuinely different spatial behavior. Changing only yarn color yields a palette study, not three purposeful automata variants.
| Binary source | Warp-weft mapping | Material risk |
|---|---|---|
| State as yarn color | Rows choose weft palette | Long same-color fields |
| State as lift plan | Cells choose warp over weft | Unsafe floats |
| Generation as stripe | Time runs along cloth length | Repeat seam |
| Neighborhood as twill | Rule selects binding family | Pattern no longer literal |
Translate time into warp, weft, or both
If generations run down the cloth, each new weft pick can correspond to one CA row while warp positions correspond to cells. This makes time legible along length, but a wide digital row may exceed harness or jacquard constraints. Rotating the mapping changes which system carries the complexity. Mirroring or interleaving generations can create a repeat, but it also changes the original temporal sequence.
Cellular automata woven patterns need a declared translation rule. For color-only work, assign binary state to weft or warp color within a stable structure. For structural work, convert state to lift decisions and scan floats in both directions. For a binding-family mapping, use CA regions to choose among prevalidated weave structures whose transitions are themselves valid. Keep the raw automaton beside the drawdown so those interventions remain visible.
The paper on cellular automata and Indonesian traditional weaving frames computational exploration in relation to traditional craft and emphasizes structural as well as aesthetic properties. Treat that relationship respectfully. Do not market a generic Rule 30 bitmap as an Indonesian motif. Collaborate, cite specific traditions and makers when relevant, and distinguish inspiration from reproduction. Cellular automata woven patterns can open a design conversation, but cultural context and material expertise are not parameters a generator owns.
Prove repeats and scan every float
A horizontal repeat must preserve the neighborhoods at its seam. Periodic boundary evolution provides one route, but the chosen width and initial row can still produce a visible motif break when tiled. A vertical repeat is harder because the final generation must transition intentionally to the first. Mirroring, cycling, or selecting a detected period can close it; each changes the time story. Cellular automata woven patterns should state whether the repeat is exact, mirrored, or composed.
Run a float scan on the actual lift plan. Count consecutive warp-over and weft-over cells and compare with material, sett, use, and loom limits. A color simulation cannot expose a dangerous structural float. Add edge stability, color inventory, repeat dimensions, and estimated picks per unit. Moire interference patterns is relevant when small repeats, screen preview, and woven grids generate secondary bands; proof at physical scale instead of treating aliasing as the cloth.
The artifact below verifies Rule 30, 90, and 110 variants, deterministic generation, binary output, row count, a repeated row, centered-seed fallback, invalid rule, cell-budget failure, reduced-motion output, and semantic drawdown description. Extend it with loom-specific float limits after defining the cell-to-lift mapping. The important separation remains: automaton correctness can be tested generically, while weave correctness depends on the material interpretation.
Proof the drawdown in yarn, not only pixels
Start with a small woven sample at the intended yarn, sett, structure, and finishing process. Mark warp and weft orientation and retain an unwashed and finished comparison. Threads compress, colors optically mix, floats shift, and diagonals change proportion. Cellular automata woven patterns should be adjusted from these physical observations, with the adjustment recorded as a translation decision rather than hidden in the source rule.
Use canvas dithering only as a screen-preview aid; it does not predict yarn blending automatically. Photograph the sample under consistent light and compare state balance, repeat seam, diagonal angle, and minimum readable feature with the digital drawdown. Check reverse side, drape, snag risk, and intended use. A wall hanging and garment tolerate different floats and densities.
Accessibility includes a text description of rule, seed, direction, colors, repeat, and dominant motif. Animation that reveals generations should respect reduced motion with the complete static drawdown. If canvas fails, expose a semantic table for a bounded sample and a verified image for the full pattern. Set width and generation budgets before rendering, and paginate contact sheets rather than freezing the page. Performance fallback should reduce preview scale, never mutate the automaton or weave plan under the same edition name.
| Proof | Invariant | Reject when |
|---|---|---|
| Horizontal tile | First and last warp neighborhoods agree | Seam creates new motif |
| Vertical tile | Generation boundary is intentional | Time jump reads as error |
| Float scan | Maximum over-under run is bounded | Yarn stability fails |
| Reduced view | Pattern remains described in text | Meaning depends on animation |
Publish source, drawdown, and material receipt
Record rule, neighborhood, boundary, seed, width, generations, orientation, color plan, cell meaning, binding structures, repeat method, float limits, yarns, sett, loom, finishing, renderer, and code revision. Include raw rows, mapped drawdown, three rule swatches, seam tests, float report, physical photographs, and accessibility description. Cellular automata woven patterns become reproducible when computational and textile transformations are both visible.
Reject a pattern with an unexplained seam, invalid float, lost orientation, material collapse, inaccessible animation, or a cultural claim unsupported by collaboration and citation. Compare storm, lace, and structure variants at matched scale. Preserve unsuccessful swatches; they reveal how digital regularity changed in yarn and prevent the next iteration from repeating the same assumption.
The finished cloth should hold three forms of knowledge together. The automaton contributes local rules and temporal emergence. The designer contributes mapping, hierarchy, scale, and repeat. The weaver and material contribute structure, tolerance, and touch. That layered authorship is the real promise of cellular automata woven patterns: not pixels printed on fabric, but a computational rhythm translated into a credible textile system. Preserve the failed swatches, loom notes, washed proofs, and mapping decisions so the next edition can change deliberately without erasing material evidence.