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)
