Log in to post a comment.
// You can find the Turtle API reference here: https://turtletoy.net/syntax Canvas.setpenopacity(0.6); // drawing utilities function circle(x,y,radius,extent=undefined){turtle.penup();turtle.goto(x,y);turtle.pendown();turtle.circle(radius,extent);} function line(x1,y1,x2,y2){turtle.penup();turtle.goto(x1,y1);turtle.pendown();turtle.goto(x2,y2);} function rect(l,t,b,r){line(l,t,l,b);line(l,t,r,t);line(r,t,r,b);line(l,b,r,b);} // Halton Sequence 1D function Halton(index, base){ let result = 0; let invBase = 1.0 / base; let frac = 1; while(index>0) { frac *= invBase; result += frac*(parseInt(index)%parseInt(base)); index /= base; } return result; } // Generate Halton 2D point sequence. function Halton2D(index,base1,base2,range){ let HaltonX = Halton(index,base1)*(-1) + 0.5; let HaltonY = Halton(index,base2)*(-1) + 0.5; let x = HaltonX * range; let y = HaltonY * range; return [x,y]; } // constant variables const circle_radius = 1; const canvas_size = 180; // Global code will be evaluated once. const turtle = new Turtle(); const base1 = 2; const base2 = 3; let border_size = canvas_size + circle_radius*2; let left = -0.5*border_size; let right = 0.5*border_size; let top = -0.5*border_size; let bottom = 0.5*border_size; rect(left,top,bottom,right); // The walk function will be called until it returns false. function walk(i) { let A = Halton2D(i,base1,base2,canvas_size); let x = A[0], y = A[1]; circle(-x,y,circle_radius); return i < 2160; }