Strange horizon

random walks from a circle

Log in to post a comment.

// Forked from "hairy square" by SimonKirby
// https://turtletoy.net/turtle/914281c07f

// 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();
turtle.pendown();
turtle.radians();


function turtle_start() {
    let angle = Math.random()*2*Math.PI;
    if (Math.random()<0.2) {
        turtle.jump(Math.sin(angle)*50, Math.cos(angle)*50);
        turtle.seth(Math.random()*2*Math.PI);
    } else {
        turtle.jump(Math.sin(angle)*35, Math.cos(angle)*35);
        turtle.seth(Math.random()*2*Math.PI)
    }
}
    
function circle(s) {
    turtle.penup();
    turtle.forward(s);
    turtle.pendown();
    let x = turtle.x();
    let y = turtle.y();
    turtle.jump(x,y+s);
    for (let angle=0; angle<2*Math.PI+0.1; angle+=0.1) {
        turtle.goto(x+Math.sin(angle)*s, y+Math.cos(angle)*s);
    }
}

turtle_start();
let age = 0;

// The walk function will be called until it returns false.
function walk(i) {
    if (Math.random()<age/50 && Math.sqrt(turtle.x()**2+turtle.y()**2)<50) {
        turtle.penup();
    } else {
        turtle.pendown();
    }
    age++;
    turtle.forward(1);
    turtle.lt((Math.random()-0.5));
    //turtle.seth((turtle.h()*10+Math.PI/2)/11);
    let x = turtle.x();
    let y = turtle.y();
    if (age>40 || (Math.sqrt(x**2+y**2)<50 && Math.sqrt(x**2+y**2)>35)) {
        if (Math.sqrt(x**2+y**2)>60) {
            circle(1);
        }
        turtle_start();
        age=0;
    }
    return i < 20000;
}