Visualization of Mandelbrot set
Log in to post a comment.
// You can find the Turtle API reference here: https://turtletoy.net/syntax Canvas.setpenopacity(0.5); // Global code will be evaluated once. const turtle = new Turtle(); turtle.penup(); turtle.goto(-50, -50); turtle.pendown(); // complex number z = a + bi function complex (a, b) { return { a: a, b: b }; } function cMult(c1, c2) { return complex( c1.a * c2.a - c1.b * c2.b, c1.a * c2.b + c1.b * c2.a ); } function cAdd(c1, c2) { return complex(c1.a + c2.a, c1.b + c2.b); } function abss(c) { return c.a*c.a+c.b*c.b; } function mandelbrot(z, maxIter) { let c = z; for (let i = 0; i < maxIter; i++) { if (abss(z) > 4) { return i; } z = cAdd(cMult(z, z), c); } return maxIter; } let resolution = 300; let maxIter = 50; function walk(i) { let fx = (i % resolution) / resolution; let fy = Math.floor(i/resolution) / resolution; let x = -2 + 4 * fx; let y = -2 + 4 * fy; let m = mandelbrot(complex(x, y), maxIter); if (m < 10) { turtle.penup(); turtle.goto(fx * 190 - 95, fy * 190 - 95); turtle.pendown(); turtle.forward(5); turtle.right(m/1000); } return i < 90000; }