angle · pivot · lattice() · permute()
Rotations
A turned sheet: machine grid, two writing passes, five cyclic orders at their own angles. No fixed entrance.
Core snippet
// Write the field, turn the sheet, write across.
const plot = new GysinPlot({ seed: 1960 });
plot.lattice("COME TO FREE THE WORDS", -15, -15, 730, 1190, {
turns: [4, 94] // both passes a few degrees off the grid
});
// Cyclic orders cross the field.
GysinText.permute("COME TO FREE THE WORDS", { order: "rotate" })
.forEach((row, i) => {
plot.text(row, x[i], y[i], { size: 24, angle: a[i] });
});
plot.draw();
// Export the same sheet turned 180 degrees.
plot.downloadSVG("turned.svg", { page: { width: 700, height: 1160, rotation: 180 } });
New turn rerolls the hand; New sheet changes the seed; Wear updates the lattice rows; Freeze first pass holds their ground. The second SVG button exports a 180° page turn. Keys:
R, N, W, F, S, T.