added all files reserch
This commit is contained in:
52
4.py
Normal file
52
4.py
Normal 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)
|
||||
Reference in New Issue
Block a user