Skip to content

antigones/LSystems

Repository files navigation

L-System

A class to expand strings with L-System production rules and render them with Turtle.

from lsystem import LSystem
from renderer import render_pattern
import turtle

koch_omega = "F"
koch_expansion_rules = {
    "F": "F+F-F-F+F",
    "+": "+",
    "-": "-"
}

koch = LSystem(koch_omega, koch_expansion_rules)
pattern = koch.expand(times=3)

koch_instructions = {
    "F": lambda: turtle.forward(10),
    "+": lambda: turtle.left(90),
    "-": lambda: turtle.right(90),
}

render_pattern(pattern, koch_instructions, line_thickness=2)
  • omega: the axiom
  • expansion_rules: the set of expansion rules
  • expand(times): generate the pattern after the specified number of iterations

koch curve

Usage example

dragon_curve_omega = "F"
dragon_curve_expansion_rules = {
  "F": "F+G",
  "G": "F-G",
  "+": "+",
  "-": "-"
}
dragon_curve = LSystem(dragon_curve_omega, dragon_curve_expansion_rules)
dragon_curve_pattern = dragon_curve.expand(times=10)

dragon_curve_instructions = {
  "F": lambda: turtle.forward(10),
  "G": lambda: turtle.forward(10),
  "+": lambda: turtle.left(90),
  "-": lambda: turtle.right(90),
}
render_pattern(dragon_curve_pattern, dragon_curve_instructions, line_thickness=2)

generated dragon curve

References

About

A class to draw curves expressed as L-System production rules

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages