Skip to content

Instantly share code, notes, and snippets.

@adusak
Last active August 6, 2016 14:04
Show Gist options
  • Save adusak/d64ca02c6b1670dc0725 to your computer and use it in GitHub Desktop.
Save adusak/d64ca02c6b1670dc0725 to your computer and use it in GitHub Desktop.
Fractal generation using L-System interpreter
from python.common.lsystem import Lsystem
kloch = Lsystem("F--F--F", {"F": "F+F--F+F"},
{"F": "forward(1)",
"+": "right(60)",
"-": "left(60)"})
sierpinsky = Lsystem("A", {"A": "B-A-B", "B": "A+B+A"},
{"A": "forward(3)",
"B": "forward(3)",
"+": "right(60)",
"-": "left(60)"})
hilbert = Lsystem("A", {"A": "-BF+AFA+FB-",
"B": "+AF-BFB-FA+"},
{"A": "forward(7)",
"F": "forward(7)",
"B": "forward(7)",
"+": "right(90)",
"-": "left(90)"})
tree = Lsystem("A", {"A": "F[+A]-A",
"F": "FF"},
{"A": "forward(1)",
"F": "forward(1)",
"+": "right(45)",
"[": "savestate()",
"]": "restorestate()",
"-": "left(45)"})
branch = Lsystem("A", {"A": "F - [ [ A ] + A ] + F [ + F A ] - A",
"F": "FF"},
{"A": "forward(8)",
"F": "forward(8)",
"+": "right(25)",
"[": "savestate()",
"]": "restorestate()",
"-": "left(25)"})
branch2 = Lsystem("F", {"F": "FF - [ -F+F+F]+[+F-F-F]"},
{"F": "forward(20)",
"+": "right(22.5)",
"[": "savestate()",
"]": "restorestate()",
"-": "left(22.5)"})
krishna = Lsystem("-X--X", {"X": "XFX--XFX"},
{"F": "forward(10)",
"-": "left(45)"})
gosper = Lsystem("L", {"L": "L+R++R-L--LL-R+",
"R": "-L+RR++R+L--L-R"},
{"L": "forward(5)",
"R": "forward(5)",
"+": "right(60)",
"-": "left(60)"})
fra = Lsystem("F-F-F-F-F", {"F": "F-F++F+F-F-F"},
{"F": "forward(5)",
"+": "right(72)",
"-": "left(72)"})
kloch.draw(6, "kloch")
sierpinsky.draw(8, "sierpinsky")
hilbert.draw(6, "hilbert")
tree.draw(10, "tree")
branch.draw(6, "branch")
branch2.draw(4, "branch2")
krishna.draw(6, "krishna")
gosper.draw(5, "gosper")
fra.draw(3, "penta2")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment