def a_prod(sym):
"""Production rule for A"""
ret = []
w_d = sym.parameters["w"] / 14
prev_rot = 0
n = int(random() * 3 + 15.5)
for ind in range(n):
wid = sym.parameters["w"] - ind * w_d
l_count = int((sqrt(n - ind) + 2) * 4 * sym.parameters["l"])
ret.extend([LSymbol("!", {"w": wid}),
LSymbol("F", {"l": sym.parameters["l"] / 3}),
LSymbol("/", {"a": prev_rot + 140}),
LSymbol("&", {"a": 60}),
LSymbol("!", {"w": wid * 0.4}),
LSymbol("["),
LSymbol("F", {"l": sqrt(n - ind) * sym.parameters["l"] / 3,
"leaves": l_count,
"leaf_d_ang": 40,
"leaf_r_ang": 140}),
LSymbol("^", {"a": random() * 30 + 30}),
LSymbol("F", {"l": sqrt(n - ind) * sym.parameters["l"] / 4,
"leaves": l_count,
"leaf_d_ang": 40,
"leaf_r_ang": 140}),
LSymbol("%"),
LSymbol("]"),
LSymbol("!", {"w": wid}),
LSymbol("^", {"a": 60}),
LSymbol("\\", {"a": prev_rot + 140}),
LSymbol("+", {"a": -5 + random() * 10}),
LSymbol("^", {"a": -7.5 + random() * 15})])
prev_rot += 140
ret.append(LSymbol("F", {"l": sym.parameters["l"] / 2}))
return ret
评论列表
文章目录