def Rect_Pattern(): canvas.delete("all") # 清空画布 canvas.create_rectangle(25, 30, 145, 140, outline='red', width=2) def Rect_tree(depth, point1, point2, angle, canvas): # 直线的旋转,point1是定点 def rotate(point1, point2, angle): x1, y1 = point1[0], point1[1] x2, y2 = point2[0], point2[1] x = x1 + (x2 - x1) * math.cos(math.radians(angle)) + (y2 - y1) * math.sin(math.radians(angle)) y = y1 + (y2 - y1) * math.cos(math.radians(angle)) - (x2 - x1) * math.sin(math.radians(angle)) point = (x, y) # print(point) return point # 直线的缩放,point1是定点 def zoom(point1, point2, ratio): x1, y1 = point1[0], point1[1] x2, y2 = point2[0], point2[1] x = x1 + (x2 - x1) * ratio y = y1 + (y2 - y1) * ratio point = (x, y) return point point3 = rotate(point1, point2, 90) point4 = rotate(point2, point1, 270) # print(point1,point2,point3,point4) # 画正方形 canvas.create_polygon(point1, point2, point4, point3, fill="#d8e6f7", outline='white') if depth == 0: return point = rotate(point3, point4, angle) # 旋转 point = zoom(point3, point, math.cos(math.radians(angle))) # 缩放 Rect_tree(depth - 1, point, point4, angle, canvas) # 画左枝 Rect_tree(depth - 1, point3, point, angle, canvas) # 画右枝 canvas.update() sleep(0.001) 分形层数:finishLevel = 8 左下点:leftPoint = (450, 510) 右下点:rightPoint = (550, 510) 初始角:initAngle = 45