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)
