當前位置:首頁 » 操作系統 » 八叉樹演算法

八叉樹演算法

發布時間: 2022-05-28 09:50:58

Ⅰ  復雜曲面上使用單純形實現三維兩點射線追蹤

在GOCAD項目的框架中,已經提出用三角形來模擬極復雜地質界面。這種對三角形面片的選擇是基於任何曲面都可以分解成平面或曲線三角形這一事實而決定的,本節中將展示這種分解可以非常高效的用於解決兩點射線追蹤問題。射線路徑的確定基於費馬原理——對於給定的發射點、接收點和反射面,要使每條射線的旅行時最小。最小化過程使用曲面三角剖分的單純形方法迭代來實現。初始射線可以由試射演算法、射線偏移演算法或彎曲演算法來提供。此外,基於GOCAD軟體的幾何信息數據可以引入動力學信號,為此,用邊界曲面定義三維空間的均勻域,並且發展了一種基於有限狀態的自動化新演算法,用以確定三維空間中任何給定點的對應區域。

有些文獻(G.Farin,1988;J.L.Guiziou,A.Haas,1988)提出了幾種方法用於解決三維兩點射線追蹤問題。通常這些方法可以給出滿意的結果,但當存在復雜非規則地質體時,如正斷層、逆斷層、鹽丘等,它們的速度極慢並且往往不能適應這些不均勻體。

本節中,介紹一種基於GOCAD幾何數據結構的新方法。不同物性的交界面(層位)由數據插值得到的三角剖分曲面代表(簡寫作「T-surface」)。實際工作中,用兩步插值過程來構造T-surface:

(1)第一步插值由DSI方法(J.L.Mallet,1989,本書第三章)實現,其目的在於計算三角形頂點的位置使得T-surface與所有有效數據吻合。

(2)第二步插值由Bezier或Gregory方法(G.Farin,1988;J.A.Gregory,1980)實現,使得用平滑曲線三角形近似平面三角形。

與基於Bezier,樣條或Nurbs的經典方法相比,Gregory的方法允許考慮:

·當前所有有效的不均勻數據(測井數據,地震數據,斜尺數據);

·某些不精確的數據類型;

·復雜拓撲結構的層位,例如可以考慮一個與鹽丘相交的地層。

GOCAD項目的目的不僅在於提供一個有效的復雜地質界面建模工具,它還可以被用於與這些曲面有關的地球物理應用,如射線追蹤、偏移、層析……

5.2.1層位的幾何建模和地質意義

下面給出適合於射線追蹤的界面(層位)表示法要點。在GOCAD項目中,不同介質的交界面用由無序的三角形面元集合構成的界面圖形來表示。面元集合的節點為三角形頂點,節點位置由DSI演算法得到的。

假設所有層位都包含在一個代表研究區域D的平行面元體中。層{H1,H2,…,Hm}將D分割成一個子區域集合{D1,D2,…,Dm}對應於獨立的均勻介質,為了定義這些區域,我們將界面定向,也就是每層位有兩面(正面和負面)。使用GOCAD提供的圖形工具,這種定向可以通過交互的方法實現,這樣每個區域可以用一個有向界面的子集來定義。例如,一個區域Dj可以由一系列對應於其邊界層位的一些面

來定義。對於給定的三維點P,發展了一種基於有限狀態,能夠自動返回P所屬區域ID號的演算法。通過對區域的這種定義,可以很容易的定義介質連續性,而這對被穿過的一系列界面所定義的射線的特徵研究來說是非常重要的。

注意到,每個層位都至少分割兩種介質。對於我們感興趣彈性波傳播來說,一個介質平滑變化的區域可以用一個空間函數集合來描述,刻劃其彈性性質。下面假設每種介質速度為常數。這樣在每一區域內射線為一直線並且根據斯涅爾定理在界面處不連續的改變方向。

5.2.2射線追蹤問題

設ρ(E,R,Hr)為連接發射點E到接收點R並在層位Hr上反射的一條射線。假設ρ(E,R,Hr)為由對應於地質模型中ρ(E,R,Hr)與層位Hi的交點的n個接觸點Ii組成的多邊形線:

地質模型計算機輔助設計原理與應用

