L-System Image generator using Doodle library. Example generated images are in here.
Sample Language and Interpreter
importalgebra._importdoodle.turtle._importdoodle.turtle.Instruction._importdoodle.syntax._importDraw._objectImplicits {
objectGeneratorextendsSequenceGenerator[Language]
implicitvalrule:ProductionRule[Language] = {
caseA=>List(B, TurnLeft, A, TurnLeft, B)
caseB=>List(A, TurnRight, B, TurnRight, A)
caseTurnLeft=>List(TurnLeft)
caseTurnRight=>List(TurnRight)
}
implicitvaldrawer:Drawer[Language] =newDrawer[Language] {
overridedefconvert:List[Language] =>List[Instruction] = _.flatMap {
caseA=>List(forward(5))
caseB=>List(forward(5))
caseTurnLeft=>List(turn(-60.degrees))
caseTurnRight=>List(turn(60.degrees))
}
}
}
objectRunnerextendsApp {
overridedefmain(args: Array[String]):Unit= {
importImplicits._valdata=Generator.sequenceNumber(List(A, B), 10)
drawer.convert(data).draw
}
}