forked from krljg/lsystem
-
Notifications
You must be signed in to change notification settings - Fork 0
/
capsella_bursa_pastoris.py
23 lines (19 loc) · 1.08 KB
/
capsella_bursa_pastoris.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# See figure 3.5 in [Algorithmic Beauty of Plants](http://algorithmicbotany.org/papers/abop/abop.pdf)
# on page [74](http://algorithmicbotany.org/papers/abop/abop.pdf#page=86).
import lsystem.exec
ex = lsystem.exec.Exec()
ex.set_axiom("p(subsurf)I(9)aa(13)")
ex.add_rule("aa(t)", "[&(70)L]/(137.5)I(10)aa(sub(t,1))", "gt(t,0)")
ex.add_rule("aa(t)", "[&(70)L]/(137.5)I(10)A", "eq(t,0)")
ex.add_rule("A", "[&(18)uu(4)FFI(10)I(5)X(5)KKKK]/(137.5)I(8)A")
ex.add_rule("I(t)", "FI(sub(t,1))", "gt(t,0)")
ex.add_rule("I(t)", "F", "eq(t,0)")
ex.add_rule("ii(t)", "fii(sub(t,1))", "gt(t,0)")
ex.add_rule("ii(t)", "f", "eq(t,0)")
ex.add_rule("uu(t)", "&(9)uu(sub(t,1))", "gt(t,0)")
ex.add_rule("uu(t)", "&(9)", "eq(t,0)")
ex.add_rule("L", "[:p(surface)F(0)-FI(7)+FI(7)+FI(7);][:p(surface)F(0)+FI(7)-FI(7)-FI(7);]")
ex.add_rule("K", "[&:p(surface)F(0)+FI(2)--FI(2);][&:p(surface)F(0)-FI(2)++FI(2);]/(90)")
ex.add_rule("X(t)", "X(sub(t,1))", "gt(t,0)")
ex.add_rule("X(t)", "^(50):p(surface)[[-ffff++[fff[++f{F(0)]F(0)]F(0)]F(0)++ffffF(0)--fffF(0)--fF(0)}];%", "eq(t,0)")
ex.exec(min_iterations=1, max_iterations=16)