記σ(E,R,Hr)為對應射線與模型的接觸點Ii的(n個)層位Hi系列,稱為ρ(E,R,Hr)的「頁碼」:

地質模型計算機輔助設計原理與應用

根據ρ(E,R,Hr)的定義可知,Hr至少有一次包括於σ(E,R,Hr)中,並且在復雜的地質條件下,層位Hi可以幾次出現在σ(E,R,Hr)中。例如,鹽丘、透鏡體或逆斷層等。

對應於射線路徑ρ=ρ(E,R,Hr)的旅行時T(ρ)由下式定義:

地質模型計算機輔助設計原理與應用

這里Vi為射線在包含線段IiIi+1的地質區域Di中的速度,在被線段IiIi+1穿過區域Di(地層)中速度Vi是一常量,並且只要確定IiIi+1的中點所屬的區域Di就可以確定這一速度值。

可以看到,T(ρ)是點{I0,…,Ii,…,In}的函數,根據費馬原理當且僅當ρ(E,R,Hr)為真射線時,這些點對應於T(ρ)的一個局部極值。我們將應用這一性質來求取逼近一個給定初始近似值ρ0(E,R,Hr)的射線ρ(E,R,Hr)。

ρ(E,R,Hr)確定:設ρk(E,R,Hr)為在第k步時ρ(E,R,Hr)的一個近似值,並且讓σk(E,R,Hr)為其對應的「頁碼」:

地質模型計算機輔助設計原理與應用

如果ρk(E,R,Hr)的所有點除Iik外都是固定的,而Iik可以在相應的層位Hik上移動,那麼對應於ρk(E,R,Hr)的旅行時可這樣表示:

地質模型計算機輔助設計原理與應用

在第(k+1)步上,如果考慮費馬原理,可以移動位於Hik的點Iik

,並且使T(Iik|ρk)是最小的,這樣得到一個更好的近似值ρk+1=ρk+1(E,R,Hr)。由上一個近似值ρk(E,R,Hr)導出的射線ρk+1(E,R,Hr)有如下形式:

地質模型計算機輔助設計原理與應用

上面表達式中

的性質將在下節中精確描述。

動態頁碼。對比文獻(V.Peireyra,1988;J.L.Guiziou,A.Haas,1988)中提到的一般方法,這里提出的演算法允許「頁碼」σk(E,R,Hr)從第k步到第(k+1)步時改變。這種「頁碼」的變化由下面的規則來控制:

規則1。層位

一般來說是相同於Hik的,除非

位於Hik的邊界,對於最後一種情況建議在下面兩種描述中選取其中之一:

(1)如果

與另一曲面H的一個連接點,則讓

。換句話說,就是曲面

的改變。有賴於基於幾何數據的GOCAD結構,可以很容易實現這一點。

(2)如果

不是

與另一曲面H的連接點,那麼射線ρ(E,R,Hr)可能穿出了研究區域,這樣模型的寬度不足以確定它。在這種情況下,必須放棄ρ(E,R,Hr)的考慮。

規則2。如果新的射線ρk+1(E,R,Hr)與並沒有進入頁碼σk+1(E,R,Hr)的新的層位相交,則有必要在頁碼σk+1(E,R,Hr)中增加這些層位,並且在ρk+1(E,R,Hr)中增加相應的射線與模型的接觸點。為了確定這些新的接觸點和其對應的層位,需要測試Pk+1(E,R,Hr)中所有的線段Ii,k+1Ii+1,k+1與地質模型中所有層位的相交。這一操作是非常耗時的,這也是為什麼GOCAD資料庫允許使用基於八叉樹(octree)技術快速演算法的原因(J.L.Mallet,1990;Y.Huang 1990)。

規則3。可能發生這種情況,ρk+1(E,R,Hr)正切於屬於頁碼σk+1(E,R,Hr)但不是Hr的層位

。此時,存在不同於E和R的兩個射線與模型的接觸點Iα,k+1和Iβ,k+1,並有:

地質模型計算機輔助設計原理與應用

在這種情況下,建議:

·從ρk+1中去掉Iα,k+1和Iβ,k+1

·從σk+1中去掉Hα,k+1和Hβ,k+1

用單純形方法尋找

:

