vtk學習筆記 繪製等值線

2021-08-31 22:03:26 字數 1041 閱讀 9370

最近在學習vtk,想嘗試繪製等值線,後來在網上找到乙份教程:vtk培訓教程,裡面有講到這個內容,在這裡非常感謝這位作者的講解與示例,可惜這份文件沒有署名!

使用vtk來繪製等值線,需要使用到vtkcontourfilter,它所處理的資料需要是規則網格資料,如規則的正方形網格等。

通過使用vtkcontourfilter::setvalue(i,value)方法來指定繪製第幾條等值線,其中等值線的值由value指定。意思就是提取網格資料中標量值為value的點,然後將其連線起來,對於一些邊,vtkcontourfilter會進行插值運算,計算出對應的點。也可以使用vtkcontourfilter::generatevalues(count, start, end);來生成一些列的等值線,其中count引數指定等值線的條數,而start指定第一條等值線的值,end指定最後一條等值線的值,中間等值線的值則通過計算得到。

在下面的例子中,我們首先生成網格資料的點集,其次指定網格的拓撲結構即cells,然後設定每個點的標量值,,最後通過vtlcontourfile來生成等值線並最終顯示出來。

在vtk中儲存點集使用vtkpoints,可以使用它的insertnextpoint(x,y,z)來插入乙個點的座標,這些點在vtkpoints內部都有對應的id,其值可以理解為這些點對應的索引值。在後面設定cell值和標量值的時候,都需要使用到這些id。

拓撲結構使用vtkcellarray來儲存,其中cell資訊,下面示例中使用的是多邊形vtkpolygon,在建立vtkpolygon物件時,首先需要通過setnumberofids(num)來指定多邊形點的個數,然後通過getpointids().setid(0,0);來設定這個多邊形每個點對應在點集中的id。最後通過vtkcellarray.insertnextcell將建立的多邊形新增到vtkcellarray中。

標量值儲存在vtkfloatarray中,通過inserttuple1(id,value)來設定點集中對應點的標量值。

程式最終執行效果圖:

其中關鍵**如下:

public void build()
原始碼見附件

opencv 實現等值線 繪製等值線

例項簡介 等值線繪製 用於opengl環境下等值線的生成 例項截圖 核心 等值線繪製 等值線繪製 contour 2dmemallocator.cpp 2dmemallocator.h clrfiledialog.cpp clrfiledialog.h colorlookuptable.cpp co...

MATLAB等值線繪製

作平面等值線,x,y,z為確定三維曲面點的矩陣。matlab自選等值線的高度和條數。兩者區別是,contour x,y,z 限定了等高線的橫縱座標值而contour z 沒有限定。下面以contour x,y,z 為例,說明其他功能。contour x,y,z,n 是指定畫出n條等值線,而等值線的值...

曲面等值線

clear,x linspace 1.5 pi,1.5 pi y linspace pi,pi z sin y cos x z 0.9 0.1 0.9 figure,contour x,y,z,z fs 16 title 等值線 fontsize fs xlabel itx fontsize fs ...