Barnsley Fern
Log in to post a comment.
// 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(); let point = new Point(0, 100); // The walk function will be called until it returns false. function walk(i) { let nx = map( point.x, -2.1820, 2.6558, -90, 90 ); let ny = map( point.y, 0, 9.9983, 100, -90 ); draw_cross(nx, ny); point = get_next_point(point); return i < 400000; } function draw_cross(x, y) { turtle.penup(); turtle.goto(x - 0.01, y - 0.01); turtle.pendown(); turtle.goto(x + 0.01, y + 0.01); turtle.penup(); turtle.goto(x + 0.01, y - 0.01,); turtle.pendown(); turtle.goto(x - 0.01, y + 0.01); turtle.penup(); } function map(num, in_min, in_max, out_min, out_max) { return (num - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; } function get_next_point (point) { let chance = Math.random(); if(chance <= 0.01) { return new Point(0, 0.16 * point.y); } else if(chance <= 0.86) { return new Point( 0.85 * point.x + 0.04 * point.y, -0.04 * point.x + 0.85 * point.y + 1.6 ); } else if (chance <= 0.93) { return new Point( 0.2 * point.x - 0.26 * point.y, 0.23 * point.x + 0.22 * point.y + 1.6 ); } else { return new Point( -0.15 * point.x + 0.28 * point.y, 0.26 * point.x + 0.24 * point.y + 0.44 ); } } function Point(x, y){ this.x = x || 0; this.y = y || 0; }