with alternating diagonal hatching
Log in to post a comment.
const SIZE = 15; // min=10, max=200, step=1 const draw_stitches = 0; // min=0 max=1 step=1 (No, Yes) const draw_hatches_1 = 1; // min=0 max=1 step=1 (No, Yes) const draw_hatches_2 = 1; // min=0 max=1 step=1 (No, Yes) const n_hatches = 5; // min=1, max=15, step=2 cell = 200 / SIZE Canvas.setpenopacity(-1); const t = new Turtle(); const hor = [] const vert = [] for (let i = 0; i <= SIZE; i++) { hor[i] = [] vert[i] = [] hor[i][0] = (Math.random() < 0.5) vert[i][0] = (Math.random() < 0.5) for (let j = 1; j <= SIZE; j++) { hor[i][j] = !(hor[i][j - 1]) vert[i][j] = !(vert[i][j - 1]) } } if (draw_stitches == 1) { for (let y = 0; y <= SIZE; y++) { for (let x = 0; x <= SIZE; x++) { if (hor[y][x]) { t.jump(-100 + x * cell, -100 + y * cell) t.goto(-100 + (x + 1) * cell, -100 + y * cell) } } } for (let x = 0; x <= SIZE; x++) { for (let y = 0; y <= SIZE; y++) { if (vert[x][y]) { t.jump(-100 + x * cell, -100 + y * cell) t.goto(-100 + x * cell, -100 + (y + 1) * cell) } } } } if (draw_hatches_1 + draw_hatches_2 > 0) { let mark0 = true for (let y = 0; y < SIZE; y++) { if (hor[y][0]) { mark0 = !mark0 } mark = mark0 for (let x = 0; x < SIZE; x++) { if (mark) { if (draw_hatches_1 == 1) { for (let i = 1; i <= n_hatches; i++) { let d = i / (n_hatches + 1) * cell let cx = -100 + x * cell + d let cy = -100 + y * cell + d t.jump(cx, cy) if (i <= n_hatches / 2) { t.goto(cx - d, cy + d) t.goto(cx + d, cy - d) } else { t.goto(cx - (cell - d), cy + (cell -d)) t.goto(cx + (cell - d), cy - (cell -d)) } } } } else { if (draw_hatches_2 == 1) { for (let i = 1; i <= n_hatches; i++) { let d = i / (n_hatches + 1) * cell let cx = -100 + x * cell + d let cy = -100 + (y + 1) * cell - d t.jump(cx, cy) if (i <= n_hatches / 2) { t.goto(cx + d, cy + d) t.goto(cx - d, cy - d) } else { t.goto(cx + (cell - d), cy + (cell -d)) t.goto(cx - (cell - d), cy - (cell -d)) } } } } if (vert[x + 1][y]) { mark = !mark } } } }