半邊數據結構(轉載)

 

 

實體的B-rep表示模型是一非常複雜的模型,要求能夠表達出多面體各幾何元素之間完整的幾何和拓撲關係,並且允許對這種幾何和拓撲關係進行修改.B-rep表示中,體、面、邊和頂點是最基本的幾何元素,在實體的拼合、顯示、分析計算或人機交互過程中,對基本幾何元素的下列操作是必不可少的:

.增加或刪除體、面、邊或頂點;
  .已知一個體,查找它的所有面、所有邊或所有頂點;
  .已知一個面或一個邊,查找它所屬於的體;
  .已知一個面,順序查找圍成它所有邊;
  .已知一個邊,查找交於該邊的所有面,或着查找該邊的鄰邊,或者查找該邊的兩個端點;
  .已知一個頂點,查找交於該頂點的所有邊或所有面.

以上這些基本操作的效率直接影響着整個實體造型系統的效率。一個B-rep數據結構應當方便、迅速地實現幾何元素的這些查詢或增刪操作.爲了查詢或操作方便,必須建立各幾何元素間的拓撲關係,且引入其它輔助元素,例如在許多B-rep數據結構中具有環結點,用來表示面的內、外封閉邊界.在B-rep的數據結構設計時,除了需要考慮時間的因素外,還要考慮空間的因素,即模型所佔計算機內存的大小,但往往這兩方面是互相矛盾的.要想各個幾何元素之間查詢迅速,必然要在它們之間建立廣泛的聯繫,這樣必然增加存儲空間的佔用量.反過來也是如此,而半邊數據結構就很好的權衡了空間和時間的問題。

在構成多面體的三要素(點、邊、面)中,半邊數據結構仍以邊爲核心,但爲了方便表達拓撲關係,它將一條邊表示成拓撲意義上方向相反的兩條半邊,所以稱爲半邊數據結構,其結構入圖:

       邊

半邊數據結構共包含六個結點:體、面、環、邊、半邊和頂點.半邊是一連接兩個頂點並具有一固定方向的線段.一系列首尾相連的半邊形成一個環.半邊的關係是一個邊包含兩個相反方向的半邊,由這兩個半邊可以查詢交於這個邊的兩個面。半邊的含義如上圖所示.半邊數據結構的優點是幾何元素之間的互相查詢非常方便,不足之處是由於結點多佔用空間較大。

半邊數據結構的六個結點在C語言中被表達成結構”.結點之間通過結構指針互相聯繫.這些結點描述如下:

頂點結點:頂點結點是半邊數據結構中最底層的結點,實體的幾何位置和尺寸最終都由頂點結點來定義.所以,頂點結點必須包含頂點的空間三維座標值
        半邊結點:半邊結點包含指向前趨半邊和後繼半邊的兩個指針.這兩個指針形成了一個環內半邊的雙向鏈表.半邊結點還包含半邊所屬於的環的指針,以及半邊起始頂點的指針.
  .     邊結點:邊結點包含左右兩個半邊的指針,通過這兩個指針可以查找該邊的兩個端點以及交於該邊的兩個面.指向前趨邊和後繼邊的兩個指針實現一個實體內邊的雙向鏈表.
        環結點:因爲一個環包含一系列的首尾相接的半邊,故環結點是一個指向這些半邊其中之一的指針,通過該指針可以查找構成該環的所有半邊.環結點還包含指向前趨和後繼環的兩個指針,用以實現一個面內環的雙向鏈表.另外,環結點還包含指向環所在面的指針.
        面結點:因爲面是由若干個環圍成的內部連通的平面多邊形,所以,面結點包含一個環的首指針,用來查找圍成它的所有環.因爲外環只有一個,爲了區分內環和外環,面結點中包含指向它的外環的指針.面的前趨指針和後繼指針形成一個實體內面的雙向鏈表.面結點中還包含指向它所屬於的體的指針,用來查詢面所屬於的實體.面所在平面的方程也是定義完整實體的重要內容,所以,面結點中包含一個四個浮點數的數組,表示其平面方程.
        體結點:在半邊數據結構中,體結點是各種引用的根結點.從體結點出發,可以搜索任何其它的結點.所以,體結點,包含面、邊和頂點的首指針.體結點之間也是通過前趨指針和後繼指針形成的雙向鏈表來連接。

結構

從圖中可以看出,許多幾何元素可以有不同的搜索路徑,例如查找實體上的頂點可以有兩個路徑:一是體半邊頂點;二是體頂點第二個路徑比第一個路徑要簡捷得多,用來進行實體的平移等整體操作;第一個路徑一般用作局部查找。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章