added all files reserch

This commit is contained in:
Danamir
2025-12-03 08:59:14 +03:00
parent a592701a3c
commit bdcf20478e
15 changed files with 1051 additions and 0 deletions

52
4.py Normal file
View File

@@ -0,0 +1,52 @@
import matplotlib.pyplot as plt
import matplotlib.patches as patches
def draw_trapezoid(a, b, h):
fig, ax = plt.subplots()
# Рисуем трапецию
trapezoid = patches.Polygon([(0, 0), (a, 0), (b, h), (0, h)], closed=True, fill=None, edgecolor='r')
ax.add_patch(trapezoid)
# Разбиваем трапецию на квадраты
split_trapezoid(a, b, h, ax, 0, 0)
# Устанавливаем пределы осей
ax.set_xlim(-1, max(a, b) + 1)
ax.set_ylim(-1, h + 1)
ax.set_aspect('equal')
plt.show()
def split_trapezoid(a, b, h, ax, x_offset, y_offset):
if a <= 0 or b <= 0 or h <= 0:
return
# Найдите самый большой квадрат, который можно вписать в трапецию
largest_square_side = min(a, b, h)
# Поместите квадрат в трапецию
place_square(largest_square_side, x_offset, y_offset, ax)
# Разделите оставшуюся часть трапеции
remaining_a = a - largest_square_side
remaining_b = b - largest_square_side
remaining_h = h - largest_square_side
# Повторите процесс для новых трапеций
if remaining_a > 0 and remaining_h > 0:
split_trapezoid(remaining_a, b, remaining_h, ax, x_offset + largest_square_side, y_offset)
if remaining_b > 0 and remaining_h > 0:
split_trapezoid(a, remaining_b, remaining_h, ax, x_offset, y_offset + largest_square_side)
def place_square(side, x, y, ax):
# Функция для помещения квадрата в трапецию
square = patches.Rectangle((x, y), side, side, linewidth=1, edgecolor='b', facecolor='none')
ax.add_patch(square)
# Пример использования
a = 10 # Длина верхнего основания трапеции
b = 20 # Длина нижнего основания трапеции
h = 5 # Высота трапеции
draw_trapezoid(a, b, h)