對於與初始頁碼σ0(E,R,Hr)相聯系的給定的一個初始近似射線路徑ρ0(E,R,Hr),用一種迭代演算法來確定射線路徑ρ(E,R,Hr),ρ0(E,R,Hr)的逼近值在演算法的每一步k中,Iik在Iik上被移動到對應於T(Iik|ρk)的最小值的點

上。這個最小值通過使用「單純形」演算法來確定,這種演算法基於用來定義T-surface的Hik的初始三角形的平滑曲線插值。

應用實例。在圖5.14中,給出了一個由上述方法獲得的射線追蹤的例子。可以看到地質情況是比較復雜的,特別是包括一個與給定地層相交的鹽丘。為了獲得較清晰的圖像,在圖中顯示了較少的射線。

圖5.14使GOCAD產生的幾何數據進行射線追蹤的例子(Philippe Nobil等,1990)

可以看到鹽丘切割了一個層面,層面位於鹽丘內部的部分被移動

基於Bezier或樣條插值的經典CAD軟體的目標是交互地模擬較好的曲面,而不能生成符合地質應用中遇到的復雜數據的曲面。因此,基於這些方法的軟體只能生成抽象的地質曲面,而不是與真實地質界面對應的曲面。與這些經典方法相反,在GOCAD項目開發的幾何工具允許模擬極復雜的地質體並且可以同時有效地考慮所有的數據。另外,這樣獲得的模型可以方便的用於開發地球物理應用程序。本節給出的射線追蹤演算法並不要求使用超級計算機,它可以在工作站上運行,這要歸功於GOCAD的幾何資料庫的結構。

Ⅱ 如何通過視覺SLAM構建得到的三維地圖進行機器人的路徑規劃

首先,我們還是需要確認一下,三維的路徑規劃需要哪些信息? 定位與地圖。 機器人家上了解到
首先, 利用視覺 SLAM 可以解決機器人的定位問題,剩下的就是怎麼將視覺地圖轉換成規劃使用的地圖了。 當然,對於規劃演算法,三維的點狀機器人,用 A* 還湊合,但是,如果是需要考慮姿態的無人機(六維),那麼可能就得考慮用基於采樣的方法或者軌跡優化類的演算法了。 而這類演算法,不太可能直接得到完整的 Configuration Space,所以涉及到環境(地圖)的就一個用途:碰撞檢測/計算與障礙物距離。 我們用 V-SLAM 建立的地圖可能長這樣: 理論上講,直接輸入這些障礙物的點就夠用了(計算每個點與機器人最近距離)。
但是,畢竟點很多呀,而且V-SLAM很可能計算到一些錯誤的點。所以,我們一般需要進行以下處理: (我就用機械臂上的來做例子,當然,我的點雲是從Kinect獲取的,但大概意思相同:機器之眼 | Kinect v2)
濾波:去掉一些離群點,PCL 庫就提供了幾種點雲濾波演算法。
濾波前: 濾波後: Octomap:在做規劃時,對障礙物的距離精度要求其實不是那麼高,所以,完全可以對點雲數據進行壓縮
降采樣是一個方法,但是採用八叉樹結構是更通用的方法:OctoMap - 3D occupancy mapping。 前面的圖中可以發現,我將機械臂規劃中的點雲也換成了Octomap,這樣,每次只需對Octomap中的小立方體與機械臂做碰撞檢測就行,大大降低了存儲數據量與碰撞檢測運算量。
Sematic Map: 就算轉換成了Octomap,小立方體還是很多呀,怎麼辦?這時候就可以對點雲進行一些處理了。例如,通過平面檢測,識別出地面、天花板等,直接用一個大的立方體替換掉Octomap的小方塊;或者通過物體識別演算法識別出環境中的物體,用物體的3D模型替換Octomap,這樣也可以大大減少碰撞檢測的計算量。

Ⅲ 已知點求與已知點集中的最近點的演算法

可以用四叉樹(二維)或者八叉樹(三維)來對點分組,把空間分塊,計算每塊的中心點坐標即為樹的中間結點,與其距離小於組半徑的即為其組內的葉節點。已知點所在的組可以根據要求再縮短半徑細分,直到點的數量達到要求。

八叉樹參考:http://en.wikipedia.org/wiki/Octree

