我有一个开始的明星。现在,我如何将它变成分形?如何将此代码变成分形?
import turtle
turing = turtle.Turtle()
for i in range(5):
turing.forward(110)
turing.left(216)
我有一个开始的明星。现在,我如何将它变成分形?如何将此代码变成分形?
import turtle
turing = turtle.Turtle()
for i in range(5):
turing.forward(110)
turing.left(216)
分形是一些重复的变化。因此,将你的星循环代码放入一个循环并重复几次。做每个星循环后改变一些东西。你可以改变乌龟的位置,或者指向哪个角度,或者下一颗恒星的边缘有多长,或者其中的任何一个或全部。
遵循@mgkrebbs的一般哲学,用一个简单的分形来偏转一条直线,我们就可以使所有偏转线的分形都变得更小。你的明星是棘手一起工作,但因为它有verticies,我们可以递归把小星星在每个顶点:
from turtle import Turtle, Screen
def star(turtle, length, depth):
turtle.left(90)
for _ in range(5):
turtle.forward(length)
heading = turtle.heading()
if depth > 1:
star(turtle, length/2, depth - 1)
turtle.setheading(heading)
turtle.left(216)
turing = Turtle()
turing.speed("fastest")
star(turing, 180, 3)
turing.hideturtle()
screen = Screen()
screen.exitonclick()
随着深度的增加,你可以看到星星开始重叠 - 使图像变大的增加length
,或使递归成为length
的一小部分可能有所帮助。
输出