You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

37 lines
1.3 KiB

import math
from time import sleep
import tkinter as tk
root = tk.Tk()
def Y_pattern():
canvas.delete("all") # 清除画布
canvas.create_line(20, 30, 80, 90, fill='red', width=2) # 左臂
canvas.create_line(140, 30, 80, 90, fill='red', width=2) # 右臂
canvas.create_line(80, 160, 80, 90, fill='red', width=2) # 中心线
def Y_tree(depth, percent, left_angle, right_angle, start_point, angle, length, canvas):
if depth == 0:
return
end_point = (start_point[0] + length * math.cos(math.radians(angle)),
start_point[1] - length * math.sin(math.radians(angle)))
canvas.create_line(start_point, end_point, width=2)
Y_tree(depth - 1, percent, left_angle, right_angle, end_point, angle + right_angle, length * percent,
canvas) # 画右枝
Y_tree(depth - 1, percent, left_angle, right_angle, end_point, angle - left_angle, length * percent,
canvas) # 画左枝
canvas.update()
sleep(0.001)
if __name__ == '__main__':
canvas = tk.Canvas(root, width=1200, height=1000)
canvas.pack()
finishLevel = 10
treePercent = 0.7
leftAngle = 60
rightAngle = 60
initPoint = (520, 600)
initAngle = 90
initLong = 160
Y_tree(finishLevel, treePercent, leftAngle,rightAngle,initPoint,initAngle,initLong,canvas)