我想使用递归生成分形树。但是,树的“分支”没有以正确的角度绘制(每个分支应以与其下方分支成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的角度射向下面的分支,但是第二层分支是平坦的,而第三层则完全以不同的角度脱落。我也很开放,我对代码的任何样式评论都保持开放态度!
答案 0 :(得分:0)
当我在内部调用函数时输入的角度是相同的,这应该是汤姆·卡兹斯(Tom Karzes)建议的两个不同的角度。有关更多详细信息,请参见我们的评论。