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