如何为分形树项目存储正确的角度?

时间:2019-07-09 13:47:53

标签: python recursion tkinter fractals

我想使用递归生成分形树。但是,树的“分支”没有以正确的角度绘制(每个分支应以与其下方分支成45度角的方式绘制)。我的数学错了还是我的代码?

我已经拿出笔和笔了,据我所知,每次函数运行一次添加角度就应该给出正确的答案,但是分支会以不同的角度折断。

from tkinter import *
from random import *
import numpy as np


#GLOBAL VARIABLES
Width=1500
Height=1000

l=400
decay=0.67
linewidth=5

theta=np.pi/4


#DEFINITIONS

def drawobject(x,y,l,angle_r,angle_l,theta):


    x1r= x + l*np.sin(angle_r)
    y1r= y - l*np.cos(angle_r)

    x1l= x + l*np.sin(angle_l)
    y1l= y - l*np.cos(angle_l)

    canvas.create_line(x,y,x1r,y1r,width=0.01*l,fill="black")
    canvas.create_line(x,y,x1l,y1l,width=0.01*l,fill="black")

    angle_r+=theta
    angle_l-=theta

    if l>3:

        drawobject(x1r,y1r,decay*l,angle_r,angle_l,theta)
        drawobject(x1l,y1l,decay*l,angle_r,angle_l,theta)


#MAINBODY

root=Tk()
canvas=Canvas(width=Width, height=Height, bg="white")
canvas.pack()   
drawobject(Width/2,Height,l,np.pi/4,-np.pi/4,theta)
root.mainloop()

每个分支都应以正负theta的角度射向下面的分支,但是第二层分支是平坦的,而第三层则完全以不同的角度脱落。我也很开放,我对代码的任何样式评论都保持开放态度!

1 个答案:

答案 0 :(得分:0)

当我在内部调用函数时输入的角度是相同的,这应该是汤姆·卡兹斯(Tom Karzes)建议的两个不同的角度。有关更多详细信息,请参见我们的评论。