C++ 如何在VTK中制作简单的二维等高线图?

C++ 如何在VTK中制作简单的二维等高线图?,c++,visual-c++,data-visualization,vtk,C++,Visual C++,Data Visualization,Vtk,我正在死记硬背VTK示例,以了解如何对我创建的数据进行简单的等高线绘制。假设我在一个71x71域中,在一个结构化的矩形网格上求解了一个简单的偏微分方程,在这个网格中,节点之间的距离相等 我已经研究了一个示例,它告诉我们如何可视化来自*.vtp文件的数据。只要我能写.vtp文件,我就可以。问题是我不知道如何创建适合等高线绘制的.vtp数据文件。我设法从嵌入的角色(如球体或圆锥体)创建了.vtp文件,但我不知道如何使用我的2D数据数组来创建它。一个简单的方法是以CSV格式输出数据,每个网格正方形有一

我正在死记硬背VTK示例,以了解如何对我创建的数据进行简单的等高线绘制。假设我在一个71x71域中,在一个结构化的矩形网格上求解了一个简单的偏微分方程,在这个网格中,节点之间的距离相等


我已经研究了一个示例,它告诉我们如何可视化来自*.vtp文件的数据。只要我能写.vtp文件,我就可以。问题是我不知道如何创建适合等高线绘制的.vtp数据文件。我设法从嵌入的角色(如球体或圆锥体)创建了.vtp文件,但我不知道如何使用我的2D数据数组来创建它。

一个简单的方法是以CSV格式输出数据,每个网格正方形有一个新行,即

....
grid_idx_i, grid_idx_j, grid_idx_k, val_ijk
....
然后,如果将其加载到paraview中,则可以应用过滤器
TableToPoints
,以paraview可以处理的形式获取它。然后应用过滤器
Delaunay2D
将其从点转换为单元。完成此操作后,
轮廓
过滤器应该可以正常工作

另外,如果数据存储为CSV中的直网格,可能会以某种方式加载数据,但我不确定


编辑:抱歉,我暗示您试图在paraview中可视化数据。是这样吗?

由于需要等间距的网格,我将使用基于vtk xml的图像数据格式(*.vti)

发件人:

"� ImageData-每个ImageData片段指定其在数据集的整个范围内的范围。点和单元格。。。 由范围、原点和间距隐式描述。请注意,所有片段的原点和间距都是常量,因此它们被指定为ImageData XML元素的属性,如下所示

<VTKFile type=" ImageData" ...> 
    <ImageData WholeExtent=" x1 x2 y1 y2 z1 z2" 
        Origin=" x0 y0 z0" Spacing=" dx dy dz"> 
        <Piece Extent=" x1 x2 y1 y2 z1 z2"> 
            <PointData>...</ PointData> 
            <CellData>...</ CellData> 
        </ Piece> 
    </ ImageData> 
</ VTKFile> 

... 
... 
-链接结束信息“ 请注意,只有x0 y0 z0和dx dy dz是实数,WholeExtent和piecedextent指的是像素索引

本例将向您展示一张10x10像素的地图,其温度从左下角到右上角。值与每个单元格相关联。可以根据二维数据调整此格式。文件内容(注意,我只使用CellData):

示例.vti:

<VTKFile type="ImageData" version="0.1" byte_order="LittleEndian">
    <ImageData WholeExtent=" 0 10 0 10 0 1" Origin=" 0 0 0" Spacing=" 1 1 0">

        <Piece Extent=" 0 10 0 10 0 1">

          <CellData Scalars="scalars">
              <DataArray type="Float32" Name="Temperature[C]" format="ascii">
                  1       2       3       4       5       6       7       8       9       10
                  11      12      13      14      15      16      17      18      19      20
                  21      22      23      24      25      26      27      28      29      30
                  31      32      33      34      35      36      37      38      39      40
                  41      42      43      44      45      46      47      48      49      50
                  51      52      53      54      55      56      57      58      59      60
                  61      62      63      64      65      66      67      68      69      70
                  71      72      73      74      75      76      77      78      79      80
                  81      82      83      84      85      86      87      88      89      90
                  91      92      93      94      95      96      97      98      99      100
              </DataArray>
          </CellData>

        </Piece>

    </ImageData>
</VTKFile>

1       2       3       4       5       6       7       8       9       10
11      12      13      14      15      16      17      18      19      20
21      22      23      24      25      26      27      28      29      30
31      32      33      34      35      36      37      38      39      40
41      42      43      44      45      46      47      48      49      50
51      52      53      54      55      56      57      58      59      60
61      62      63      64      65      66      67      68      69      70
71      72      73      74      75      76      77      78      79      80
81      82      83      84      85      86      87      88      89      90
91      92      93      94      95      96      97      98      99      100