我有一個開始的明星。現在,我如何將它變成分形?如何將此代碼變成分形?
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
的一小部分可能有所幫助。
輸出