Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 三维网格算法_Python_Math_3d - Fatal编程技术网

Python 三维网格算法

Python 三维网格算法,python,math,3d,Python,Math,3d,我很难创建一个算法来计算给定数量的顶点的位置,这样它们将被分散,以匹配我设置的三维网格和立方体的分割数 详情如下: 我需要为3D网格立方体创建顶点,该立方体将有:X轴3行、Y轴4行和Z轴2行 假设每个顶点=x,y,z,并且顶点总数为3*4*2=24,那么对于24个顶点中的每个顶点,我应该用什么值替换x,y,z 起初我的想法是: vertices = [(0,0,0),(0,0,0),...] # fill the list with 24 vertices 然后迭代: for i in ran

我很难创建一个算法来计算给定数量的顶点的位置,这样它们将被分散,以匹配我设置的三维网格和立方体的分割数

详情如下:

我需要为3D网格立方体创建顶点,该立方体将有:X轴3行、Y轴4行和Z轴2行

假设每个顶点=x,y,z,并且顶点总数为3*4*2=24,那么对于24个顶点中的每个顶点,我应该用什么值替换x,y,z

起初我的想法是:

vertices = [(0,0,0),(0,0,0),...] # fill the list with 24 vertices
然后迭代:

for i in range(vertices.length):
 for x in range(3):
  for y in range(4):
   for z in range(2):
    vertices[i] = (x,y,z)
return vertices
…类似这样的东西


我还没弄明白。有人能帮我吗?

这是一个简短的代码,它返回一个顶点列表,这些顶点与代码的明显意图相匹配

from itertools import product
mylist = list(product(range(3), range(4), range(2)))
在iPython中打印mylist会导致

[(0, 0, 0),
 (0, 0, 1),
 (0, 1, 0),
 (0, 1, 1),
 (0, 2, 0),
 (0, 2, 1),
 (0, 3, 0),
 (0, 3, 1),
 (1, 0, 0),
 (1, 0, 1),
 (1, 1, 0),
 (1, 1, 1),
 (1, 2, 0),
 (1, 2, 1),
 (1, 3, 0),
 (1, 3, 1),
 (2, 0, 0),
 (2, 0, 1),
 (2, 1, 0),
 (2, 1, 1),
 (2, 2, 0),
 (2, 2, 1),
 (2, 3, 0),
 (2, 3, 1)]

如果您不了解产品的工作原理,请检查。

您的解决方案似乎几乎正确,您只需消除i上的外部循环并直接附加到顶点列表:

def grid():
    vertices = []
    for x in range(3):
        for y in range(4):
            for z in range(2):
                vertices.append((x, y, z))
    return vertices

print(grid())
或预初始化列表并分配单个元素:

def grid():
    vertices = [None]*3*4*2
    i = 0
    for x in range(3):
        for y in range(4):
            for z in range(2):
                vertices[i] = (x, y, z)
                i += 1

    return vertices

你的问题是什么?你想做什么有什么问题?非常感谢,你的解决方案非常漂亮!我只是没有选择它作为正确的答案,因为我需要在迭代中执行某些操作。