vtk中資料集

2021-08-11 11:34:09 字數 1463 閱讀 1054

點或單元的屬性資料是以資料陣列(vtkdataarray)的形式進行儲存的,根據資料值型別的不同,具體儲存在vtkdataarray的子類中,如vtkfloatarray和vtkintarray等。陣列中每個元素為元組,對應著單個點或單元的屬性資料。

元組個數不指定時,insert的方法插入資料(最終插入的元組個數必須等於點或單元的個數);如果指定了元組個數,就可以呼叫名字字首為set的方法。方法名字尾的數字表示的是元組中分量的個數,該數字與setnumberofcomponents()的引數一致,預設分量的個數為1。

資料陣列可作為特殊或一般的屬性資料新增到資料集中。若是作為一般屬性資料,則在則在建立陣列時可以用方法setname()給陣列設定乙個名字。

vtkpolydata *polydata=vtkpolydata::new();       

polydata->getpointdata()->setscalars(scalars); //特殊屬性資料

polydata->getcelldata()->setvectors(vectors); //特殊屬性資料

polydata->getpointdata()->addarray(anarray); //一般屬性資料

首先需要呼叫資料集的方法,getpointdata()或getcelldata()獲取點或單元資料。接著呼叫setscalar()和setvectors()將資料陣列作為特殊資料儲存起來。設定分別是標量屬性資料和向量屬性資料(其他還包括法線屬性資料、紋理座標屬性資料和張量屬性資料,分別用setnormals()、settcoords()和settensors()設定)。最後用addarray新增到資料集中。

(1)建立vtkpoints子類的例項來定義幾何,使用操作cube->setpoints()將點與資料集關聯起來;

(2)建立vtkcellarray的例項來定義定點,線,多邊形和三角帶的拓撲屬性。使用cube->setverts(),cube->setlines(),cube->setpolys()和cube->setstrips()將這些單元和資料集關聯起來。

(3)建立點屬性資料。每個資料集都有乙個vtkpointdata例項屬性。使用操作pd=cube->getpointdata()來獲取指向這個點屬性資料的指標。使用操作pd->setscalars(),pd->setvectors(),pd->setnormal(),pd->settensors()和pd->settcoords()。將屬性資料與資料集關聯起來。

由於結構上的規則,所以在定義乙個結構化點資料集時,不需要定義所有的點和所有的單元,只需要知道乙個起始點的座標及沿三個座標軸方向上的相鄰點間的距離,就可以算出所有點的座標。這兩個引數通過setorigin()和setspacing()進行設定。

由於已知單元的型別只屬於上面提到的三種中的一種,並且只有相鄰的點才能構成單元,所以只要知道每個座標軸方向上有多少個點(n(x),n(y),n(z))就可以確定所有的單元了。用setdimensions()進行設定尺寸。

VTK教程之五 資料集的型別和資料集

在vtk中資料集的型別主要按構成資料集的幾何資料和單元來劃分,主要的資料集型別包括 結構化網格資料集 非結構化網格資料集 多邊形資料集 結構化點集 線性網格資料集 非結構化點集等幾大類,各類的表現形式如下圖所示 1 結構化網格資料集 結構化網格具有規則的拓撲結構和不規則的幾何結構,但是單元沒有重疊或...

VTK從CSV檔案中讀取資料

csv也是一種文字檔案,類似於txt文字檔案。但是由於csv檔案的特殊用途,本身可以由excel辦公軟體獲得,也有廣泛的用途。以下示例演示採用c 方式讀取csv檔案的點雲資料,然後借助vtk視覺化管線,渲染讀取的點雲資料。刪除字串中空格,製表符tab等無效字元 string trim string ...

vtk中的剪裁

在vtk中,我們通常需要的並不是嚴格標準的幾何體,我們需要對這些幾何體進行加工,修改其內容,得到我們想要的效果,下面結合例子介紹如何在vtk中實現對幾何體的裁剪。要對幾何體進行裁剪,需要建立好幾何體模型,然後定義乙個隱函式,利用vtkclippolydata,通過隱函式vtkimplicitfunc...