added all files reserch
This commit is contained in:
55
5.py
Normal file
55
5.py
Normal file
@@ -0,0 +1,55 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user