clumps of randomness
Log in to post a comment.
Canvas.setpenopacity(1);
const turtle = new Turtle();
const MARGIN = 15; // min=0, max=50, step=1
const COUNT_PER_ROW=5; // min=1, max=25, step=1
const MIN_POINTS = 15; // min=4, max=100, step=1
const MAX_POINTS = 80; // min=4, max=100, step=1
const SIZE=200, BOX_SIZE = (SIZE - (MARGIN * (COUNT_PER_ROW + 1))) / COUNT_PER_ROW, MBOX_SIZE = BOX_SIZE + MARGIN, CENTER=SIZE / 2;
turtle.jump(MARGIN - CENTER, MARGIN - CENTER);
turtle.pendown();
const goto = (x, y) => turtle.goto(x - CENTER, y - CENTER);
const rand = (min, max) => Math.random() * (max - min) + min;
let minX=MARGIN, minY=MARGIN;
function walk(k) {
for(let i=rand(MIN_POINTS, MAX_POINTS) ; i >= 0 ; i--) {
const x = rand(minX, minX + BOX_SIZE), y = rand(minY, minY + BOX_SIZE);
goto(x, y);
}
goto(minX + BOX_SIZE / 2, minY + BOX_SIZE / 2);
if((k + 1) % COUNT_PER_ROW === 0) {
minX += MBOX_SIZE;
} else {
const isOddRow = ! ((k + 1) / COUNT_PER_ROW & 1);
minY = minY + ((isOddRow ? 1 : -1) * MBOX_SIZE);
}
const notLast = (k + 1) < (COUNT_PER_ROW * COUNT_PER_ROW)
notLast && goto(minX + BOX_SIZE / 2, minY + BOX_SIZE / 2);
return notLast;
}