• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            牽著老婆滿街逛

            嚴以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            八叉樹三維數據結構

            §2.5 三維數據結構

            一、八叉樹三維數據結構

            (一)基本原理

                用八叉樹來表示三維形體,并研究在這種表示下的各種操作及應用是在進入80年代后才比較全面地開展起來的。這種方法,既可以看成是四叉樹方法在三維空間的推廣,也可以認為是用三維體素陣列表示形體方法的一種改進。

                八叉樹的邏輯結構如下:

                假設要表示的形體V可以放在一個充分大的正方體C內,C的邊長為2n,形體VC,它的八叉樹可以用以下的遞歸方法來定義:

                八叉樹的每個節點與C的一個子立方體對應,樹根與C本身相對應,如果V=C,那么V的八叉樹僅有樹根,如果V≠C,則將C等分為八個子立方體,每個子立方體與樹根的一個子節點相對應。只要某個子立方體不是完全空白或完全為V所占據,就要被八等分(圖2-5-1),從而對應的節點也就有了八個子節點。這樣的遞歸判斷、分割一直要進行到節點所對應的立方體或是完全空白,或是完全為V占據,或是其大小已是預先定義的體素大小,并且對它與V之交作一定的“舍入”,使體素或認為是空白的,或認為是V占據的。

                如此所生成的八叉樹上的節點可分為三類:

                灰節點,它對應的立方體部分地為V所占據;

                白節點,它所對應的立方體中無V的內容;

                黑節點,它所對應的立方體全為V所占據。

                后兩類又稱為葉結點。形體V關于C的八叉樹的邏輯結構是這樣的:它是一顆樹,其上的節點要么是葉節點,要么就是有八個子節點的灰節點。根節點與C相對應,其它節點與C的某個子立方體相對應。

                因為八叉樹的結構與四叉樹的結構是如此的相似,所以八叉樹的存貯結構方式可以完全沿用四叉樹的有關方法。因而,根據不同的存貯方式,八叉樹也可以分別稱為常規的、線性的、一對八的八叉樹等等。

                另外,由于這種方法充分利用了形體在空上的相關性,因此,一般來說,它所占用的存貯空間要比三維體素陣列的少。但是實際上它還是使用了相當多的存貯,這并不是八叉樹的主要優點。這一方法的主要優點在于可以非常方便地實現有廣泛用途的集合運算(例如可以求兩個物體的并、交、差等運算),而這些恰是其它表示方法比較難以處理或者需要耗費許多計算資源的地方。不僅如此,由于這種方法的有序性及分層性,因而對顯示精度和速度的平衡、隱線和隱面的消除等,帶來了很大的方便,特別有用。

            (二)八叉樹的存貯結構

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

            1、規則八叉樹

                規則八叉樹的存貯結構用一個有九個字段的記錄來表示樹中的每個結點。其中一個字段用來描述該結點的特性(在目前假定下,只要描述它是灰、白、黑三類結點中哪一類即可),其余的八個字段用來作為存放指向其八個子結點的指針。這是最普遍使用的表示樹形數據的存貯結構方式。

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

            2、線性八叉樹

                線性八叉樹注重考慮如何提高空間利用率。用某一預先確定的次序遍歷八叉樹(例如以深度第一的方式),將八叉樹轉換成一個線性表(圖2-5-2),表的每個元素與一個結點相對應。對于結點的描述可以豐富一點,例如用適當的方式來說明它是否為葉結點,如果不是葉結點時還可用其八個子結點值的平均值作為非葉結點的值等等。這樣,可以在內存中以緊湊的方式來表示線性表,可以不用指針或者僅用一個指針表示即可。

                線性八叉樹不僅節省存貯空間,對某些運算也較為方便。但是為此付出的代價是喪失了一定的靈活性。例如為了存取屬于原圖形右下角的子圖形對應的結點,那么必須先遍歷了其余七個子圖形對應的所有結點后才能進行;不能方便地以其它遍歷方式對樹的結點進行存取,導致了許多與此相關的運算效率變低。因此盡管不少文章討論了這種八叉樹的應用,但是仍很難令人滿意。

            3、一對八式的八叉樹

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

                為了克服這種缺陷,有兩條途徑可以采納。一是增加計算量,在記錄中增加一定的信息,使計算工作適當減少或者更方便。

            posted on 2007-06-22 18:36 楊粼波 閱讀(1522) 評論(0)  編輯 收藏 引用

            久久精品国产亚洲AV不卡| 欧美一级久久久久久久大| 亚洲精品国产字幕久久不卡| 精品伊人久久大线蕉色首页| 久久久精品人妻一区二区三区四| 久久久久国产精品熟女影院| 国产精品免费久久久久久久久 | 精品久久久久久无码中文字幕一区| 99久久精品午夜一区二区 | 一本色道久久综合| 少妇精品久久久一区二区三区| 国产精品一久久香蕉国产线看观看 | 国产精品久久久久a影院| 久久国产精品无码HDAV| 麻豆国内精品久久久久久| 亚洲av成人无码久久精品 | 久久精品视频一| 免费精品99久久国产综合精品| 久久国产亚洲精品| 一本大道久久a久久精品综合| 亚洲一级Av无码毛片久久精品| 久久亚洲国产精品一区二区| 久久丫忘忧草产品| 看全色黄大色大片免费久久久| 久久久久久a亚洲欧洲aⅴ| 亚洲日韩中文无码久久| 久久一区二区三区免费| 韩国无遮挡三级久久| 人人狠狠综合久久88成人| 久久久久亚洲AV成人网人人网站 | 久久亚洲精品中文字幕| 久久久久免费精品国产| 久久国产成人精品国产成人亚洲| 国产精品久久午夜夜伦鲁鲁| 7777久久久国产精品消防器材| 一级做a爰片久久毛片看看| 久久久久人妻一区精品| 99久久免费国产精品| 国产成人久久精品区一区二区| 久久精品国产日本波多野结衣| 国产69精品久久久久99|