### Gosper's fractals

Gosper's fractals of different orders drawn using a L-system

```// Global code will be evaluated once.
const turtle = new Turtle()

const order = 6 // min=4 max=10 step=1
const maxDepth = 8 // min=0 max=10 step=1
const intermediary = 0; // min=0 max=1 step=1 (No, Yes)

const theta = Math.PI*(order-2)/order
const [cos, sin] = [Math.cos(theta), Math.sin(theta)]
const ratio = 1 / Math.sqrt(5-4*cos)
const angle = Math.atan(sin/(2-cos))*180/Math.PI
const alpha = 360/order

const segment = (depth, max) => {
const length = size * ratio**depth
if (depth == max) turtle.forward(length)
else {
turtle.left(angle)
segment(depth+1, max)
turtle.right(alpha)
segment(depth+1, max)
turtle.left(alpha)
segment(depth+1, max)
turtle.right(angle)
}
}
// The walk function will be called until it returns false.
function walk(i) {
if (intermediary || i == maxDepth) {
turtle.penup()
turtle.right(90+alpha/2)
turtle.pendown()

for (let s = 0; s < order; s++) {
segment(0, i)
turtle.right(alpha)
}

turtle.penup()
turtle.left(90+alpha/2)