Simple spirals
Log in to post a comment.
// LL 2021 Canvas.setpenopacity(1); const turtle = new Turtle(); const grid = 9; // min=1, max=20, step=1 const outer = 151; // min=10, max=1000, step=1 const inner = 20; // min=0, max=1000, step=1 const startAngle = 1.4; // min=0, max=6.2831853072, step=0.001 const angleIncCoarse = 0.37; // min=0.0, max=6.2831853072, step=0.001 const angleIncFine = -0.03; // min=-0.05, max=0.05, step=0.00001 const angleIncInc = 0.0704; // min=0.0, max=0.1, step=0.0001 const scale = 219; // min=1, max=1000, step=1 const canvas_size = 100; const count = outer - inner; // The walk function will be called until it returns false. function walk(i) { if (i >= grid * grid * count) return false; const index = Math.floor(i / count); const grid_x = index % grid; const grid_y = Math.floor(index / grid); const center_x = -canvas_size + canvas_size/grid + canvas_size*2/grid * grid_x; const center_y = -canvas_size + canvas_size/grid + canvas_size*2/grid * grid_y; if ((i%count) == 0) { turtle.penup(); if (true) // draw a border around each cell { const size = canvas_size / grid * 0.95; turtle.goto( center_x - size, center_y - size ); turtle.pendown(); turtle.goto( center_x + size, center_y - size ); turtle.goto( center_x + size, center_y + size ); turtle.goto( center_x - size, center_y + size ); turtle.goto( center_x - size, center_y - size ); turtle.penup(); } } const angleIncCoarse2 = angleIncCoarse + index * angleIncInc; const i2 = i % count; const radius = (i2+inner) * (i2+inner) / scale / grid; const angle = startAngle + i2 * (angleIncCoarse2 + angleIncFine); turtle.goto( center_x + Math.cos(angle) * radius, center_y + Math.sin(angle) * radius) turtle.pendown(); //sleep(1); return true; } //////////////////////// // Utils //////////////////////// function sleep(milliseconds) { const date = Date.now(); let currentDate = null; do { currentDate = Date.now(); } while (currentDate - date < milliseconds); }