def q_prod(sym):
"""Production rule for Q"""
ret = []
prev_ang = 0
n = int(random() * 2 + 7)
for ind in range(8):
offset = 1 - (__base_width__ - sym.parameters["w"]) / __base_width__
offset += ind / 8 / 12
dang = 30 + 85 * offset
if offset <= 0.7:
b_len = 0.4 + 0.6 * offset / 0.7
else:
b_len = 0.4 + 0.6 * (1.0 - offset) / 0.3
ret.extend([LSymbol("/", {"a": prev_ang + 75 + random() * 10}),
LSymbol("&", {"a": dang}),
LSymbol("!", {"w": sym.parameters["w"] * 0.08 * b_len}),
LSymbol("["),
LSymbol("F", {"l": sym.parameters["w"] / 2}),
LSymbol("A", {"w": 0.08 * b_len,
"l": 0.6 * b_len}),
LSymbol("]"),
LSymbol("!", {"w": sym.parameters["w"]}),
LSymbol("^", {"a": dang}),
LSymbol("F", {"l": sym.parameters["l"]})])
ret.append(LSymbol("Q", {"w": max(0, sym.parameters["w"] - __base_width__ / 11),
"l": sym.parameters["l"]}))
return ret
评论列表
文章目录