八叉樹學習

2021-10-22 05:40:11 字數 1578 閱讀 3503

參考**

八叉樹結構是由 hunter 博士於2023年首次提出的一種資料模型。八叉樹結構通過對三維空間的幾何實體進行體元剖分,每個體元具有相同的時間和空間複雜度,通過迴圈遞迴的劃分方法對三維空間的幾何物件進行剖分,從而構成乙個具有根節點的方向圖。在八叉樹結構中如果被劃分的體元具有相同的屬性,則該體元構成乙個葉節點;否則繼續對該體元剖分成8個子立方體,依次遞剖分,如下示意圖所示。

八叉樹是一種用於描述三維空間的樹狀資料結構。八叉樹的每個節點表示乙個正方體的體積元素,每個節點有八個葉子節點,這八個葉子節點所表示的體積元素加在一起就等於父節點的體積。一般中心點作為節點的分中心。八叉樹若不為空樹的話,樹中的任意節點的子節點恰好只會有八個或零個,子節點不會有0和8以外的數目。

八叉樹的葉子節點代表了解析度最高的情況。例如解析度設定為0.01m,那麼每個葉子就是乙個1cm的小方塊。

簡單來說,八叉樹的儲存結構可用於對應元素的查詢,依次對立方體進行劃分,尋找查詢元素對應的小立方體再次進行劃分查詢。

生成的八叉樹的節點可分為三類:

灰節點: 它對應的立方體部分的為查詢元素所佔據;

白節點: 它對應的立方體沒有查詢元素的內容;

黑節點: 它對應的立方體全部為查詢元素所佔據。

八叉樹有三種不同的存貯結構,分別是規則方式、線性方式以及一對八方式。相應的八叉樹也分別稱為規則八叉樹、線性八叉樹以及一對八式八叉樹。不同的存貯結構的空間利用率及運算操作的方便性是不同的。分析表明,一對八式八叉樹優點更多一些。

規則八叉樹的儲存結構用乙個有九個欄位的記錄來表示樹中的每個節點。其中乙個欄位來描述該節點的特性(再目前假定下,只要描述他是灰,白,黑三類節點中的哪一類就行。)其餘八個字段分別用來存放指向其八個子節點的指標。 這是最普遍使用的表示樹形結構的儲存結構的方式。

規則八叉樹缺陷較多,最大的問題是指標占用了大量的空間。假定每個指標要用兩個位元組表示,而結點的描述用乙個位元組,那麼存放指標要佔總的存貯量的94%。因此,這種方法雖然十分自然,容易掌握,但在存貯空間的使用率方面不很理想。

線性八叉樹注重考慮如何提高空間利用率。用某一預先確定的次序遍歷八叉樹(例如以深度第一的方式),將八叉樹轉換為乙個線性表,表的每個元素與乙個節點相對應。對於節點的描述可以相對豐富一點,一如可以用適當的方式來說明他是否是葉節點,如果不是葉節點的話,還可用其八個子節點值的平均值作為非葉節點的值。這樣,可以再記憶體中以緊湊的方式來表示線性表,可以不用指標或者僅用乙個指標即可。

線性八叉樹不僅節省儲存空間,對某些運算也較為方便。但為此的代價是喪失了一定的靈活性。

乙個非葉結點有八個子結點,為了確定起見,將它們分別標記為0,1,2,3,4,5,6,7。從上面的介紹可以看到,如果乙個記錄與乙個結點相對應,那麼在這個記錄中描述的是這個結點的八個子結點的特性值。而指標給出的則是該八個子結點所對應記錄的存放處,而且還隱含地假定了這些子結點記錄存放的次序。也就是說,即使某個記錄是不必要的(例如,該結點已是葉結點),那麼相應的存貯位置也必須空閒在那裡,以保證不會錯誤地訪問到其它同輩結點的記錄。這樣當然會有一定的浪費,除非它是完全的八叉樹,即所有的葉結點均在同一層次出現,而在該層次之上的所有層中的結點均為非葉結點。

1、2、

四叉樹與八叉樹

前序 四叉樹或四元樹也被稱為q樹 q tree 四叉樹廣泛應用於影象處理 空間資料索引 2d中的快速碰撞檢測 儲存稀疏資料等,而八叉樹 octree 主要應用於3d圖形處理。對遊戲程式設計,這會很有用。本文著重於對四叉樹與八叉樹的原理與結構的介紹,幫助您在腦海中建立四叉樹與八叉樹的基本思想。本文並不...

四叉樹與八叉樹

前序 四叉樹或四元樹也被稱為q樹 q tree 四叉樹廣泛應用於影象處理 空間資料索引 2d中的快速碰撞檢測 儲存稀疏資料等,而八叉樹 octree 主要應用於3d圖形處理。對遊戲程式設計,這會很有用。本文著重於對四叉樹與八叉樹的原理與結構的介紹,幫助您在腦海中建立四叉樹與八叉樹的基本思想。本文並不...

四叉樹與八叉樹

前序 四叉樹或四元樹也被稱為q樹 q tree 四叉樹廣泛應用於影象處理 空間資料索引 2d中的快速碰撞檢測 儲存稀疏資料等,而八叉樹 octree 主要應用於3d圖形處理。對遊戲程式設計,這會很有用。本文著重於對四叉樹與八叉樹的原理與結構的介紹,幫助您在腦海中建立四叉樹與八叉樹的基本思想。本文並不...