Source: https://github.com/forresto/turtle-svg __ ___ ___________ ________ _____ ________ ____ / / / _ | / __/ __/ _ \ /_ __/ / / / _ \/_ __/ / / __/ / /__/ __ |_\ \/ _// , _/ / / / /_/ / , _/ / / / /__/ _/ /____/_/ |_/___/___/_/|_| /_/ \____/_/|_| /_/ /____/___/ Welcome to the JS turtle graphics -> SVG generator. This will generate an SVG file with one <path> element. The turtle starts in the middle facing down. Angles: 0 is down, 1/4 is right, 1/2 is up, 3/4 is left // Pen (laser, blade) commands penUp(); // Shortcut u() penDown(); // d() // Relative move moveForward(distance); // f() // Relative turns turnRight(angle); // r() turnLeft(angle); // l() // Absolute turns turnTo(angle); // t() // Angles for turn commands are 0.0 to 1.0 turnRight(1/4); // Turn right 90º turnLeft(1/360); // Turn left 1º // SVG move (pen not drawing) and line (drawing) // Relative moveBy(x, y); lineBy(x, y); // Absolute moveTo(x, y); lineTo(x, y); // Functions and commands are JS: var drawRegular = function(sideCount, sideLength) { for (var i=0; i<sideCount; i++){ moveForward(sideLength); turnRight(1/sideCount); } }; drawRegular(5, 20); // Draw a square: moveForward(100); turnLeft(1/4); moveForward(100); turnLeft(1/4); moveForward(100); turnLeft(1/4); moveForward(100); // Draw a recursive space-filling curve: var segmentLength = 15; function unit(iteration) { if (iteration > 0) { unit(iteration - 1); r(0.25); unit(iteration - 1); f(segmentLength); unit(iteration - 1); r(0.25); unit(iteration - 1); } } moveTo(30, 20); turnTo(3/8); unit(6); f(segmentLength); unit(6); // Draw golden ratio squares with Phi var PHI = (1 + Math.sqrt(5)) / 2; var scale = 300; var i = 0; moveTo(20, 20); while( scale >= 1 ){ f(scale); l(1/4); f(scale); l(1/4); f(scale); l(1/4); f(scale); l(1/4); f(scale); scale = scale/PHI; f(scale); l(1/4); } // Draw golden ratio squares with Fibonacci var side = 3; var lastSide = 0; var nextSide; moveTo(550, 350); while( side < 1200 ){ // Draw square f(side); l(1/4); f(side); l(1/4); f(side); l(1/4); f(side); l(1/4); f(side); l(1/4); f(side); // Advance fib nextSide = side + lastSide; lastSide = side; side = nextSide; }