Я пытаюсь создать трехмерную матрицу с проходящей через нее трубной структурой. Я могу сделать трубу прямой, скопировав массив 2D numpy с окружностью в центре (x, y), и я могу сделать трубку наклонной, добавив int к оси x или y в каждом срезе, который я генерирую. У меня вопрос, как я могу переместить координаты (x, y), чтобы они могли сформировать кривую? Я не могу добавить размеры шагов изогнутых функций, таких как синус и косинус, к координатам, поскольку для индексации массива numpy это должно быть целое число. Что такое умный способ для создания изогнутой трубы из 2D срезов путем смещения координат центра?
Вот код, который я использую для создания прямой трубы в качестве 3D-матрицы:
import numpy as np
import cv2
import matplotlib.pyplot as plt
slice_2d = np.zeros((128,128))
circle_center = (50,50)
radius=10
slice_2d = cv2.circle(slice_2d, circle_center, radius, color=1, thickness=-1)
plt.imshow(slice_2d)
# then we repeat the slice 128 times to create a straight tube in a 3D matrix of 128,128,128
tube_matrix = []
for i in range(0,128):
tube_matrix.append(slice_2d)
tube_matrix = np.array(tube_matrix)