[英]Dragon Curve in Python Order 10
為什么我的龍形曲線看起來不像龍形曲線?
這是python中10階的實現:
def setupForDragonCurve():
turtle.hideturtle()
turtle.tracer(1e3, 0)
turtle.penup()
turtle.goto(0, -turtle.window_height()/5)
turtle.pendown()
def generateDragonCurve(n, result='[FX]'):
for _ in range(n):
result = result.replace('Y', 'FX-Y')
result = result.replace('X', 'X+YF')
return result
def drawDragonCurve(cmds, size):
stack = []
for cmd in cmds:
if cmd=='F':
turtle.forward(size)
elif cmd=='-':
turtle.left(90)
elif cmd=='+':
turtle.right(90)
elif cmd=='X':
pass
elif cmd=='Y':
pass
elif cmd=='[':
stack.append((turtle.position(), turtle.heading()))
elif cmd==']':
position, heading = stack.pop()
turtle.penup()
turtle.setposition(position)
turtle.setheading(heading)
turtle.pendown()
else:
raise ValueError('Unknown Cmd: {}'.format(ord(cmd)))
turtle.update()
這是訂單10的樣子:
編輯:這是我得到的訂單1,具有較大的比例曲線:
當你跑步
result = result.replace('Y', 'FX-Y')
result = result.replace('X', 'X+YF')
第二行替換第一行引入的X
(此外,您使用了錯誤的替換規則,但您似乎已經注意到了這一點。)
您需要以不相互影響的方式進行這些替換,可能是通過組合步驟進行的。 一種方法是使用re
模塊的更高級的替換功能。 另一個方法是編寫自己的替換例程。 您也可以在第一個替換中使用X
以外的其他字符,因此第二個替換不會將其選中,然后在第三遍中將該字符替換為X
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.