import matplotlib.pyplot as plt import numpy as np def draw_trapezoid_with_squares(a, b, h, square_size): """ Рисует трапецию с квадратами внутри. Параметры: a (float): Верхнее основание трапеции. b (float): Нижнее основание трапеции. h (float): Высота трапеции. square_size (float): Сторона квадрата. """ # Функция для вычисления ширины трапеции на уровне y def width_at_height(y): return b - (b - a) * (y / h) # Параметры для построения графика fig, ax = plt.subplots() # Стартовая высота y = 0 # Проходим по каждому уровню, начиная с нижнего while y < h: # Вычисляем ширину трапеции на текущем уровне current_width = width_at_height(y) # Определяем левый и правый край на уровне left_x = -(current_width / 2) right_x = current_width / 2 # Заполняем уровень квадратами x = left_x while x + square_size <= right_x: # Рисуем квадрат square = plt.Rectangle((x, y), square_size, square_size, edgecolor='black', facecolor='blue', fill=True) ax.add_patch(square) x += square_size # Если осталась неполная часть, рисуем неполный квадрат if x < right_x: square = plt.Rectangle((x, y), right_x - x, square_size, edgecolor='black', facecolor='blue', fill=True) ax.add_patch(square) # Переходим на следующий уровень y += square_size # Рисуем саму трапецию trapezoid = np.array([[-b/2, 0], [b/2, 0], [a/2, h], [-a/2, h], [-b/2, 0]]) ax.plot(trapezoid[:, 0], trapezoid[:, 1], color='black') # Настройки графика ax.set_aspect('equal') plt.xlim(-b/2 - 1, b/2 + 1) plt.ylim(0, h + square_size) plt.show() # Пример использования draw_trapezoid_with_squares(a=6, b=10, h=8, square_size=1)