### Circle grid ðŸŒ•

Draw from grid positions to some random position at large circle.
It's not perfect, but who like perfection anyway.

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

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

const DENSITY = 25; // min=1 max=100, step=1
const RADIUS = 45; // min=1 max=100, step=1
const DOTS = 0.38; // min=0 max=1, step=0.001

const CENTER_X = 0; // min=-75 max=75, step=5
const CENTER_Y = 0; // min=-75 max=75, step=5

const center = [CENTER_X,CENTER_Y];
const grid = DENSITY;
const size = 90;

// The walk function will be called until it returns false.
function walk(i) {
const x = i % grid;
const y = i / grid | 0;
const offset = (size * 2 / grid);

if (i != 0 && i != grid - 1 && i != grid * grid - grid && i != grid * grid - 1) { // "rounded corner"
const pos = [-size + x * offset, -size + y * offset];
const randomPos = add2(pos, [(Math.random() - 0.5) * r, (Math.random() - 0.5) * r]);
const len = dist(randomPos, center);
const endPos = add2(center, scale2(sub2(randomPos, center), 1 / len * r));
if (dist(center, pos) > r)  {
if (Math.random() < DOTS) {
const circle = Math.random() + 0.5;
turtle.jump(pos[0] , pos[1] - circle);
turtle.circle(circle);
}
turtle.jump(pos[0], pos[1]);
turtle.goto(endPos[0], endPos[1]);
}

}

return i < grid * grid - 1;
}

// vec2 functions
const scale2=(a,b)=>[a[0]*b,a[1]*b];