38 lines
1.7 KiB
Python
38 lines
1.7 KiB
Python
import numpy as np
|
||
import csv
|
||
|
||
# Параметры трапеции
|
||
height = 200000 # Высота трапеции
|
||
top_width = 8 # Ширина верхней стороны
|
||
bottom_width = 12 # Ширина нижней стороны
|
||
depth = 8 # Глубина трапеции
|
||
|
||
# Функция для вычисления температуры в зависимости от высоты z
|
||
def calculate_temperature(z):
|
||
# Температура изменяется от 0°C у основания до 100°C на вершине
|
||
return 100 * (z / height)
|
||
|
||
# Имя файла для сохранения данных
|
||
filename = "trapezoid_cubes_data.csv"
|
||
|
||
# Открываем файл для записи
|
||
with open(filename, mode='w', newline='') as file:
|
||
writer = csv.writer(file)
|
||
# Записываем заголовки столбцов
|
||
writer.writerow(["x", "y", "z", "temperature"])
|
||
|
||
# Заполняем трапецию кубиками 1x1x1 см
|
||
for z in range(height):
|
||
# Линейная интерполяция для ширины на каждом уровне высоты
|
||
width = top_width + (bottom_width - top_width) * (height - z) / height
|
||
x_min = (bottom_width - width) / 2
|
||
x_max = x_min + width
|
||
temperature = calculate_temperature(z)
|
||
|
||
for x in range(int(x_min), int(x_max)):
|
||
for y in range(depth):
|
||
# Записываем координаты центра кубика и его температуру
|
||
writer.writerow([x + 0.5, y + 0.5, z + 0.5, temperature])
|
||
|
||
print(f"Данные успешно сохранены в файл {filename}")
|