line() + text() + asemic()
First Trace
One word-body, three states: legible, worn, almost gone. Seed and decay remain printed on the sheet.
Core snippet
// A minimal trace.
const plot = new GysinPlot({ seed: 1960 });
plot.text("FIRST TRACE", 46, 248); // clean, mechanical text
plot.draw();
// One control scales the disturbances on any block.
const decayed = (o) => ({ ...o,
breathe: (o.breathe ?? 0) * decay, dropout: (o.dropout ?? 0) * decay,
rubout: (o.rubout ?? 0) * decay, fray: (o.fray ?? 0) * decay });
// The same word passes through a stage table.
for (const stage of STAGES) {
const opts = decayed({ size: 46, ...stage.extra, rubout: stage.rubout });
if (font && stage.fill) opts.fill = stage.fill; // only the head is filled
plot.text(word, stage.x, stage.y, opts);
}
// An asemic trace crosses the last copy.
for (const t of TANGLES) {
plot.asemic(t.x, t.y, t.w, t.h, decayed({ dropout: t.dropout }));
}
plot.draw();
Decay +/− or
↑/↓ scales breathe, dropout and rubout. Current decay 1.0× · seed 1960. Click the canvas or New variation for the next word; Download SVG saves this state.