Ⅳ 柵格數據的編碼方法

編碼方法
在柵格文件中,每個柵格只能賦予一個唯一的屬性值,所以屬性個數的總數是柵格文件的行數乘以列數的積,而為了保證精度,柵格單元分得一般都很小,這樣需要存儲的數據量就相當大了。通常一個柵格文件的柵格單元數以萬計。但許多柵格單元與相鄰的柵格單元都具有相同的值,因此使用了各式各樣的數據編碼技術與壓縮編碼技術。主要的編碼技術簡介如下:
(一)直接柵格編碼
直接柵格編碼是將柵格數據看作一個數據短陣,逐行或逐列逐個記錄代碼。可每行從左到右逐個記錄,也可奇數行從左到右,偶數行從右到左記錄,為特定目的也可採用其它特殊順序。通常稱這種編碼的圖像文件為柵格文件,這種網格文件直觀性強,但無法採用任何種壓縮編碼方法。圖2.1 (c)的柵格編碼為:4,4,4,4,7,7,7,7;4,4,4,4,4,7,7,7;4,4,4,4,9,9,7,7;0,0,4,9,9,9,7,7;0,0,0,9,9,9,7,7;0,0,0,9,9,9,9,9;0,0,0,0,9,9,9,9;0,0,0,0,0,9,9,9。可用程序設計語言按順序文件或隨機文件記錄這些數據。
(二)鏈式編碼
鏈式編碼又稱弗里曼鏈碼或世界鏈碼。它由某一原始點和一系列在基本方向上數字確定的單位矢量鏈。基本方向有東、東南、南、西南、西、西北、北、東北等8個,每個後繼點位於其前繼點可能的8個基本方位之一。8個基本方向的代碼可分別用0,1,2,3,4,5,6,7表示,既可按順時針也可按逆時針表示。柵格結構按逆時針編碼上圖(2)可記錄為:1,3,7,7,7,6,6,5,4。其中前兩個數字1與3表示線狀物起點的坐標,即在第一行第三列,從第三個數字起表示單位矢量的前進方向。
鏈式編碼有效地壓縮了柵格數據,尤其對多邊形的表示最為顯著,鏈式編碼還有一定的運算能力,對計算長度、面積或轉折方向的凸凹度更為方便。比較適於存儲圖形數據。但對邊界做合並和插入等修改編輯工作很難實施,而且對局部修改要改變整體結構,效率較低。
(三)遊程編碼
遊程編碼是柵格數據壓縮的重要且比較簡單的編碼方法。它的基本思路是:對於一幅柵格圖像,常有行或列方向相鄰的若干點具有相同的屬性代碼,因而可採用某種方法壓縮重復的記錄內容。方法之一是在柵格數據陣列的各行或列象元的特徵數據的代碼發生變化時,逐個記錄該代碼及相同代碼重復的個數,從而可在二維平面內實現數據的大量壓縮。另一種編碼方案是在逐行逐列記錄屬性代碼時,僅記錄下發生變化的位置和相應的代碼。圖2.1 (c)柵格結構按遊程編碼方法可記錄為:
第一行4,47,4
第二行4,57,3
第三行4,49,27,2
第四行0,24,19,37,2
第五行0,39,37,2
第六行0,39,5
第七行0,49,4
第八行0,59,3
在這個例子中,原本64個柵格數據,只用了40數值就完整地表示了出來,可見用遊程編碼方法壓縮數據是十分有效的。
遊程編碼的編碼和解碼的演算法都比較簡單,佔用的計算機資源少,遊程編碼還易於檢索、疊加、合並等操作,在柵格單元分得更細時,數據的相關性越強,壓縮效率更高,數據量並沒有明顯增加。因此,該編碼適合微型計算機等中央處理器處理速度慢,存儲容量小的設備進行圖像處理。
(四)塊式編碼
塊式編碼是遊程編碼擴展到二維空間的情況,遊程編碼是在一維狀態記錄柵格單元的位置和屬性,如果採用正方形區域作為記錄單元,每個記錄單元包括相鄰的若干柵格,數據結構由記錄單元中左上角的柵格單元的行、列號(初始位置)和記錄單元的邊長(半徑)與記錄單元的屬性代碼三部分組成,這便是塊式編碼。因此可以說,遊程編碼是塊式編碼的特殊情況,塊式編碼是遊程編碼的一般形式。圖2.1 (c)表示的柵格結構按塊式編碼方法可記錄為:
(1,1,3,4),(1,4,1,4),(1,5,1,7),(1,6,2,7),(1,8,1,7);
(2,4,1,4),(2,5,1,4),(2,8,1,7);
(3,4,1,4),(3,5,2,9),(3,7,2,7);
(4,1,2,0),(4,3,1,4),(4,4,1,9);
(5,3,1,0),(5,4,2,9),(5,6,1,9),(5,7,1,7),(5,8,1,7);
(6,1,3,0),(6,6,3,9);
(7,4,1,0),(7,5,1,9),
(8,4,1,0),(8,5,1,0)。
從以上論述的塊式編碼的編碼原理可知,一個記錄單元所表示的地理數據相關性越強,也即記錄單元包含的正方形邊長越長,壓縮效率越高。而地理數據相關性差時,也即多邊形邊界碎雜時,塊式編碼的效果較差。
塊式編碼的運算能力弱,必要時其編碼的柵格數據須通過解碼轉換成柵格矩陣編碼的數據形式才能順利進行。塊式編碼在圖像合並、插入、面積計算等功能方面較強。
(五)四叉樹數據結構
四叉樹編碼又名四元樹編碼,可以通俗理解為一個具有四分枝結構的樹,它具有柵格數據二維空間分布的特徵,這是一種更為有效的編碼方法。四叉樹編碼將整個圖形區域按照四個象限遞歸分割成2n×2n象元陣列,形成過程是:將一個2×2圖像分解成大小相等的四部分,每一部分又分解成大小相等的四部分,就這樣一直分解下去,一直分解到正方形的大小正好與象元的大小相等為止,即逐步分解為包含單一類型的方形區域(均值塊),最小的方形區域為一個柵格單元。這個倒向樹狀的圖中「○」表示可繼續分割的方形區域;「□」表示具有同類屬性的方形區域;「■」表示不能再分的單個(最小)象元柵格,即所謂的樹葉,樹葉表示的是具有單一類型的地物或是符合既定要求的少數幾種地物,可以在任意層上。
通過以上對四叉樹結構的分析,可發現它有以下特點:
⑴ 存儲空間小:因為記錄的基本單位是塊,不是象素點,因此大大地節省了存儲空間。
⑵ 運算速度快:因為四叉樹結構的圖形操作是在數上進行的,比直接在圖上運算要快得多。
⑶ 柵格陣列各部分的解析度可變:不需要表示許多細節的地方,分級較少,因而解析度低;邊界復雜的地方分級較多,解析度高,因而在減少數據量的基礎上滿足了數據精度。
⑷ 容易有效地計算多邊形的數量特徵。
⑸ 與柵格結構之間的轉換,比其它壓縮方法容易。
⑹ 四叉樹編碼表示多邊形中嵌套其它屬性的多邊形時比較方便:它允許多邊形嵌套多邊形的結構,是非常實用的、重要的特點,這點深深得到地理信息系統數據編碼設計者的青睞。
⑺ 四叉樹編碼的不足之處是:轉換具有不確定性,對大小相等形狀相同的多邊形,不同人可能分解為不同的四叉樹結構,因而不利於形狀分析和模式識別。四叉樹編碼處理結構單調的圖形區域比較適合,壓縮效果好,但對具有復雜結構的圖形區域,壓縮效率會受到很大影響。
(六)八叉樹與十六叉樹結構
前面的數據結構都是基於二維的,在相當多的情況下,如地下資源埋藏、地下溶洞的空間分布,二維的坐標體系根本無法表達。因此需要有三維數據結構,如果考慮空間目標隨時間變化,那還需要4維數據結構。較好的表達三維與四維結構是在四叉樹基礎上發展起來的八叉樹(三維)和十六叉樹(四維)。
是將空間區域不斷地劃分為八個同樣大小的子區域,
(七)各種編碼的比較分析
比較以上各種編碼,可得出如下主要結論:
⑴ 直接柵格編碼直觀簡單,但數據出現大量冗餘;
⑵ 鏈式編碼對邊界的運算方便,壓縮效果好,但區域運算較困難;
⑶ 遊程編碼即較大幅度地保留了原始柵格結構,又有較高的壓縮效率,而且編碼解碼也較容易,但僅局限在一維空間上處理數據;
⑷ 塊式編碼在圖像合並、插入、面積計算等功能方面較強,當所表示的地理數據相關性強時,壓縮效率相當高;但地理數據相關性差時,塊式編碼的效果較差,而且塊式編碼的運算能力較弱;
⑸ 四叉樹編碼運算速度快,存儲空間小,解析度可變,壓縮效率高,但其轉換具有不確定性,難以形成統一演算法。

