[英]How to find if a point is within a contour defined by a 2D unstructured grid in VTK?
[英]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引用像素索引。
本示例將向您顯示一個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.