У меня есть кубоид со всеми его восемью угловыми координатами вершины
(-111.2433, -70.9316, -26.2690)
(-111.2433, -70.9316, 80.8608)
(-111.2433, 71.5288, 80.8608)
(103.3007, 71.5288, -26.2690)
(103.3007, -70.9316, -26.2690)
(103.3007, -70.9316, 80.8608)
(103.3007, 71.5288, 80.8608)
Я хочу создать трехмерные вокселы в этом объеме объемом 1м x 1м x 1м и сохранить их координаты центра. Я попытался использовать np.meshgrid()
для этого следующим образом.
x_max = -1000000
y_max = -1000000
z_max = -10000000
x_min = 1000000
z_min = 1000000
y_min = 10000000
for v in vertices:
x = v[0]
y = v[1]
z = v[2]
x_max = max(x_max ,x)
x_min = min(x_min , x)
y_max = max(y_max ,y)
y_min = min(y_min , y)
z_max = max(z_max ,z)
z_min = min(z_min , z)
xdim = list(range(int(x_min) , int(x_max) , 1))
ydim =list(range(int(y_min) , int(y_max) , 1))
zdim =list(range(int(z_min) , int(z_max) , 1))
grid = np.array(np.meshgrid(xdim , ydim , zdim)).T.reshape(3 , -1)
xdim
, ydim
, zdim
- списки, состоящие из всех координат, которые l ie в измерении блока- мудрый и np.mehsgrid()
в основном берет декартово произведение всех этих координат, давая нам, следовательно, (x , y, z)
координаты всех воксельных центров, что выглядит примерно так:
array([[-111, -70, -26],
[-111, -64, -26],
[-111, -57, -26],
...,
[ 103, 55, 80],
[ 103, 62, 80],
[ 103, 71, 80]])
Я думаю, что моя реализация может быть неэффективно, поэтому любая помощь будет полезна!