Пример #1
0
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
Пример #2
0
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)
Пример #3
0
# 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)")
Пример #4
0
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)
Пример #5
0
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)
Пример #6
0
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)