A simple grid generator based on two line rows
Log in to post a comment.
// You can find the Turtle API reference here: https://turtletoy.net/syntax Canvas.setpenopacity(1); const degrees_to_radians = deg => (deg * Math.PI) / 180.0; const deg1 = 60; //min=0 max=90 step=1 const distance1 = 4.6; // min=1 max=100 step=0.1 const deg2 = 0; //min=0 max=90 step=1 const distance2 = 17.1; // min=1 max=100 step=0.1 const drawBox = 1; //min=0 max=1 step=1 (No, Yes) const sizeX = 190; //min=0 max=200 step=1 const sizeY = 190; //min=0 max=200 step=1 const offset = 5; // min=0 max=200 step=1 const canvas = { ox: -100 + offset, oy: -100 + offset } // Global code will be evaluated once. const turtle = new Turtle(); function box() { for (let i = 0; i < 4; i++) { turtle.forward(i % 2 ? sizeY : sizeX); turtle.right(90) } } function drawGrid(sx, sy, d, deg, offset) { const { ox, oy } = offset; const rad = degrees_to_radians(deg); const [cx, cy] = [d / Math.sin(rad), d / Math.cos(rad)]; const [stepsX, stepsY] = [Math.ceil(sx / cx), Math.ceil(sy / cy)]; turtle.setheading(deg); for (let i = 0; i < stepsX; i++) { turtle.jump(ox + i * cx, oy); turtle.forward(Math.min(sy / Math.sin(rad), (sx - (i * cx)) / Math.cos(rad))); } for (let i = 0; i < stepsY; i++) { turtle.jump(ox, oy + i * cy); turtle.forward(Math.min(sx / Math.cos(rad) ,(sy - (i * cy)) / Math.sin(rad))); } } // The walk function will be called until it returns false. function walk(i) { turtle.jump(canvas.ox, canvas.oy); drawBox && box(canvas); drawGrid(sizeX, sizeY, distance1, deg1, canvas); drawGrid(sizeX, sizeY, distance2, deg2, canvas); return false; }