【发布时间】:2023-03-07 19:10:01
【问题描述】:
我有一个带有所有八个角顶点坐标的长方体
(-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)
我想在这个体积内创建体积为 1m x 1m x 1m 的 3D 体素并保存它们的中心坐标。我尝试使用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 是包含所有坐标的清单看起来像这样的所有体素中心。
array([[-111, -70, -26],
[-111, -64, -26],
[-111, -57, -26],
...,
[ 103, 55, 80],
[ 103, 62, 80],
[ 103, 71, 80]])
我认为我的实现可能效率低下,所以任何帮助都会有所帮助!
【问题讨论】:
-
你能发布一个顶点的小样本吗?
-
@Ethan 我在这里迭代的顶点基本上是立方体/盒子的 8 个角顶点。我在所有 3 个维度中获取最大和最小可能坐标,并从中制作一个网格,基本上是所有 3 个列表的笛卡尔积
xdim , ydim ,zdim。顶点(角点)是:(-111.2433, 71.5288, -26.2690) (-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) -
请编辑您的原始帖子以包含示例顶点。这将使任何调查您的问题的人更容易
-
@DrBwts 我已经相应地更新了我的问题!
标签: python python-3.x performance numpy 3d