日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

6.3 单元类型

發布時間:2025/3/15 编程问答 9 豆豆
生活随笔 收集整理的這篇文章主要介紹了 6.3 单元类型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數據集由一個或多個單元組成,圖6.6和6.7列出了VTK支持的線性和非線性類型的單元。一系列有序的點按指定類型連接所定義的結構就是單元(Cell),單元是可視化系統的基礎。這些點的連接順序通常也稱為頂點列表(Connectivity List);所指定的類型定義了單元的拓撲結構,而點的坐標定義了單元的幾何結構。

比如,圖6.8是類型為六面體(Hexahedron)的單元,頂點列表(由點的索引號表示,即8-10-1-6-21-22-5-7,每個點通過索引號可在頂點列表中檢索到該點的實際坐標值)定義了六面體單元的拓撲結構,從圖中可以看出,索引為8和10的點連接就構成了六面體十二條邊中的其中一條,而8-10-1-6這四個點連接就構成了六面體其中的一個面。在這個示例中,可以看出單元是由單元的類型(如六面體)和構成單元的頂點列表兩部分構成。

通常我們用數學符號Ci來表示單元,換言之,單元就是一個有順序的點集:Ci = {p1, p2,…, pn},其中pi∈P,P就是該有序的點集。單元的類型決定了點集里點的順序,或者說單元的拓撲;而定義單元的點的個數就是該單元的大小(Size)。

單元的拓撲維度除了三維(圖6.8)之外,還可以是零維、一維、二維等,如零維的頂點(Vertex)、一維的線(Line)以及二維的三角形(Triangle)。單元可以是基本類型或者基本類型的組合,基本類型是指不可再分的單元,組合類型是由基本類型組合而成。比如,三角形條帶(Triangle Strip)是由多個三角形所組成,即三角形條帶可以分解成多個三角形,而三角形是二維的基本單元類型。所以,對于單元的類型而言,理論上由不同類型的單元可以組合成無數種,VTK應用程序需要用到哪些類型的單元應該根據具體的要求。總的來說,VTK里的單元類型分為線性、非線性(圖6.6和圖6.7)和其他類型,接下來的內容主要介紹VTK里定義的單元類型。
6.3.1 線性單元

單元類型的線性與非線性的劃分主要是以插值函數為依據的,對于線性單元,采用的是線性或者常量插值函數。另外,單元里的任意一條邊都是由兩個點連接定義的。VTK里單元的類型定義在vtkCellType.h文件里,線性的單元類型有:

Vertex:VTK_VERTEX,頂點,由一個點定義,是零維的基本類型。

Polyvertex:VTK_POLY_VERTEX,多頂點,多個頂點組合而成,是零維的組合單元,其定義不受頂點順序的限制。

Line:VTK_LINE,直線,一維的基本類型,由兩個點定義,方向是從第一個點指向第二個點。

Polyline:VTK_POLY_LINE,折線,由一條或多條直線組合而成,屬于一維的類型。由n+1個有序的點連接定義的,n表示折線的線段條數,每兩個點(i, i+1)定義一條線段。

Triangle:VTK_TRIANGLE,三角形,二維的基本類型,由三個點按逆時針的方向連接定義的,點的連接方向和表面法向量符合右手法則,即除大拇指外的手指沿著點的方向彎曲,大拇指所指向的方向就是表面法向量。

TriangleStrip:VTK_TRIANGLE_STRIP,三角形條帶,由一個或多個三角形組合而成,二維的類型。由n+2個有序的點連接定義的,n表示三角形條帶里三角形的個數,定義三角形條帶的點不需要共面。定義每個三角形的頂點順序為(i, i+1, i+2),0≦i≦n。

Quadrilateral:VTK_QUAD,四邊形,二維的基本類型,由共面的四個點按逆時針的方向連接定義的。四邊形要求是凸多邊形,且它的邊不能相交。利用右手法則可以得到該四邊形的表面法向量。

Pixel:VTK_PIXEL,二維的基本類型,由共面的四個點按一定的順序連接定義的。該類型的單元與四邊形的區別在拓撲結構上,Pixel類型要求相鄰的兩條邊必須垂直,而且相對的兩條邊要與坐標軸平行,因此Pixel的表面法向量也與其中的一條坐標軸平行。

圖6.6 VTK里定義的線性的Cell類型

圖6.7VTK里定義的非線性的Cell類型

圖6.8 六面體Cell

定義Pixel的四個頂點的順序與四邊形的不同,如圖6.6-h所示,Pixel頂點的計數是先沿著X軸的方向,然后是Y軸,最后是Z軸方向。Pixel是四邊形類型的特殊形式,但要注意這里的Pixel是一種單元類型,與圖像像素(Pixel)的概念是不同的。Pixel具體表達什么意思,需要根據上下文來作判斷。

