def ex(consts, index): exec = lsystem.exec.Exec() for key in consts.keys(): exec.define(key, str(consts[key][index])) exec.set_axiom("p(edge)¤(w0)f(0)A(10,w0)") exec.add_rule("A(s,w)", "¤(w)F(s)[+(a1)/(f1)A(mul(s,r1),mul(w,pow(q0,e0)))][+(a2)/(f2)A(mul(s,r2),mul(w,pow(sub(1,q0),e0)))]", condition="gteq(s,min)") exec.exec(min_iterations=consts["n0"][index]) return exec
import lsystem.exec exec = lsystem.exec.Exec() exec.define("LA", "5") exec.define("RA", "1.15") exec.define("LB", "1.3") exec.define("RB", "1.25") exec.define("LC", "3") exec.define("RC", "1.19") exec.set_axiom("p(surface)s(0.01)[:A(0,0)F(0);][:A(0,1)F(0);]") exec.add_rule("A(t,d)", "F(0)f(LA,RA)F(0)[+B(t)f(LC,RC,t)F(0);][+B(t):F(0)]A(add(t,1),d)", condition="eq(d,0)") exec.add_rule("A(t,d)", "F(0)f(LA,RA)F(0)[-B(t)f(LC,RC,t)F(0);][-B(t):F(0)]A(add(t,1),d)", condition="eq(d,1)") exec.add_rule("B(t)", "f(LB,RB)B(sub(t,1))", condition="gt(t,0)") exec.add_rule("f(s,r)", "f(mul(s,r),r)") exec.add_rule("f(s,r,t)", "f(mul(s,r),r,sub(t,1))", condition="gt(t,1)") exec.exec(min_iterations=25, angle=60)
# See figure 3.2 in [Algorithmic Beauty of Plants](http://algorithmicbotany.org/papers/abop/abop.pdf) # on page [69](http://algorithmicbotany.org/papers/abop/abop.pdf#page=81). import lsystem.lsystem import lsystem.exec import math exec = lsystem.exec.Exec() exec.set_axiom("a(1)") exec.add_rule("a(t)", "F(1)[<(30)L(0)]/(137.5)a(t+1)", "lt(t,7)") exec.add_rule("a(t)", "F(20)A", "eq(t,7)") exec.add_rule("A", "K(0)") exec.add_rule("L(t)", "L(add(t,1))", "lt(t,9)") # todo: create Leaf exec.add_rule("K(t)", "K(add(t,1))", "lt(t,5)") # todo: create flower exec.add_rule("F(l)", "F(add(l,0.2))", "lt(l,2)")
import lsystem.exec exec = lsystem.exec.Exec() exec.define("LA", "5") exec.define("RA", "1") exec.define("LB", "0.6") exec.define("RB", "1.06") exec.define("PD", "0.25") exec.set_axiom("p(surface)F(0)A(0)") exec.add_rule("A(t)", "f(LA,RA)[-B(t)F(0)][A(add(t,1))][+B(t)F(0)]") exec.add_rule("B(t)", "f(LB,RB)B(sub(t,PD))", condition="gt(t,0)") exec.add_rule("f(s,r)", "f(mul(s,r),r)") exec.exec(min_iterations=20, angle=60)
import lsystem.exec exec = lsystem.exec.Exec() exec.set_axiom("p(surface)L(0.45)") exec.add_rule("L(w1)", "A(w1)C(w1)") exec.add_rule("A(w1)", "A(w1)B(w1)") exec.replace("A(w1)", "[:F(0.0)F(1.0)+(90)F(w1);]f(1.0)") exec.replace("B(w1)", "[:F(0.0)F(1.0)+(90)F(w1)+(90)F(1.0);]f(1.0)") exec.replace("C(w1)", "[:F(0.0)[F(1.0)]+(90)F(w1);]f(1.0)") exec.exec(min_iterations=4)
import mathutils import bmesh import lsystem.exec import lsystem.util def sphere(turtle, parameters, bl_obj, obj_base_pairs, context): mesh = bpy.data.meshes.new("sphere") obj = bpy.data.objects.new("sphere", mesh) bm = bmesh.new() bmesh.ops.create_uvsphere(bm, u_segments=32, v_segments=16, diameter=bl_obj.radius * 5) bm.to_mesh(mesh) bm.free() obj.location = lsystem.util.matmul(turtle.transform, mathutils.Vector((0.0, 0.0, 0.0))) obj.rotation_euler = turtle.transform.to_euler() base = lsystem.util.link(context, obj) obj.parent = bl_obj.object obj_base_pairs.append((obj, base)) exec = lsystem.exec.Exec() exec.set_axiom("p(subsurf)X") exec.add_rule("X", "/(rand(0,359))[+FX][-FX]") exec.add_rule("X", "FX") exec.set_interpretation("X", sphere) exec.exec(min_iterations=6)