### Polygon Spiro

Mandala, Spirograph, Polygon, Circular

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

// Global code will be evaluated once.
const turtle = new Turtle();
turtle.penup();
turtle.goto(-50,-20);
turtle.pendown();

function linspace(a,b,n) {
if(typeof n === "undefined") n = Math.max(Math.round(b-a)+1,1);
if(n<2) { return n===1?[a]:[]; }
var i,ret = Array(n);
n--;
for(i=n;i>=0;i--) { ret[i] = (i*b+(n-i)*a)/n; }
return ret;
}

function drawPolygon(n, x, y, r, rot) {
const phi = linspace(0+rot, 2*Math.PI+rot, n+1)

turtle.penup()
turtle.goto(r*Math.sin(phi[0])+x, r*Math.cos(phi[0])+y)
turtle.pendown()

for(i=n;i>=0;i--) {
turtle.goto(r*Math.sin(phi[i])+x, r*Math.cos(phi[i])+y)
}
turtle.penup()
}

const nMain = 8
const nSub = 12
const subAngleInc = 0.03
const subRotInc = 0.05
const polygonN = 6
const rotOffset = -60.0/360*2*Math.PI

// The walk function will be called until it returns false.
function walk(i) {
const phi = linspace(0, 2*Math.PI, nMain+1)
const phiInc = linspace(0, subAngleInc*nSub, nSub)
const rotInc = linspace(0, subRotInc*nSub, nSub)