Я хочу создать фрактальное дерево, используя рекурсию. Однако «ветви» дерева не рисуются под правильным углом (каждая ветвь должна быть нарисована под углом 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()
Каждая ветвь должна отстреливаться с плюсом / минусом тета относительно ветки ниже, однако второй слой ветвей плоский, а третий слой полностью отходит под другим углом. Я также открыт для любой критики стиля моего кода, так как я совершенно новый, всего наилучшего!