6

構造化グリッドに分析フィールドを入力しようとしていますが、vtkドキュメントを読んだにもかかわらず、グリッドポイントで実際にスカラー値を設定する方法やグリッドの間隔/原点情報を設定する方法がわかりません。以下のコードから始めて、どうすればよいですか

  1. 空間情報をグリッドに関連付けます(つまり、セル0,0,0は座標0,0,0にあり、間隔はすべての方向でdxです)
  2. スカラー値を各グリッドポイントに関連付けます。最初は1つだけ必要ですが、最終的には各ポイントに3つのデータを格納したいと思います(ベクトルではなく、3つの異なるスカラー)。
grid = vtk.vtkStructuredGrid()
numPoints = int((maxGrid - minGrid)/dx)
grid.SetDimensions(numPoints, numPoints, numPoints)
4

1 に答える 1

17

VTK には、vtkImageData (vtkUniformGrid はこれから派生)、vtkRectilinearGrid、および vtkStructuredGrid の 3 種類の「構造化された」グリッドがあります。それらはすべて、トポロジーが設定されているという意味で構造化されています。vtkImageData は点間の間隔が一定で、軸が整列されています。vtkRectilinearGrid は軸が整列されていますが、各軸方向の間隔を変えることができます。vtkStructuredGrid は任意に配置された点を持ちます (ただし、セルは有効ではない場合があります)。

あなたがしたいことのためにあなたはしなければなりません:

from vtk import *
dx = 2.0
grid = vtkImageData()
grid.SetOrigin(0, 0, 0) # default values
grid.SetSpacing(dx, dx, dx)
grid.SetDimensions(5, 8, 10) # number of points in each direction
# print grid.GetNumberOfPoints()
# print grid.GetNumberOfCells()
array = vtkDoubleArray()
array.SetNumberOfComponents(1) # this is 3 for a vector
array.SetNumberOfTuples(grid.GetNumberOfPoints())
for i in range(grid.GetNumberOfPoints()):
    array.SetValue(i, 1)

grid.GetPointData().AddArray(array)
# print grid.GetPointData().GetNumberOfArrays()
array.SetName("unit array")
于 2011-10-05T20:37:41.767 に答える