More, more, more divisions
Log in to post a comment.
// You can find the Turtle API reference here: https://turtletoy.net/syntax
Canvas.setpenopacity(1);
const iterations = 6; //min = 0, max = 8, step = 1
const size = 90; //min = 10, max = 100, step = 1
const oblique = 0.5; //min = 0, max = 1, step = 0.01
const delay = 0; //min = 0, max = 1, step = 1, (no, yes)
const random = 0; //min = 0, max = 5, step = 1
// Global code will be evaluated once.
const turtle = new Turtle();
let lines = [];
function divide(x, y, s, l){
if(l == 0){
const rand = Math.random();
if(rand < oblique){
lines.push([[x, y-s], [x+s, y]]);
// turtle.jump(x, y-s);
// turtle.goto(x+s, y);
lines.push([[x-s, y], [x, y+s]]);
// turtle.jump(x-s, y);
// turtle.goto(x, y+s);
} else if(rand){
lines.push([[x, y+s], [x+s, y]]);
// turtle.jump(x, y+s);
// turtle.goto(x+s, y);
lines.push([[x-s, y], [x, y-s]]);
// turtle.jump(x-s, y);
// turtle.goto(x, y-s);
}
} else {
l--;
s /= 2;
divide(x+s, y+s, s, l);
divide(x+s, y-s, s, l);
divide(x-s, y+s, s, l);
divide(x-s, y-s, s, l);
}
}
divide(0, 0, size, iterations)
for(let i = 0; i < random; i++){
lines.sort(() => Math.random() > 0.5 ? -1 : 1);
}
let lastTime = Date.now();
// The walk function will be called until it returns false.
function walk(i) {
if(i >= lines.length) return false;
turtle.jump(lines[i][0]);
turtle.goto(lines[i][1]);
if(delay){
while(lastTime >= Date.now());
lastTime = Date.now();
}
return true;
}