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

How Can I Store The Correct Angles For My Fractal Tree Project?

我想使用递归生成分形树。然而,树的 "branches" 没有以正确的角度绘制(每个树枝应该绘制成与其下方的树枝成 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()

每个分支都应该以 plus/minus theta 发射到下面的分支,但是第二层分支是扁平的,第三层完全以不同的角度脱落。我也对我的代码的任何风格批评持开放态度,因为我是新手,祝一切顺利!

我在内部调用函数时输入的角度是相同的,而按照 Tom Karzes 的建议,它们应该是两个不同的角度。查看我们的评论了解更多详情。