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.
38 lines
1.4 KiB
38 lines
1.4 KiB
5 months ago
|
import math
|
||
|
from time import sleep
|
||
|
import tkinter as tk
|
||
|
root = tk.Tk()
|
||
|
|
||
|
def draw_Triangle(startPoint, endPoint1, endPoint2):
|
||
|
canvas.create_polygon(startPoint, endPoint1, endPoint2, outline='red', fill='white', width=2)
|
||
|
|
||
|
|
||
|
def Triangle_Pattern(): #绘制基本图案按钮所调用的函数
|
||
|
canvas.delete("all") # 清除画布
|
||
|
startPoint=(80,130); endPoint1=(20,10); endPoint2=(140,10)
|
||
|
draw_Triangle(startPoint, endPoint1, endPoint2)
|
||
|
|
||
|
def Triangle_tree(depth, percent, start_point, angle, length, canvas):
|
||
|
if depth == 0: return
|
||
|
# 左枝点和右枝点
|
||
|
end_point1 = (start_point[0] - length * math.sin(math.radians(angle)),
|
||
|
start_point[1] - length * math.cos(math.radians(angle)))
|
||
|
end_point2 = (start_point[0] + length * math.sin(math.radians(angle)),
|
||
|
start_point[1] - length * math.cos(math.radians(angle)))
|
||
|
# 画三角形
|
||
|
draw_Triangle(start_point, end_point1, end_point2)
|
||
|
# 递归画左枝和画右枝
|
||
|
Triangle_tree(depth - 1, percent, end_point1, angle, length * percent, canvas)
|
||
|
Triangle_tree(depth - 1, percent, end_point2, angle, length * percent, canvas)
|
||
|
canvas.update()
|
||
|
sleep(0.001)
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
canvas = tk.Canvas(root, width=1200, height=1000)
|
||
|
canvas.pack()
|
||
|
FinishLevel = 8
|
||
|
TreePercent = 0.8
|
||
|
InitPoint = (520, 650)
|
||
|
InitAngle = 30
|
||
|
InitLong = 170
|
||
|
Triangle_tree(FinishLevel, TreePercent, InitPoint, InitAngle, InitLong, canvas)
|