Lindenmayer system definition, expander and renderer.
- type Element = Char
- type Axiom = [Element]
- type Rules = Map Element Axiom
- data LSystem = LSystem Axiom Rules
- lSystem :: Axiom -> [(Element, [Element])] -> LSystem
- getRule :: Rules -> Element -> [Element]
- applyRule :: [Element] -> Rules -> [Element]
- expand :: LSystem -> Int -> [Element]
- stateT :: Element -> Turtle -> Turtle
- cmd :: (Turtle -> b -> (Turtle, b)) -> Element -> Turtle -> b -> (Turtle, b)
- render :: b -> (b -> Pt -> Pt -> b) -> [Element] -> Turtle -> b
Documentation
lSystem :: Axiom -> [(Element, [Element])] -> LSystemSource
L-System constructor.
lSystem "F+F+F" [('F',"F-F+F")]
expand :: LSystem -> Int -> [Element]Source
n iterations of the specified LSystem
.
expand (lSystem "F+F+F" [('F',"F-F+F")]) 1 == "F-F+F+F-F+F+F-F+F"