簡體   English   中英

如何在VTK中制作簡單的2D等高線圖?

[英]How to make a simple 2D contour plot in VTK?

我正在填入VTK示例,以了解如何對所創建的數據進行簡單的輪廓圖繪制。 假設我已經在一個結構化的矩形網格上的71x71域中解決了一個簡單的PDE,其中節點之間的間距相等。

我檢查了filledContours的示例,該示例告訴您如何可視化來自* .vtp文件的數據。 只要可以編寫.vtp文件,我就可以接受。 問題是我不知道如何創建適合輪廓繪制的.vtp數據文件。 我設法從嵌入式參與者(例如球體或圓錐體)創建.vtp文件,但是我不知道如何使用2D數據數組來執行此操作。

由於您需要等距的網格,因此我將使用基於vtk xml的ImageData格式(* .vti)。

來自http://www.cacr.caltech.edu/~slombey/asci/vtk/vtk_formats.simple.html

“ 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和PieceExtent引用像素索引。

在Paraview上可視化具有10x10像素的2D地圖 本示例將向您顯示一個10x10像素的地圖,其溫度從左下角到右上角。 值與每個單元格關聯。 您可以將此格式調整為2D數據。 文件內容(注意,我僅使用CellData):

example.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>

一種簡單的方法是以CSV格式輸出數據,並為每個網格正方形添加新行,即

....
grid_idx_i, grid_idx_j, grid_idx_k, val_ijk
....

然后,如果將其加載到paraview中,則可以應用過濾器TableToPoints使其以paraview可以處理的形式獲取。 然后應用過濾器Delaunay2D將其從點轉換為像元。 完成此操作后, Contour過濾器應該可以正常工作。

如果將數據存儲為CSV中的直線網格,也可能以某種方式加載數據,但是我不確定。

編輯:對不起,我隱式地假設您正在嘗試可視化paraview中的數據。 是這樣嗎

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM