Как я могу сохранить правильные углы для моего проекта Fractal Tree? - PullRequest
0 голосов
/ 09 июля 2019

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

Каждая ветвь должна отстреливаться с плюсом / минусом тета относительно ветки ниже, однако второй слой ветвей плоский, а третий слой полностью отходит под другим углом. Я также открыт для любой критики стиля моего кода, так как я совершенно новый, всего наилучшего!

...