############################################################################ # # File: linddefs.icn # # Subject: Procedure to produce table of L-systems # # Author: Ralph E. Griswold # # Date: November 22, 1997 # ############################################################################ # # This file is in the public domain. # ############################################################################ # # This procedure produces a table of L-systems. # ############################################################################ # # Links: lindrec # ############################################################################ link lindrec procedure linddefs() local linden linden := table() linden["fibbush"] := lsys_0l("", table(), 0, 90) linden["fibbush"].rewrite["A"] := "[B/////'B///////'B]" linden["fibbush"].rewrite["B"] := "[&IL!A]" linden["fibbush"].rewrite["I"] := "FL" linden["fibbush"].rewrite["F"] := "F/////I" linden["fibbush"].rewrite["L"] := "['''^^{-F+F+F-|-F+F+F}]" linden["fibbush"].gener := 3 linden["fibbush"].length := 3 linden["fibbush"].axiom := "A" linden["fibbush"].angle := 22.5 linden["ebush"] := lsys_0l("", table(), 0, 90) linden["ebush"].rewrite["P"] := "I+[P+O]--//[--L]I[++L]-[PO]++PO" linden["ebush"].rewrite["I"] := "FS[//&&L][//^^L]FS" linden["ebush"].rewrite["S"] := "SFS" linden["ebush"].rewrite["L"] := "['{+f-ff-f+|+f-ff-f}]" linden["ebush"].rewrite["O"] := "[&&&D`/W////W////W////W////W]" linden["ebush"].rewrite["D"] := "FF" linden["ebush"].rewrite["W"] := "[`^F][{&&&&-f+f|-f+f}]" linden["ebush"].axiom := "P" linden["ebush"].angle := 18.0 linden["ebush"].gener := 3 linden["ebush"].length := 3 linden["bush"] := lsys_0l("", table(), 0, 90) linden["bush"].rewrite["F"] := "FF-[-F+F+F]+[+F-F-F]" linden["bush"].axiom := "++++F" linden["bush"].angle := 22.5 linden["cesaro"] := lsys_0l("", table(), 0, 90) linden["cesaro"].rewrite["X"] := "----F!X!++++++++F!X!----" linden["cesaro"].rewrite["F"] := "" linden["cesaro"].gener := 10 linden["cesaro"].length := 3 linden["cesaro"].axiom := "FX" linden["cesaro"].angle := 10.58823529 linden["curve1"] := lsys_0l("", table(), 0, 90) linden["curve1"].rewrite["F"] := "FF-F-F-F-F-F+F" linden["curve1"].axiom := "F-F-F-F-" linden["curve1"].angle := 90.0 linden["curve2"] := lsys_0l("", table(), 0, 90) linden["curve2"].rewrite["F"] := "FF-F+F-F-FF" linden["curve2"].axiom := "F-F-F-F-" linden["curve2"].angle := 90.0 linden["curve3"] := lsys_0l("", table(), 0, 90) linden["curve3"].rewrite["F"] := "F-FF--F-F" linden["curve3"].axiom := "F-F-F-F-" linden["curve3"].angle := 90.0 linden["curve4"] := lsys_0l("", table(), 0, 90) linden["curve4"].rewrite["X"] := "YF+XF+Y" linden["curve4"].rewrite["Y"] := "XF-YF-X" linden["curve4"].axiom := "YF" linden["curve4"].angle := 60.0 linden["curve4"].gener := 5 linden["dragon"] := lsys_0l("", table(), 0, 90) linden["dragon"].rewrite["X"] := "-FX++FY-" linden["dragon"].rewrite["Y"] := "+FX--FY+" linden["dragon"].rewrite["F"] := "" linden["dragon"].axiom := "FX" linden["dragon"].angle := 45.0 linden["dragon"].gener := 10 linden["dragon1"] := lsys_0l("", table(), 0, 90) linden["dragon1"].rewrite["r"] := "-Fl-r" linden["dragon1"].rewrite["l"] := "l+rF+" linden["dragon1"].axiom := "Fl" linden["dragon1"].gener := 14 linden["dragonc"] := lsys_0l("", table(), 0, 90) linden["dragonc"].rewrite["X"] := "X-YF-" linden["dragonc"].rewrite["Y"] := "+FX+Y" linden["dragonc"].axiom := "X" linden["dragonc"].angle := 90.0 linden["dragonc"].gener := 10 linden["fass1"] := lsys_0l("", table(), 0, 90) linden["fass1"].rewrite["R"] := "-LFLF+RFRFR+F+RF-LFL-FR" linden["fass1"].rewrite["L"] := "LF+RFR+FL-F-LFLFL-FRFR+" linden["fass1"].axiom := "-L" linden["fass1"].angle := 90.0 linden["fass2"] := lsys_0l("", table(), 0, 90) linden["fass2"].rewrite["R"] := "-LFLFLF+RFR+FL-F-LF+RFR+FLF+RFRF-LFL-FRFR" linden["fass2"].rewrite["L"] := "LFLF+RFR+FLFL-FRF-LFL-FR+F+RF-LFL-FRFRFR+" linden["fass2"].axiom := "-L" linden["fass2"].angle := 90.0 linden["flake3"] := lsys_0l("", table(), 0, 90) linden["flake3"].rewrite["X"] := "++FXFY--FX--FY" linden["flake3"].rewrite["Y"] := "FYFX+++FYFX++FX++FYFX|+FX--FY--FXFY++" linden["flake3"].rewrite["F"] := "" linden["flake3"].axiom := "FX" linden["flake3"].angle := 30.0 linden["flake3"].gener := 10 linden["hilbert"] := lsys_0l("", table(), 0, 90) linden["hilbert"].rewrite["X"] := "-YF+XFX+FY-" linden["hilbert"].rewrite["Y"] := "+XF-YFY-FX+" linden["hilbert"].axiom := "X" linden["hilbert"].angle := 90.0 linden["hilbert"].gener := 10 linden["island1"] := lsys_0l("", table(), 0, 90) linden["island1"].rewrite["F"] := "FFFF-F+F+F-F[-FF+F+FF+F]FF" linden["island1"].axiom := "F+F+F+F" linden["island1"].angle := 90.0 linden["island2"] := lsys_0l("", table(), 0, 90) linden["island2"].rewrite["F"] := "F+F-FF-F-FF++FF-F+FF+F+FF--FFF" linden["island2"].axiom := "F+F+F+F" linden["island2"].angle := 90.0 linden["island2"].gener := 4 linden["island2"].length := 2 linden["koch1"] := lsys_0l("", table(), 0, 90) linden["koch1"].rewrite["F"] := "F+F--F+F" linden["koch1"].axiom := "F--F--F" linden["koch1"].angle := 60.0 linden["koch1"].gener := 4 linden["koch1"].length := 4 linden["koch2"] := lsys_0l("", table(), 0, 90) linden["koch2"].rewrite["F"] := "-F+++F---F+" linden["koch2"].axiom := "F---F---F---F" linden["koch2"].angle := 30.0 linden["koch2"].gener := 6 linden["koch2"].length := 4 linden["koch3"] := lsys_0l("", table(), 0, 90) linden["koch3"].rewrite["F"] := "F-F+F+FF-F-F+F" linden["koch3"].axiom := "F-F-F-F" linden["koch3"].angle := 90.0 linden["koch3"].gener := 6 linden["koch3"].length := 4 linden["koch4"] := lsys_0l("", table(), 0, 90) linden["koch4"].rewrite["F"] := "+F--F++F-" linden["koch4"].axiom := "F++++F++++F" linden["koch4"].angle := 30.0 linden["koch4"].gener := 5 linden["koch4"].length := 3 linden["koch5"] := lsys_0l("", table(), 0, 90) linden["koch5"].rewrite["F"] := "F+F-F-FFF+F+F-F" linden["koch5"].axiom := "F+F+F+F" linden["koch5"].angle := 90.0 linden["koch6"] := lsys_0l("", table(), 0, 90) linden["koch6"].rewrite["F"] := "F-FF+FF+F+F-F-FF+F+F-F-FF-FF+F" linden["koch6"].axiom := "F+F+F+F" linden["koch6"].angle := 90.0 linden["koch7"] := lsys_0l("", table(), 0, 90) linden["koch7"].rewrite["F"] := "F+F-F+F+F" linden["koch7"].axiom := "F+F+F+F" linden["koch7"].gener := 4 linden["koch8"] := lsys_0l("", table(), 0, 90) linden["koch8"].rewrite["F"] := "F+F--F+F" linden["koch8"].axiom := "F" linden["koch8"].angle := 60.0 linden["lakeisle"] := lsys_0l("", table(), 0, 90) linden["lakeisle"].rewrite["F"] := "F-f+FF-F-FF-Ff-FF+f-FF+F+FF+Ff+FFF" linden["lakeisle"].rewrite["f"] := "ffffff" linden["lakeisle"].axiom := "F-F-F-F" linden["lakeisle"].gener := 2 linden["leaf1"] := lsys_0l("", table(), 0, 90) linden["leaf1"].rewrite["H"] := "J" linden["leaf1"].rewrite["P"] := "X" linden["leaf1"].rewrite["X"] := "F[+AAAA]FY" linden["leaf1"].rewrite["E"] := "H" linden["leaf1"].rewrite["B"] := "E" linden["leaf1"].rewrite["J"] := "Y" linden["leaf1"].rewrite["O"] := "P" linden["leaf1"].rewrite["A"] := "N" linden["leaf1"].rewrite["Y"] := "F[-BBBB]FX" linden["leaf1"].rewrite["N"] := "O" linden["leaf1"].axiom := "X" linden["leaf1"].angle := 45.0 linden["leaf1"].gener := 10 linden["leaf2"] := lsys_0l("", table(), 0, 90) linden["leaf2"].rewrite["X"] := "A" linden["leaf2"].rewrite["B"] := "F[-Y]FA" linden["leaf2"].rewrite["A"] := "F[+X]BF" linden["leaf2"].rewrite["Y"] := "B" linden["leaf2"].axiom := "A" linden["leaf2"].angle := 45.0 linden["leaf2"].gener := 14 linden["peano1"] := lsys_0l("", table(), 0, 90) linden["peano1"].rewrite["F"] := "F-F+F+F+F-F-F-F+F" linden["peano1"].axiom := "F-F-F-F" linden["peano1"].angle := 90.0 linden["peano2"] := lsys_0l("", table(), 0, 90) linden["peano2"].rewrite["X"] := "XY-F-FXY++F++FXY" linden["peano2"].rewrite["Y"] := "-F-FXY" linden["peano2"].axiom := "FXY++F++FXY++F" linden["peano2"].angle := 45.0 linden["peano2"].gener := 4 linden["peano2"].length := 7 linden["peano3"] := lsys_0l("", table(), 0, 90) linden["peano3"].rewrite["X"] := "XFYFX+F+YFXFY-F-XFYFX" linden["peano3"].rewrite["Y"] := "YFXFY-F-XFYFX+F+YFXFY" linden["peano3"].axiom := "X" linden["peano3"].angle := 90.0 linden["penrose1"] := lsys_0l("", table(), 0, 90) linden["penrose1"].rewrite["X"] := "+YF--ZF[---WF--XF]+" linden["penrose1"].rewrite["Z"] := "--YF++++WF[+ZF++++XF]--XF" linden["penrose1"].rewrite["W"] := "YF++ZF----XF[-YF----WF]++" linden["penrose1"].rewrite["Y"] := "-WF++XF[+++YF++ZF]-" linden["penrose1"].rewrite["F"] := "" linden["penrose1"].axiom := "+WF--XF---YF--ZF" linden["penrose1"].angle := 36.0 linden["penrose2"] := lsys_0l("", table(), 0, 90) linden["penrose2"].rewrite["X"] := "+YF--ZF[---WF--XF]+" linden["penrose2"].rewrite["Z"] := "--YF++++WF[+ZF++++XF]--XF" linden["penrose2"].rewrite["W"] := "YF++ZF----XF[-YF----WF]++" linden["penrose2"].rewrite["Y"] := "-WF++XF[+++YF++ZF]-" linden["penrose2"].rewrite["F"] := "" linden["penrose2"].axiom := "++ZF----XF-YF----WF" linden["penrose2"].angle := 36.0 linden["penrose2"].gener := 5 linden["penrose2"].length := 10 linden["penrose3"] := lsys_0l("", table(), 0, 90) linden["penrose3"].rewrite["X"] := "+YF--ZF[---WF--XF]+" linden["penrose3"].rewrite["Z"] := "--YF++++WF[+ZF++++XF]--XF" linden["penrose3"].rewrite["W"] := "YF++ZF----XF[-YF----WF]++" linden["penrose3"].rewrite["Y"] := "-WF++XF[+++YF++ZF]-" linden["penrose3"].rewrite["F"] := "" linden["penrose3"].axiom := "[X]++[X]++[X]++[X]++[X]" linden["penrose3"].angle := 36.0 linden["penrose3"].gener := 5 linden["penrose3"].length := 10 linden["penrose4"] := lsys_0l("", table(), 0, 90) linden["penrose4"].rewrite["X"] := "+YF--ZF[---WF--XF]+" linden["penrose4"].rewrite["Z"] := "--YF++++WF[+ZF++++XF]--XF" linden["penrose4"].rewrite["W"] := "YF++ZF----XF[-YF----WF]++" linden["penrose4"].rewrite["Y"] := "-WF++XF[+++YF++ZF]-" linden["penrose4"].rewrite["F"] := "" linden["penrose4"].axiom := "[Y]++[Y]++[Y]++[Y]++[Y]" linden["penrose4"].angle := 36.0 linden["penrose4"].gener := 5 linden["penrose4"].length := 10 linden["penrosed"] := lsys_0l("", table(), 0, 90) linden["penrosed"].rewrite["X"] := "+YF--ZF[---WF--XF]+" linden["penrosed"].rewrite["Z"] := "--YF++++WF[+ZF++++XF]--XF" linden["penrosed"].rewrite["W"] := "YF++ZF----XF[-YF----WF]++" linden["penrosed"].rewrite["Y"] := "-WF++XF[+++YF++ZF]-" linden["penrosed"].rewrite["F"] := "" linden["penrosed"].axiom := "[X][Y]++[X][Y]++[X][Y]++[X][Y]++[X][Y]" linden["penrosed"].angle := 36.0 linden["penrosed"].length := 40 linden["plant01"] := lsys_0l("", table(), 0, 90) linden["plant01"].rewrite["F"] := "F[+F]F[-F]F" linden["plant01"].axiom := "F" linden["plant01"].angle := 25.71428571 linden["plant01"].gener := 10 linden["plant02"] := lsys_0l("", table(), 0, 90) linden["plant02"].rewrite["F"] := "F[+F]F[-F][F]" linden["plant02"].axiom := "F" linden["plant02"].angle := 20.0 linden["plant03"] := lsys_0l("", table(), 0, 90) linden["plant03"].rewrite["F"] := "FF-[-F+F+F]+[+F-F-F]" linden["plant03"].axiom := "F" linden["plant03"].angle := 22.5 linden["plant03"].gener := 4 linden["plant04"] := lsys_0l("", table(), 0, 90) linden["plant04"].rewrite["X"] := "F[+X]F[-X]+X" linden["plant04"].rewrite["F"] := "FF" linden["plant04"].axiom := "X" linden["plant04"].angle := 20.0 linden["plant04"].gener := 5 linden["plant05"] := lsys_0l("", table(), 0, 90) linden["plant05"].rewrite["X"] := "F[+X][-X]FX" linden["plant05"].rewrite["F"] := "FF" linden["plant05"].axiom := "X" linden["plant05"].angle := 25.71428571 linden["plant05"].gener := 5 linden["plant06"] := lsys_0l("", table(), 0, 90) linden["plant06"].rewrite["X"] := "F-[[X]+X]+F[+FX]-X" linden["plant06"].rewrite["F"] := "FF" linden["plant06"].axiom := "X" linden["plant06"].angle := 22.5 linden["plant06"].gener := 5 linden["plant07"] := lsys_0l("", table(), 0, 90) linden["plant07"].rewrite["X"] := "X[-FFF][+FFF]FX" linden["plant07"].rewrite["Z"] := "ZFX[+Z][-Z]" linden["plant07"].axiom := "Z" linden["plant07"].angle := 25.71428571 linden["plant07"].gener := 5 linden["plant08"] := lsys_0l("", table(), 0, 90) linden["plant08"].rewrite["S"] := "[+++Z][---Z]TS" linden["plant08"].rewrite["H"] := "-Z[+H]L" linden["plant08"].rewrite["Z"] := "+H[-Z]L" linden["plant08"].rewrite["L"] := "[-FFF][+FFF]F" linden["plant08"].rewrite["T"] := "TL" linden["plant08"].axiom := "SLFFF" linden["plant08"].angle := 18.0 linden["plant08"].gener := 6 linden["plant08"].length := 8 linden["plant09"] := lsys_0l("", table(), 0, 90) linden["plant09"].rewrite["X"] := "X[-FFF][+FFF]FX" linden["plant09"].rewrite["Y"] := "YFX[+Y][-Y]" linden["plant09"].axiom := "Y" linden["plant09"].angle := 25.71428571 linden["plant09"].gener := 5 linden["plant10"] := lsys_0l("", table(), 0, 90) linden["plant10"].rewrite["F"] := "F[+FF][-FF]F[+FF][-FF]F" linden["plant10"].axiom := "F" linden["plant10"].angle := 36.0 linden["plant10"].gener := 3 linden["plant11"] := lsys_0l("", table(), 0, 90) linden["plant11"].rewrite["F"] := "F[+F[+F][-F]F][-F[+F][-F]F]F[+F][-F]F" linden["plant11"].axiom := "F" linden["plant11"].angle := 30.0 linden["plant11"].gener := 3 linden["plant11"].length := 10 linden["quadgos"] := lsys_0l("", table(), 0, 90) linden["quadgos"].rewrite["R"] := "+FLFL-FR-FR+FL+FLFR+FL-FRFR-FL-FR+FLFRFR-FL-FRFL+FL+FR-FR-FL+FL+FRFR" linden["quadgos"].rewrite["L"] := "FLFL-FR-FR+FL+FL-FR-FRFL+FR+FLFLFR-FL+FR+FLFL+FR-FLFR-FR-FL+FL+FRFR-" linden["quadgos"].rewrite["F"] := "" linden["quadgos"].axiom := "-FR" linden["quadgos"].angle := 90.0 linden["quadkoch"] := lsys_0l("", table(), 0, 90) linden["quadkoch"].rewrite["F"] := "F+FF-FF-F-F+F+FF-F-F+F+FF+FF-F" linden["quadkoch"].axiom := "FX++FX++FX++FX++FX" linden["quadkoch"].angle := 90.0 linden["quartet"] := lsys_0l("", table(), 0, 90) linden["quartet"].rewrite["H"] := "-" linden["quartet"].rewrite["B"] := "FB+FA-FB-JFBFA" linden["quartet"].rewrite["J"] := "+" linden["quartet"].rewrite["A"] := "FBFA+HFA+FB-FA" linden["quartet"].rewrite["F"] := "" linden["quartet"].axiom := "FB" linden["quartet"].angle := 90.0 linden["quartet"].gener := 8 linden["sier1"] := lsys_0l("", table(), 0, 90) linden["sier1"].rewrite["X"] := "+FXF-FXF-FXF+" linden["sier1"].rewrite["F"] := "FXF" linden["sier1"].axiom := "F" linden["sier1"].angle := 120.0 linden["sier1"].gener := 5 linden["sier2"] := lsys_0l("", table(), 0, 90) linden["sier2"].rewrite["X"] := "--FXF++FXF++FXF--" linden["sier2"].rewrite["F"] := "FF" linden["sier2"].axiom := "FXF--FF--FF" linden["sier2"].angle := 60.0 linden["sier2"].gener := 5 linden["sier3"] := lsys_0l("", table(), 0, 90) linden["sier3"].rewrite["F"] := "F[-F]F" linden["sier3"].axiom := "F-F-F" linden["sier3"].angle := 120.0 linden["sier3"].gener := 5 linden["siersqar"] := lsys_0l("", table(), 0, 90) linden["siersqar"].rewrite["F"] := "FF+F+F+F+FF" linden["siersqar"].axiom := "F+F+F+F" linden["siersqar"].angle := 90.0 linden["siersqar"].gener := 4 linden["snoflake"] := lsys_0l("", table(), 0, 90) linden["snoflake"].rewrite["F"] := "F-F+F+F-F" linden["snoflake"].axiom := "+F" linden["snoflake"].gener := 4 linden["space1"] := lsys_0l("", table(), 0, 90) linden["space1"].rewrite["X"] := "YFXFY+F+YFXFY-F-XFYFX" linden["space1"].rewrite["Y"] := "YFXFY-F-XFYFX+F+YFXFY" linden["space1"].axiom := "X" linden["space1"].gener := 3 linden["sphinx"] := lsys_0l("", table(), 0, 90) linden["sphinx"].rewrite["X"] := "+FF-YFF+FF--FFFXF--YFFFYFFF" linden["sphinx"].rewrite["G"] := "GG" linden["sphinx"].rewrite["Y"] := "-FF+XFF-FF++FFFYF++XFFFXFFF" linden["sphinx"].rewrite["F"] := "GG" linden["sphinx"].axiom := "X" linden["sphinx"].angle := 60.0 linden["sphinx"].gener := 5 linden["sqgasket"] := lsys_0l("", table(), 0, 90) linden["sqgasket"].rewrite["X"] := "+FXF+FXF+FXF+FXF" linden["sqgasket"].rewrite["F"] := "FF" linden["sqgasket"].axiom := "X" linden["sqgasket"].angle := 90.0 linden["sqgasket"].gener := 5 linden["square"] := lsys_0l("", table(), 0, 90) linden["square"].rewrite["F"] := "FF+F+F+F+FF" linden["square"].axiom := "F+F+F+F" linden["square"].angle := 90.0 linden["tile"] := lsys_0l("", table(), 0, 90) linden["tile"].rewrite["X"] := "[F+F+F+F[---X-Y]+++++F++++++++F-F-F-F]" linden["tile"].rewrite["Y"] := "[F+F+F+F[---Y]+++++F++++++++F-F-F-F]" linden["tile"].axiom := "X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X" linden["tile"].angle := 15.0 linden["tile"].length := 10 linden["tree"] := lsys_0l("", table(), 0, 90) linden["tree"].rewrite["X"] := "[-FX]+FX" linden["tree"].axiom := "+++FX" linden["tree"].angle := 30.0 linden["tree"].gener := 8 linden["tree"].length := 10 linden["tree1"] := lsys_0l("", table(), 0, 90) linden["tree1"].rewrite["X"] := "[-FX]+FX" linden["tree1"].axiom := "+++FX" linden["tree1"].angle := 30.0 linden["tree1"].gener := 5 linden["tree1"].length := 8 linden["tree2"] := lsys_0l("", table(), 0, 90) linden["tree2"].rewrite["X"] := "+FY" linden["tree2"].rewrite["Y"] := "-FX" linden["tree2"].rewrite["F"] := "FF-[XY]+[XY]" linden["tree2"].axiom := "++++F" linden["tree2"].angle := 22.5 return linden end