Polygon:VTK_POLYGON,多邊形,二維的基本類型,由共面的三個或以上的點按逆時針方向的順序連接定義的。多邊形表面法向量的方向通過右手法則確定。

多邊形可以是凹多邊形,也可以是凸多邊形,但是不能含有內部循環或者出現相交的邊。多邊形有n條邊,n就是組成多邊形的點的個數。

Tetrahedron:VTK_TETRA,四面體,三維的基本類型,由不共面的四個點兩兩連接定義的。如圖6.6-j所示,四面體有六條邊和四個面。

Hexahedron:VTK_HEXAHEDRON,六面體,三維的基本類型,包含六個四邊形表面、12條邊和8個頂點。其中8個頂點的連接順序如圖6.6-k所示,六面體要求必須是凸的。

Voxel:VTK_VOXEL,三維的基本類型,與六面體的拓撲一樣,但幾何上有所區別。Voxel要求相鄰的兩個面必須垂直,點的連接順序如圖6.6-l所示。Voxel是六面體的特殊形式。與Pixel類似,Voxel與三維圖像體素(Voxel)的概念是不同的。

Wedge:VTK_WEDGE,楔形,三維的基本類型,由三個四邊形面、兩個三角形面、九條邊和六個頂點構成。六個點的連接順序如圖6.6-m所示。要求面和邊不能與其他的相交,且楔形必須是凸的。

Pyramid:VTK_PYRAMID,角椎體,三維的基本類型,由一個四邊形面、四個三角形面、八條邊和五個頂點構成。構成角椎體的點的連接順序如圖6.6-n所示。定義四邊形的四個點要求是共面的,且四個點構成的四邊形必須是凸的,第五個點與其他四個點不在一個面上。

PentagonalPrism:VTK_PENTAGONAL_PRISM,五棱柱,三維的基本類型,由五個四邊形面、兩個五邊形面、十五條邊和十個頂點構成。點的連接順序如圖6.6-o所示。五棱柱的面和邊不能與其他的相交,且五棱柱必須是凸的。

HexagonalPrism:VTK_HEXAGONAL_PRISM,六角柱,三維的基本類型,由六個四邊形面、兩個六邊形面、十八條邊和十二個頂點構成。點的連接順序如圖6.6-p所示。六角柱的面和邊不能與其他的相交,且六角柱必須是凸的。

6.3.2 非線性單元

數值分析領域里,為了更準確、精確地表達數據,采用非線性單元作為數據的基本表達結構。線性單元和非線性單元的不同點是在繪制和數據處理方法方面,線性單元可以很容易的轉換成線性圖元被圖形庫處理,而非線性單元不被圖形庫直接支持,因此非線性單元必須先轉換成線性單元以后,才能被圖形庫所支持。

VTK除了提供一套復雜的非線性單元接口框架,另一種做法就是在非線性單元的每一條曲線增加一個關鍵點(如圖6.7所示),或者增加一個曲面來近似模擬非線性單元。可視化系統在處理非線性單元時,一種比較流行的做法就是細化(Tessellation)非線性單元,充分利用線性單元的可視化算法。但是細化的過程必須謹慎處理,否則會導致過分細分,造成過多的線性單元。

VTK在細化非線性單元時,采取如圖6.9所示固定的細化方式。一條二次曲線通過加入一個關鍵點,細化成兩點直線;一個二次三角形分別在三條邊上增加三個點,細化成四個線性三角形;一個二次四邊形分別在四條邊上增加四個點,細化成四個線性四邊形。也就是:在VTK里,二次曲線(QuadraticEdge)是一維的基本單元,由三個點定義,前兩個點定義了曲線的起點和終點,第三個點位于起點與終點的中間位置(參考圖6.7-a);二次三角形(QuadraticTriangle)是二維的基本單元,由六個點定義,前三個點位于三角形的頂點,后三個點位于每條曲線的中點位置;二次四邊形(QuadraticQuadrilateral)也是二維的基本單元,由八點定義,前兩個點位于四邊形的四個頂點處,后四個點位于每條邊的中點位置。其他類型的非線性單元可參考圖6.7。

圖6.9VTK細化非線性單元示意圖

==========歡迎轉載,轉載時請保留該聲明信息==========
版權歸@東靈工作室所有,更多信息請訪問東靈工作室

教程系列導航:http://blog.csdn.net/www_doling_net/article/details/8763686

總結

以上是生活随笔為你收集整理的6.3 单元类型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。