Ⅳ blender柵格填充線很亂

使用blender中的重構網格修改器。
在blender中打開一個球體,切換到「線框」模式,我們發現布線比較亂,右邊屬性導航中選擇「修改器」,添加「重構網格」修改器,默認是模式是「銳利」,我們可以調節「八叉樹演算法」、「比例」等數值進行重構,切換到「平滑」模式,可以獲得更平滑的模型網格效果,要更平滑可以增加八叉樹演算法的值,相反的減小值,切換到「區塊」模式,可以把模型重構為區塊的效果,類似方塊組成的模型,就可以解決填充線很亂的現象了。

Ⅵ 基於體的建模方法

b體模型基於3D空間的體元分割和真3D實體表達,體元的屬性可以獨立描述和存儲,因而可以進行3D空間操作和分析。體元模型可以按體元的面數分為四面體(Tetrahedral)、六面體(Hexahedral)、稜柱體(Prismatic)和多面體(Polyhedral)等類型,也可以根據體元的規整性分為規則體元和不規則體元兩個大類。規則體元包括CSG、Voxel、Octree、Needle和Regular Block共5種模型。規則體元通常用於水體、污染和環境問題建模,其中Voxel、Octree模型是一種無采樣約束的面向場物質(如重力場、磁場)的連續空間的標准分割方法,Needle和Regular Block 可用於簡單地質建模。不規則體元包括TEN、Pyramid、TP、Geocelluar、Irregular Block、Solid、3D Voronoi和GTP共8種模型。不規則體元是有采樣約束的、基於地質地層界面和地質構造的面向實體的3D模型。

