用于元组和组件don'的vtk/python VTKFloatArray设置器;不通勤 问题
下面的代码片段配置python/VTKFloatArray,以便将来使用单位立方体的顶点坐标进行填充。设置了3个组件(x、y、z)的8个元组。似乎塞特人不上下班。这是预期的行为吗?似乎必须首先设置组件的数量。有人能复制这个吗?谢谢你的回答用于元组和组件don'的vtk/python VTKFloatArray设置器;不通勤 问题,python,vtk,Python,Vtk,下面的代码片段配置python/VTKFloatArray,以便将来使用单位立方体的顶点坐标进行填充。设置了3个组件(x、y、z)的8个元组。似乎塞特人不上下班。这是预期的行为吗?似乎必须首先设置组件的数量。有人能复制这个吗?谢谢你的回答 import vtk import numpy as np from itertools import product as itprod vertices = np.array(list(itprod([0, 1], repeat=3))) print
import vtk
import numpy as np
from itertools import product as itprod
vertices = np.array(list(itprod([0, 1], repeat=3)))
print vertices.shape[0] //8 vertices
print vertices.shape[1] //3 coordinates x-y-z
array = vtk.vtkFloatArray()
array.SetNumberOfComponents(vertices.shape[1])
array.SetNumberOfTuples(vertices.shape[0])
print array // number of tuples is 8, number of components is 3 OK
array = vtk.vtkFloatArray()
array.SetNumberOfTuples(vertices.shape[0])
array.SetNumberOfComponents(vertices.shape[1])
print array // number of tuples is 2 number of components is 3 WRONG
VTK总是变化无常的,尤其是在文档方面。我在相应的链接上找到了一些信息 前者(
SetNumberOfTuples
):
设置数组中元组(组件组)的数量
请注意,这可能会根据组件的数量分配空间。[……]
后者(SetNumberOfComponents
):
设置/获取组件的尺寸(n)
必须大于等于1。请确保在分配前已设置此选项
在我看来,前者可以分配空间,但在分配之前必须调用后者。因此,他们确实不需要通勤,你需要先打电话给后者,这应该是工作顺序(这与你的结果一致)
链接显然不符合Python实现,但是C++版本不应该通勤,你也不应该期望Python中的交换性。
术语的次要注释:我相信你对两个操作的交换性有一个问题,所以我会说它们不通勤。我编辑这篇文章。感谢安德拉斯的回答。它符合并解释了在实践中观察到的情况。让我有点惊讶的是,前一个setter没有与缓冲区分配解耦,而后一个是!