function draw(ctx) {
const width = ctx.canvas.width;
const height = ctx.canvas.height;
ctx.clearRect(0, 0, width, height);
const lines = [];
let odd = false;
let line;
for (let y = -gap; y <= height + gap; y += gap) {
odd = !odd;
line = [];
for (let x = -gap; x <= width + gap; x += gap) {
line.push({
x: x + (Math.random() * 1 - 0.5) * gap + (odd ? gap / 2 : 0),
y: y + (Math.random() * 1 - 0.5) * gap,
});
}
lines.push(line);
}
odd = true;
for (let y = 0; y < lines.length - 1; y++) {
odd = !odd;
const dotLine = [];
for (let i = 0; i < lines[y].length; i++) {
dotLine.push(odd ? lines[y][i] : lines[y+1][i]);
dotLine.push(odd ? lines[y+1][i] : lines[y][i]);
}
for (let i = 0; i < dotLine.length - 2; i++) {
drawTriangle(ctx, dotLine[i], dotLine[i+1], dotLine[i+2]);
}
}
}