表2—1 3D空間建模方法分類

1.規則塊體(Regular Block)建模

塊體建模技術的研究和應用始於20世紀60年代初,是一種傳統的地質建模方法。20世紀60年代和70年代開發的一些地質體模擬系統採用這種建模技術,比較典型的有RTZ公司開發的OBMS和OPDP系統、Control Data公司的Mineval系統和Minetec公司的MEDS系統。這類建模技術是把要建模的空間分割成規則的3D立方網格,稱為Block,每個塊體在計算機中的存儲地址與其在自然礦床中的位置相對應,每個塊體被視為均質同性體,由克立格法、距離加權平均法或其他方法確定其品位或岩性參數值。該模型用於屬性漸變的3D空間(如浸染狀金屬礦體)建模很有效,對於有邊界約束的沉積地層、地質構造和開挖空間的建模則必須不斷降低單元尺寸,從而引起數據急速膨脹。解決方式是只在邊界區域進行局部的單元細化。

2.結構實體幾何(CSG)建模

首先預定義一些形狀規則的基本體元,如立方體、圓柱體、球體、圓錐及封閉樣條曲面等,這些體元之間可以進行幾何變換和布爾操作(並、交、差),由這些規則的基本體元通過操作來組合成一個物體。生成的3D物體可以用CSG樹表示。CSG建模在描述結構簡單的3D物體時十分有效,但對於復雜不規則3D地物尤其是地質體則很不方便,且效率大大降低。

3.3D體素(Voxel)建模

該模型的實質是2D Grid模型的3D擴展,即以一組規則尺寸的3D體素(a=b=c)來剖分所要模擬的空間。基於Voxel的建模法有一個顯著優點,就是在編製程序時可以採用隱含的定位技術,以節省存儲空間和運算時間。該模型雖然結構簡單,操作方便,但表達空間位置的幾何精度低,且不適合於表達和分析實體之間的空間關系。當然,通過縮小Voxel的尺寸,可以提高建模精度,但空間單元數目及儲量將呈三次方增長。

