import math import tkinter as tk def hexagonal_fractal_tree(depth, length, angle, center, canvas): """ 绘制六边形 :param depth: :param length: :param angle: :param center: :param canvas: :return: """ if depth == 0: return end_x = center[0] + length * math.cos(math.radians(angle)) end_y = center[1] - length * math.sin(math.radians(angle)) canvas.create_line(center[0], center[1], end_x, end_y, fill='LightBlue4', width=2) hexagon_points = [] for i in range(6): hexagon_x = end_x + length * math.cos(math.radians(60 * i)) hexagon_y = end_y - length * math.sin(math.radians(60 * i)) hexagon_points.extend([hexagon_x, hexagon_y]) canvas.create_polygon(hexagon_points, outline='LightBlue4', fill='', width=2) new_length = length * 0.7 new_depth = depth - 1 new_angle1 = angle + 30 new_angle2 = angle - 30 hexagonal_fractal_tree(new_depth, new_length, new_angle1, (end_x, end_y), canvas) hexagonal_fractal_tree(new_depth, new_length, new_angle2, (end_x, end_y), canvas) window = tk.Tk() window.title("Hexagonal Fractal Tree") canvas = tk.Canvas(window, width=400, height=400, bg='white') canvas.pack() # Set the initial parameters and start drawing the tree initial_length = 100 initial_angle = 90 # Start with a vertical trunk initial_center = (200, 400) # Adjust the center as needed initial_depth = 5 # You can change the depth hexagonal_fractal_tree(initial_depth, initial_length, initial_angle, initial_center, canvas) # Start the tkinter main loop window.mainloop()