簡體   English   中英

遞歸分形平方在錯誤的區域

[英]Recursive fractal square in wrong area

我正在寫一個分形正方形的代碼。 我具有繪制正方形的功能,這就是我得到的: 單擊此處,但這是我想要達到的目的: 單擊此處 我認為我的問題不是正確放置我的坐標,但我可能完全錯了。 這是我的代碼:

#setting up stuff Code by Angel M. Gonzalez
import turtle
window = turtle.Screen()
square = turtle.Pen()
square.speed(0)
square.penup()
square.goto(0,0)
square.pendown()
square.color("black", "red")

#defining my function to make what i want

def pattern(length, depth, x, y):
    square.goto(0,0)
    if depth > 1:
        square.begin_fill()
        square.forward(length)
        square.left(90)
        square.forward(length)
        square.left(90)
        square.forward(length)
        square.left(90)
        square.forward(length)
        square.end_fill()

        pattern(length/2.2, depth -1, 1,1)
        pattern(length/4.4, depth -1, 1.5,1.5)

#run my function  
pattern(300, 4, 0,0)




#exit
turtle.exitonclick()

就像我之前說的,我不知道坐標是否在此處錯誤放置,或者我是否完全丟失了某些東西。 我會說我對原始正方形的功能很好。

您的遞歸方法是完全錯誤的。 您不能在遞歸中使用絕對定位:

square.goto(0,0)
...
pattern(length/4.4, depth -1, 1.5,1.5)

一切都必須與您所在的位置有關。 另外,要制作像這樣的遞歸圖形,您的遞歸函數應該使烏龜保持與進入遞歸函數時相同的狀態(位置和標題),以便調用者知道它的位置。

對於此設計,您不能簡單地先繪制一個正方形然后遞歸,而是需要在繪制時在正方形的每個角處遞歸。

作為一個簡單的初始練習,讓我們僅繪制此形狀的線條並忽略填充。 這可能不會直接導致解決方案,但將證明上述原理:

from turtle import Turtle, Screen

def pattern(length, depth):

    if depth < 1:
        return

    # assume we're at the center of square, move to corner
    turtle.penup()
    turtle.backward(length / 2)
    turtle.left(90)
    turtle.backward(length / 2)
    turtle.right(90)
    turtle.pendown()

    for _ in range(4):
        pattern(length / 2.2, depth - 1)  # recurse at each corner
        turtle.forward(length)
        turtle.left(90)

    # return to center of square for the benefit of caller
    turtle.penup()
    turtle.forward(length / 2)
    turtle.left(90)
    turtle.forward(length / 2)
    turtle.right(90)
    turtle.pendown()

screen = Screen()
turtle = Turtle()
turtle.speed('fastest')

pattern(100, 4)

turtle.hideturtle()
screen.exitonclick()

OUTPUT

在此處輸入圖片說明

現在出現了以下問題:既要填充這些正方形,又要確保圖案中的右上角正方形始終位於“下方”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM