Lace-making

Like lacing a wheel

Log in to post a comment.

// You can find the Turtle API reference here: https://turtletoy.net/syntax
Canvas.setpenopacity(.7);

const drawCircle = 1; // min=0, max=1, step=1
const grid = 5; // min=1, max=10, step=1
const margin = .1; // min=0, max=.5, step=.01

// Global code will be evaluated once.
const turtle = new Turtle();

// The walk function will be called until it returns false.
function walk(i) {
    let col = i % grid;
    let row = i / grid | 0;
    
    let x = 100 - ((col + .5) * (200 / grid));
    let y = 100 - ((row + .5) * (200 / grid));
    let r = ((200 / grid) * (1 - margin)) / 2;

    draw(x, y, r, i + 3);
    
    return i < (grid * grid);
}

function draw(x, y, r, p) {
    if(drawCircle) {
        turtle.penup();
        turtle.goto(x, y - r);
        turtle.pendown();
        turtle.circle(r);
    }
    
    let points = [];
    for(let j = 0; j < Math.PI * 2; j += Math.PI * 2 / p) {
        points.push( [
            x + (r * Math.sin(j)), y + (r * Math.cos(j))
        ] );
    }
    
    for (let k = 0; k < points.length; k++) {
        for(let kk = k + 1; kk < points.length; kk++) {
            turtle.penup();
            turtle.goto(points[k]);
            turtle.pendown();
            turtle.goto(points[kk]);
        }
    }
}