import matplotlib.pyplot as plt import numpy as np # Функция для создания координат трапеции def trapezoid(a, b, h): # Точки четырехугольника трапеции x = [-(a/2), -(b/2), b/2, a/2, -(a/2)] y = [0, h, h, 0, 0] return x, y # Функция для рисования квадратов внутри трапеции def draw_squares_in_trapezoid(a, b, h, square_size): fig, ax = plt.subplots() # Координаты трапеции x_trap, y_trap = trapezoid(a, b, h) # Рисуем трапецию ax.plot(x_trap, y_trap, 'b') # Высота и шаги по оси y current_y = 0 while current_y + square_size <= h: # Находим ширину трапеции на уровне current_y width_at_y = b + (a - b) * (current_y / h) # Количество квадратов в текущем ряду num_squares_in_row = int(width_at_y // square_size) # Начальная точка для отрисовки квадратов по оси x start_x = -(num_squares_in_row * square_size) / 2 # Рисуем квадраты в ряду for i in range(num_squares_in_row): square = plt.Rectangle((start_x + i * square_size, current_y), square_size, square_size, edgecolor='black', facecolor='none') ax.add_patch(square) # Переходим на следующий ряд current_y += square_size ax.set_aspect('equal') plt.xlim(-a / 2 - 1, a / 2 + 1) plt.ylim(0, h + 1) plt.title("Разбиение трапеции на квадраты") plt.grid(True) plt.show() # Задаем размеры трапеции и квадрата a = 10 # длина большего основания b = 6 # длина меньшего основания h = 8 # высота square_size = 1 # сторона квадрата draw_squares_in_trapezoid(a, b, h, square_size)