VTK修炼之道11:基本数据结构_数据对象数据集
生活随笔
收集整理的這篇文章主要介紹了
VTK修炼之道11:基本数据结构_数据对象数据集
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.前言
前面學習了VTK的一個重要概念——可視化管線,了解了VTK數據的流動過程。好比我們做一道菜,在做每一道菜之前,首先要掌握這道菜的做法,什么時候放鹽什么時候放醬油等調料,除了需要弄清楚做每一道菜的流程,還需要了解所做的每一道菜的原料,比如有些原料是要蒸出來才比較好吃,有些則可能會用燉的方法才比較可口,只有掌握做菜的流程以及了解菜的原料的特點,最后做出來的菜才可口美味。如果說VTK可視化管線是完成VTK應用程序這道菜的基本步驟,那么VTK的數據結構就好比我們做每一道菜的基本原料。針對可視化領域的特點,VTK定義了種類豐富的數據結構,了解這些數據結構,有助于寫出更有針對性的、更高效的可視化應用程序。2.可視化數據的共性
我們的目的是要對數據進行可視化,因此有必要對可視化的數據特點作一了解。歸納起來,可視化數據具有如下一些特點:2.1 離散性
為了讓計算機能夠獲取、處理和分析數據,必須對無限、連續的空間體進行采樣,生成有限的采樣數據點,這些數據以離散點的形式存儲,采樣的過程是一個離散化的過程。由于可視化數據的離散性特點,在某些離散點上有精確的值存在,但點與點之間的值則是不可知的,要得到采樣點之外的其他點的值,只有通過插值(Interpolation)的方法獲取。常用的插值方法是線性插值,要得到更精確的數值可以采用非線性插值,如B樣條插值方法。
2.2 數據具有規則或不規則的結構
可視化數據可以分為規則(Regular)和不規則(Irregular)或者說結構化(Structured)和非結構化(Unstructured)。規則結構數據點之間有固定的關聯關系,可以通過這些關聯確定每個點的坐標,不規則結構數據之間沒有固定的關聯關系。對于規則結構的數據,存儲時不必存儲所有的數據點,只需存儲起始點、相鄰兩點之間的間隔以及點的總數就可以保存完整的數據信息。對于不規則結構的數據,雖然不可以像規則結構的數據那樣存儲,但它也有自身的優勢,即在數據變化頻繁的區域可以密集表示,而數據變化不頻繁的區域則稀疏表示。規則結構的數據可以在存儲及計算時占優勢,不規則結構的數據雖然存儲和計算時不能像規則結構的那樣高效,但它在數據表達方面相對而言則更加自由,更加細致、靈活的表現數據。
2.3 數據具有維度
可視化數據的第三個特點是拓撲維度(Topological Dimension)。可視化數據具有零維、一維、二維、三維等任意維度。如,零維的數據表現為點,一維數據表現為曲線,二維數據表現為曲面,三維數據表現為體等。數據的維度決定了數據可視化的方法,如,對于二維的數據,可以將數據存儲到一個矩陣,然后再采用針對二維數據的可視化方法進行可視化。3. VTK中的數據對象(vtkDataObject)與數據集(vtkDataSet)
3.1 數據對象 vtkDataObject
在VTK中,數據一般以數據對象的形式表現,是VTK里可視化數據最一般的表達形式。數據對象是數據的集合,數據對象表現的數據是可以被可視化管線處理的數據,只有數據對象被組織成一種結構(Structure)后,才能被VTK提供的可視化算法處理。下圖是vtkDataObject類的繼承圖,VTK里所有的數據結構形式都是從這個類派生出來的,實際的VTK應用程序中,沒有直接使用vtkDataObject來實例化數據對象,而是根據具體的可視化數據選用其具體的子類實現可視化的。
3.2 數據集 vtkDataSet
數據對象被組織成一種結構并且被賦予相應的屬性值時就形成數據集(Dataset)。VTK里與數據集對應的類是vtkDataSet,該類從vtkDataObject直接派生。vtkDataSet由兩個部分組成,即組織結構(Organizing Structure)以及與組織結構相關聯的屬性數據(Attribute Data),上圖描述了vtkDataSet各結構的詳細構成。vtkDataSet是一個抽象基類,結構的實現及表達由其具體的子類來完成。
vtkDataSet的組織結構由拓撲結構(Topology)和幾何結構(Geometry)兩部分組成。拓撲結構描述了物體的構成形式,幾何結構描述了物體的空間位置關系。換言之,點數據(Point Data)所定義的一系列坐標點構成了vtkDataSet(數據集)的幾何結構;點數據的連接(點的連接先形成單元數據(Cell Data),由單元數據再形成拓撲)就形成了數據集的拓撲結構。比如,我們想要在屏幕上顯示一個三角形,首先我們必須定義三角形三個點的坐標(即Point Data,記三個點為P1, P2和P3),然后將這三個點按照一定的順序連接起來(P1-P2-P3,或者是P3-P2-P1的順序),這三個點定義了數據集的幾何結構,它們的連接就構成了數據集的拓撲結構。亦即,點數據(Point Data)定義數據集的幾何結構,單元數據(Cell Data)定義數據集的拓撲結構,要形成完整的數據集,必須有幾何和拓撲兩種結構。
關于拓撲、幾何結構以及屬性數據的更多解釋: 拓撲結構具有幾何變換不變性。例如,說一個多邊形是三角形,即指其拓撲結構,而給定的每個點的坐標,則為其幾何結構。幾何結構是一種空間描述,與空間變換有緊密聯系,常見的變換有旋轉、平移和縮放。屬性數據是對拓撲結構和幾何結構信息的補充,屬性數據可以是某個空間點的溫度值,也可以是某個單元的質量等。
4.參看資料
1.《C++ primer》2.《The VTK User’s Guide – 11thEdition》
3.《The Visualization Toolkit – AnObject-Oriented Approach To 3D Graphics (4th Edition)》
4. ?張曉東, 羅火靈. VTK圖形圖像開發進階[M]. 機械工業出版社, 2015.
總結
以上是生活随笔為你收集整理的VTK修炼之道11:基本数据结构_数据对象数据集的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (飞鸽传书绿色版)网站
- 下一篇: 女程序员 一直从事着软件研发的工作