4.八叉樹(Octree)建模

類似於2D GIS中的四叉樹的柵格,Octree模型實質上是對Voxel模型的壓縮改進。該方法將3D空間區域分成8個象限,且在樹上的每個節點處存儲8個數據元素。當象限中所有體元的類型相同時(即為均質體),該類型值存入相應的節點數據元素中。非均質象限再進行象限細分,並由該節點中的相應數據元素指向樹中的下一個節點,如此細分直到每個節點所代表的區域都是均質體為止。Octree模型在醫學、生物學、機械學等領域已得到成功應用,但在礦床地質建模中有較大的局限性。基於八叉樹,肖樂斌等提出了四層矢量化八叉樹層次結構,邊馥苓等提出了面向目標的數據結構。

5.針體(Needle)建模

該模型的原理類似於結晶生長過程,用一組具有相同截面尺寸的不同長度或高度的針狀柱體對某一非規則3D空間、3D地物或地質體進行空間分割,用其集合來表達該目標空間、3D地物或地質體。

6.四面體格網(TEN)建模

該模型是在3D Delaunay三角化研究的基礎上提出的,是一個基於點的TEN的3D矢量數據模型。其基本思路是用互不相交的直線將3D空間中無重復的散亂點集兩兩連接形成三角面片,再由互不穿越的三角面片構成四面體格網。其中四面體(Tetrahedral)都是以空間散亂點為其頂點,且每個四面體內不含有點集中的任一點。TEN建模時,四面體內點的屬性可由插值函數得到,其中插值函數的參數由四個頂點的屬性決定,因此,經過四面體剖分插值後,可以得到空間的3D數據信息。TEN雖然可以描述實體內部,但不能表示3D連續曲面,而且用TEN來生成3D空間曲面也較為困難,演算法設計較復雜。

7.金字塔(Pyramid)模型

類似於TEN模型,只不過是用4個三角面片和1個四邊形封閉形成的金字塔狀模型來實現對空間數據場的剖分。由於其數據維護和模型更新困難,一般很少採用。

8.三稜柱(Tri—Prism,TP)建模

該模型是常用的簡單的D地學空間建模技術。張煜等給出了TP體元的定義,同時給出了相關切割和剖分演算法,列舉了基於該模型的數字地層模型的相關應用。由於TP模型的前提是三條棱邊相互平行,因而不能基於實際的偏斜鑽孔來構建真3D地質,也難以處理復雜地質構造。戴吾蛟等則以不規則TP為基本單元,討論了不規則TP網路模型(TPN)的數據結構、拓撲建立、拓撲檢查和空間插值問題,但在地學應用方面缺乏深入討論。

9.地質細胞(Geocellular)模型

其實質是Voxel模型的變種,即在xy平面上仍然是標準的Grid剖分,而在z方向則依據數據場類型或地層界面變化進行實際劃分,從而形成逼近實際界面的3D體元空間剖分。

10.不規則塊體(Irregular Block)建模

不規則塊體與規則塊體的區別在於規則塊體3個方向上的尺度(a、b、c)互不相等,但保持常數(如OBMS系統);而非規則塊體3個方向上的尺度(a、b、c)不僅互不相等,且不為常數。非規則塊體建模法的優勢是可以根據地層空間界面的實際變化進行模擬,因而可以提高空間建模的精度。

11.實體(Solid)建模

實體建模法是在20世紀80年代發展起來的一種建模方法,最初是採用多邊形網格(線框模型)描述地質體的幾何邊界,而用傳統的塊段模型描述地質體內部的品位或質量的分布。實體建模技術經過後來的發展已經比較成熟,其典型代表是加拿大Lynx系統中提供的實體建模技術。該技術以地質體在三個平行剖面上的邊界線及其連線構建元件(Component)來建模。元件不僅表示一個封閉的體,也表示體內的屬性。一個簡單地質體就由這樣的一系列元件所構成。地質體內部的屬性變化仍然用傳統的塊段模型來模擬。在用傳統的塊段模型來模擬地質體內部的屬性變化時,一般要以地質體的邊界作為約束,這就涉及由線框模型或體元模型來生成地質體的三維柵格模型的問題,在現有的商品化軟體中,這一問題已經得到解決。實體建模方法的主要優點是:①用剖面來建模不但符合地質工作的方式,而且可使建模者對現有資料進行解釋和推斷;②不但可以精確地表達各種不規則地質體的幾何形態,而且可以描述地質體的屬性;③地質體幾何模型容易修改;④這種建模方法也適用於採掘工程邊界的表達。其主要不足是:①缺乏對各種不同復雜程度地質體之間及地質體幾何元素之間必要的拓撲關系的描述,從而使相鄰地質體的邊界不得不重復數字化,地質界線、地質界面和地質體的查詢以及地質對象的拓撲空間分析無法進行。②人工交互工作量巨大。

