def q_prod(sym):
"""Production rule for Q"""
ret = [LSymbol("!", {"w": sym.parameters["w"]}),
LSymbol("&", {"a": 90}),
LSymbol("+", {"a": random() * 360}),
LSymbol("!", {"w": sym.parameters["bw"]})]
b_count = int(random() * 2) + 5
for _ in range(b_count):
rand = random() * 130 / b_count
ret.extend([LSymbol("+", {"a": rand}),
LSymbol("["),
LSymbol("^", {"a": 5 / max(sym.parameters["bl"] * sym.parameters["bl"], 0.05
) - 30 * (random() * 0.2 + 0.9)}),
LSymbol("A", {"l": sym.parameters["bl"], "w": sym.parameters["bw"]}),
LSymbol("]"),
LSymbol("+", {"a": (360 / b_count) - rand})])
ret.extend([LSymbol("!", {"w": sym.parameters["w"]}),
LSymbol("$"),
LSymbol("F", {"l": sym.parameters["l"],
"leaves": int(sym.parameters["l"] * __n_leaves__ / 3),
"leaf_d_ang": 20,
"leaf_r_ang": 140}),
LSymbol("Q", {"w": sym.parameters["w"] - 0.2 / 15,
"l": sym.parameters["l"] * 0.95,
"bw": sym.parameters["bw"] * __width_r__,
"bl": sym.parameters["bl"] * __branch_length_r__}),
LSymbol("%")])
return ret
评论列表
文章目录