Files
ktn01/5.py
2025-12-03 08:59:14 +03:00

56 lines
2.1 KiB
Python

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)