import matplotlib.pyplot as plt import numpy as np def draw_trapezoid_and_squares(base1, base2, height, square_size): """ Функция для рисования трапеции и её разбиения на квадраты. :param base1: Длина нижнего основания трапеции :param base2: Длина верхнего основания трапеции :param height: Высота трапеции :param square_size: Размер стороны квадрата """ # Определяем координаты вершин трапеции x1, y1 = 0, 0 # Левая нижняя вершина x2, y2 = base1, 0 # Правая нижняя вершина x3, y3 = (base1 - base2) / 2, height # Левая верхняя вершина x4, y4 = x3 + base2, height # Правая верхняя вершина # Рисуем трапецию trapezoid_x = [x1, x2, x4, x3, x1] trapezoid_y = [y1, y2, y4, y3, y1] plt.figure(figsize=(8, 6)) plt.plot(trapezoid_x, trapezoid_y, 'b-', label='Трапеция') # Разбиваем трапецию на квадраты num_rows = int(height // square_size) # Количество строк квадратов for row in range(num_rows): # Вычисляем высоту текущей строки current_height = (row + 1) * square_size if current_height > height: break # Определяем ширину трапеции на текущей высоте width_at_height = base1 - (base1 - base2) * (current_height / height) start_x = (base1 - width_at_height) / 2 end_x = start_x + width_at_height # Разбиваем строку на квадраты num_cols = int(width_at_height // square_size) for col in range(num_cols): square_x = start_x + col * square_size square_y = row * square_size # Рисуем квадрат square = plt.Rectangle((square_x, square_y), square_size, square_size, fill=False, edgecolor='r', linewidth=1) plt.gca().add_patch(square) # Настройки графика plt.gca().set_aspect('equal', adjustable='box') plt.title('Разбиение трапеции на квадраты') plt.xlabel('X') plt.ylabel('Y') plt.legend() plt.grid(True) plt.show() # Пример использования base1 = 10 # Нижнее основание base2 = 6 # Верхнее основание height = 8 # Высота square_size = 1 # Размер квадрата draw_trapezoid_and_squares(base1, base2, height, square_size)