Code Sketch
L-system Tree
Category: Art
cleari()
setSpeed(superFast)
zoom(0.7)
def steps = 7
val outputAfterGenerations = (0 until steps).foldLeft("X") { (generationOutput, _) =>
generationOutput.foldLeft("") { (previous, input) =>
val result = input match {
case 'X' => "F-[[X]+X]+F[+FX]-X"
case 'F' => "FF"
case _ => input.toString
}
previous + result
}
}
def tree = Picture {
setPenColor(cm.darkGreen)
def len = 4 * Math.pow(0.9, steps)
def angle = 25
outputAfterGenerations.foreach {
case 'F' => forward(len)
case 'G' =>
penUp(); forward(len); penDown()
case '[' => savePosHe()
case ']' => restorePosHe()
case '+' => right(angle)
case '-' => left(angle)
case _ =>
}
}
drawCentered(tree)