侯恩科針對該模型的不足,進行了深入研究,並根據面向對象方法的特點、計算機地質建模的特殊要求和地質體幾何形態的不規則性以及產狀的多樣性特點,提出了一種新的面向對象的不規則體元數據模型。將地質對象抽象為點、線、面、體四大類,將地質體分為復合體、復雜體、簡單體和體元四種對象類型。體元是構成地質體的基本體素,它可以在局部坐標系中定義,並由點、弧段、連接線、體元剖面多邊形(包括前、中、後3個剖面多邊形邊界)和體元面五種基本對象類來描述。各對象類型之間的空間關系可由12種拓撲關系來描述。以這12種拓撲關系為基礎,定義了不規則體元數據模型的數據結構。

12.3D Voronoi圖模型

3D Voronoi圖是2D Voronoi圖的3D擴展。其實質是基於一組離散采樣點,在約束空間內形成一組面—面相鄰而互不交叉(重疊)的多面體,用該組多面體完成對目標空間的無縫分割。該模型最早起源於計算機圖形學領域,近年,人們開始研究其在地學領域中的可行性,試圖在海洋、污染、水體及金屬礦體建模方面得到應用。

13.廣義三稜柱(GTP)建模

針對地質鑽孔尤其是深鑽偏斜的特點,吳立新等提出一種可以不受三稜柱棱邊平行即(鑽孔垂直)限制的ATP(Analogical Tri—Prism)建模方法,後發展為廣義三稜柱建模(Generalized Tri—Prism,GTP),並將TP建模稱為其特例。而且,基於TIN邊退化和TIN面退化,可以由GTP導出Pyramid模型和TEN模型。GTP建模原理是:用GTP的上下底面的三角形集合所組成的TIN面來表達不同的地層面,然後利用GTP側面的空間四邊形面來描述層面間的空間關系,用GTP柱體來表達層與層之間內部實體。其特點是充分結合鑽孔數據,利用鑽孔數據的不同分層來模擬地層的分層實體並表達地層面的形態。基於點、TIN邊、側邊、TIN面、側面和GTP定義了8組拓撲關系,據此可以方便地實現空間鄰接和空間鄰近查詢與分析。而且,GTP數據結構易於擴充,當有新的鑽孔數據加入時,只需在局部修改TIN的生成以及在局部修改GTP的生成,而不需改變整個體的結構,這樣使得GTP的局部細化與動態維護很方便。

Ⅶ 誰能介紹一下游戲場景管理中的四叉樹、八叉樹演算法是怎麼回事,比如最基本的,怎麼確定顯示節點

明白二叉樹就明白n叉樹了

熱點內容
換編程題庫 發布:2024-05-18 18:00:58 瀏覽:561
如何使用伺服器ip直連網站 發布:2024-05-18 18:00:49 瀏覽:431
三星n7100哪個安卓版本好用 發布:2024-05-18 17:55:41 瀏覽:489
萬國覺醒採集腳本源碼 發布:2024-05-18 17:55:39 瀏覽:946
sqlserver加欄位 發布:2024-05-18 17:54:53 瀏覽:927
安卓手機如何清除應用記錄 發布:2024-05-18 17:31:37 瀏覽:639
查看存儲過程許可權 發布:2024-05-18 17:18:33 瀏覽:191
php類self 發布:2024-05-18 17:15:03 瀏覽:894
手機2b2t的伺服器地址是多少 發布:2024-05-18 17:14:56 瀏覽:188
戴爾8490哪個配置比較合理 發布:2024-05-18 17:14:51 瀏覽:168