如何将此代码转换为分形?

时间:2014-02-12 00:44:56

标签: python turtle-graphics fractals

我有一个开始的明星。现在,我将如何将其变成分形?

import turtle

turing = turtle.Turtle()

for i in range(5):
    turing.forward(110)
    turing.left(216)

2 个答案:

答案 0 :(得分:2)

分形是一种随着某种变化而重复的东西。所以把你的星环代码放到一个循环中并重复几次。在完成每个星环之后改变一些东西。你可以改变乌龟的位置,它指向的角度,或下一颗恒星的侧面或其中的任何一个或所有这些。

答案 1 :(得分:0)

遵循@mgkrebbs的一般哲学,通过一个简单的分形线来偏转一条线,我们可以使偏转的所有线都与分形的重复。你的星星很难处理,但由于它有顶点,我们可以递归地在每个顶点放置较小的星星:

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的一小部分,可能有所帮助。

<强>输出

enter image description here