至此,我們知道,資料集由組織結構和與之關聯的屬性資料構組成,組織結構包括拓撲結構和幾何結構。資料集的型別是由它的組織結構決定,同時資料集的型別決定了點和單元之間的相互關係,圖6.11列出了常見的資料集型別,圖6.12是對應的類的繼承圖。
依據資料集的結構特徵,可分為規則結構和不規則結構的資料。如果組成資料集的點是規則的,則稱該資料集的幾何是規則的,如果組成資料集的單元之間的拓撲是規則的,則稱該資料集的拓撲是規則的(這句話可能有點繞,不過意思在前面的章節已經講得很清楚了,簡單地說就是點決定幾何結構,單元決定拓撲結構)。規則資料集的點和單元都是規則排列的,每個點的位置都可以依據相互之間的關係得到;不規則結構資料集沒有固定的模式,不能用簡單的方式描述,在儲存和計算時需要更多的記憶體和資源,但它在資料表達方面相對而言則更加自由,能更加細緻、靈活的表達。
通過第5章「vtk在影象處理中的應用」的學習,相信我們對vtkimagedata資料集的型別並不陌生。vtkimagedata型別的資料是按規則排列在矩形方格中的點和單元的集合,如圖6.11(a)所示,如果資料集的點和單元排列在平面(二維)上,稱此資料集為畫素對映(pixmap)、點陣圖或影象,由vtkpixel單元組成;如果排列在層疊面(三維)上,則稱為體(volume),由vtkvoxel單元組成。vtkimagedata是由一維的線、二維的畫素或三維的體素組成,vtkimagedata在幾何結構及拓撲結構都是規則的,因此每個點的位置可隱式地表達,只需要知道vtkimagedata資料的維數、起始點的位置和相鄰點之間的間隔,就可以計算出每個點的空間位置。資料維數用乙個三元組(nx, ny, nz
)來表示,分別表示在x、y和z方向上點的個數。vtkimagedata資料集的點的個數一共是nx
×ny×nz
,單元的個數一共是(nx
-1)×(ny
-1)×(nz
-1)。
vtkimagedata型別的資料集在影象處理和計算機圖形學領域應用都非常廣泛,而醫學影象則會頻繁產生體素資料,如ct(computedtomography)和mri(magnetic resonanceimaging)。關於vtkimagedata更詳細的內容請參考第5章。
多邊形資料集vtkpolydata由頂點(vertex)、多頂點(polyvertex)、線(line)、折線(polyline)和三角條帶(******** strip)等單元構成,多邊形資料是不規則結構的,並且多邊形資料集的單元在拓撲維度上有多種型別,如圖6.11-e所示。多邊形資料是資料、演算法和高速計算機影象學的橋梁。
頂點、線和多邊形構成了用來表達0、1和2維幾何圖形的基本要素的最小集合,同時用多頂點、折線和三角形條帶單元來提高效率和效能,特別是三角形條帶,用乙個三角形條帶表達n個三角形只需要用n+2個點,但是用傳統的表達方法需要用3n個點,而且大多數圖形庫渲染三角形條帶的速度比直接渲染三角形要快很多。
vtkrectilineargrid型別(線性網格)的資料是排列在矩形方格中的點和單元的集合,如圖6.11-b所示,線性網格的拓撲結構是規則的,但其幾何結構只是部分規則,也就是說,它的點是沿著座標軸排列的,但是兩點間的間隔可能不同,與vtkimagedata型別的資料相似,線性網格是由畫素或體素等單元組成的,它的拓撲結構通過指定網格的維數來隱式表達,幾何結構則通過一系列的x, y, z座標來表達。
vtkstructuredgrid是結構化網格資料,具有規則的拓撲結構和不規則的幾何結構,但是單元之間沒有重疊或交叉,如圖6.11-c所示。結構化網格的單元是由四邊形或六面體組成,結構化網格通常用於有限差分分析。典型的應用包括流體流動、熱量傳輸和
燃燒學等。
圖6.11vtk常見的資料集型別
圖6.12vtk常見資料集的類繼承圖
vtkunstructuredgrid,非結構化網格是最常見的資料集型別,它的拓撲結構和幾何結構都是不規則的,在此資料集中所有單元型別都可以組成任意組合,所以單元的拓撲結構從零維延伸至三維,如圖6.11-f所示。
vtk中任一型別的資料集都可用非結構化網格來表達,vtkunstructuredgrid型別資料的儲存需要大量的空間以及計算時需要消耗大量的資源,除非迫不得已,一般較少使用此種型別的資料集。非結構化網格主要用於有限元分析、計算幾何和幾何建模等領域。
vtkunstructuredpoints,非結構化點集,是指不規則地分布在空間的點集。非結構化點集具有不規則的幾何結構,不具有拓撲結構,非結構化點集用離散點來表達,如圖6.11-d所示。
通常,這類資料沒有固定的結構,由一些視覺化程式識別和建立的,非結構化點集適合表現非結構化資料,為了實現資料的視覺化,可將這種資料形式轉換成其它一些結構化的資料形式。
不同型別資料間的轉換
1.標準型別資料間的轉換 在c 中,某些不同型別資料之間可以相互轉換,例如 int i 6,i 7.5 i 這種轉換編譯系統自動完成,使用者不加干預,這種轉換稱為隱式型別轉換。c 還提供顯示型別轉換,型別名 資料 如int 89.5 2 轉換建構函式 轉換建構函式的作用是將乙個其他型別的資料型別轉換...
不同型別的資料進行比較
參考5.built in types中的說明,cpython按照如下規則進行比較 自己的總結 任何兩個物件都可以比較 相同型別的物件 例項 如果是數字型 int float long complex 則按照簡單的大小來比較 如果是非數字型,且類 型 中定義了 cmp 含 gt lt 等 則按照 cm...
不同型別語言
編譯型和解釋型的區別 先來看看編譯型語言定義 編譯型語言首先是將源 編譯生成機器指令,再由機器執行機器碼 二進位制 再來看看解釋型語言的定義 解釋型語言的源 不是直接翻譯成機器指令,而是先翻譯成中間 再由直譯器對中間 進行解釋執行。咋看一眼,還是一臉懵逼。下面打個比方 動態語言和靜態語言 我們常說的...