国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C#幾何算法:空間索引——Quadtree四叉樹(shù)及應(yīng)用(一)

這篇具有很好參考價(jià)值的文章主要介紹了C#幾何算法:空間索引——Quadtree四叉樹(shù)及應(yīng)用(一)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

前言

什么是四叉樹(shù)?

四叉樹(shù)的原理

結(jié)語(yǔ)


前言

????????最近在CAD中開(kāi)發(fā)拓?fù)錂z查和空間分析功能時(shí)發(fā)現(xiàn),傳統(tǒng)的雙層遞歸法會(huì)極大的降低程序運(yùn)行速度,就比如:圖上有1000個(gè)圖形,我們要求圖形之間的交點(diǎn),傳統(tǒng)的作法就是遍歷兩次圖形,在兩次循環(huán)中分別對(duì)圖形求交處理,對(duì)于圖形較少的情況,傳統(tǒng)的雙層遞歸法也不會(huì)太多的影響程序的效率,但是如果圖上有10000個(gè)圖形,或者更多圖形呢?按照傳統(tǒng)的雙層遞歸法來(lái)運(yùn)算顯然是不太可能的,可能會(huì)直接導(dǎo)致CAD無(wú)響應(yīng),大幅度影響計(jì)算效率。為了解決這個(gè)問(wèn)題,針對(duì)大量圖形進(jìn)行空間運(yùn)算的時(shí)候就必須用到空間索引了。

? ? ? ? 我們用過(guò)GIS軟件的小伙伴就能感受到GIS的空間分析功能遠(yuǎn)比CAD強(qiáng)大,最直觀的就是GIS軟件的運(yùn)算速度,很多小伙伴就很好奇為什么它會(huì)這么快,正是因?yàn)樗械腉IS軟件都使用了空間索引,常見(jiàn)的空間索引有很多,比較成熟的有:Rtree、Kdtree、Quadtree等,我們今天要講的就是Quadtree,中文名稱(chēng)叫:四叉樹(shù)。

什么是四叉樹(shù)?

? ? ? ? 本文中使用的編程語(yǔ)言為C#,C#為面向?qū)ο笳Z(yǔ)言,我們開(kāi)始寫(xiě)代碼之前一定得搞懂對(duì)象的定義,我們要寫(xiě)四叉樹(shù),首先得明白四叉樹(shù)是什么,首先我們來(lái)看看四叉樹(shù)的理論模型圖(圖片源自知乎):

四叉樹(shù),算法

????????是不是看不太懂?沒(méi)關(guān)系,筆者最開(kāi)始也是看不懂這套模型圖,相對(duì)于網(wǎng)上晦澀難懂的解釋?zhuān)瑢?duì)于大多數(shù)新手朋友來(lái)說(shuō)都是不太友好的,筆者在此將會(huì)以自己的理解跟大家進(jìn)行一個(gè)解讀。

四叉樹(shù)的原理

????????首四叉樹(shù)的原理就是將圖形區(qū)域的最大矩形范圍(根節(jié)點(diǎn))不斷向下四等分,矩形每劃分一次就形成四個(gè)新的矩形范圍(子節(jié)點(diǎn),直到滿足設(shè)定條件為止就停止劃分,最終形成成無(wú)數(shù)個(gè)矩形區(qū)域,如下圖:

? ? ? ? 第一步,首先確定出目標(biāo)區(qū)域的最大矩形范圍(根節(jié)點(diǎn)):

四叉樹(shù),算法

?????????第二步,由最大矩形區(qū)域不斷向下四等分,形成每一層的子節(jié)點(diǎn)

四叉樹(shù),算法

四叉樹(shù),算法

????????筆者在這里一共劃分了三次,每次劃分形成了一層子節(jié)點(diǎn)(多個(gè)矩形區(qū)域),那么這個(gè)矩形區(qū)域劃分出來(lái)到底有什么作用呢?

? ? ? ? 矩形區(qū)域的作用就是將龐大的空間范圍進(jìn)行劃分,四叉樹(shù)檢索圖形其實(shí)就是檢索矩形區(qū)域對(duì)應(yīng)的圖形,什么意思呢?如下圖所示:

四叉樹(shù),算法

????????從實(shí)例出發(fā),如上圖所示,圖中一共有四個(gè)矩形,六個(gè)圖形,那么矩形和圖形是什么關(guān)系呢?

? ? ? ? 首先我們要判斷每個(gè)圖形的外包矩形(上圖中的青色部分)和四個(gè)矩形區(qū)域相交關(guān)系確定每個(gè)區(qū)域所包含的圖形,上圖的相交與包含關(guān)系圖下:

相交關(guān)系:

  • ? ? ? ? 圖形1外包矩形矩形一相交,所以矩形一包含圖形1
  • ????????圖形2外包矩形矩形一相交,所以矩形一包含圖形2
  • ????????圖形3外包矩形矩形一相交,所以矩形一包含圖形3
  • ????????圖形4外包矩形矩形一、矩形二、矩形三、矩形四相交,所以矩形一、矩形二、矩形三、矩形四同時(shí)包含圖形4
  • ????????圖形5外包矩形矩形四相交,所以矩形五包含圖形5
  • ?? ? ? ?圖形6外包矩形矩形三相交,所以矩形三包含圖形6

包含關(guān)系:

  • ????????矩形一包含:圖形1、圖形2、圖形3、圖形4
  • ????????矩形二包含:圖形4
  • ????????矩形三包含:圖形4、圖形6
  • ????????矩形四包含:圖形4、圖形5

? ? ? ? 確定好相交與包含關(guān)系之后,我們就可以進(jìn)行范圍搜索了,還是以上圖為例,我們以圖形1的外包矩形進(jìn)行搜索:

????????首先判斷圖形1四個(gè)矩形區(qū)域的相交關(guān)系,得出圖形1僅與矩形一相交?,然后根據(jù)上一步的包含關(guān)系即可以拿到圖形1所在區(qū)域所包含的所有圖形:圖形1、圖形2、圖形3圖形4,通過(guò)這樣的方式進(jìn)行檢索,我們的圖形運(yùn)算就可以按照區(qū)域進(jìn)行,無(wú)需再全圖雙層遞歸對(duì)比了。

? ? ? ? 四叉樹(shù)的工作原理就是將指定的圖形范圍進(jìn)行劃分,每次劃分判斷圖形外包矩形子節(jié)點(diǎn)的關(guān)系,從而形成一個(gè)位置關(guān)系樹(shù)結(jié)構(gòu),后期直接通過(guò)給定的矩形范圍逐節(jié)點(diǎn)進(jìn)行判斷指定的矩形范圍屬于哪個(gè)矩形分區(qū),最后拿出對(duì)應(yīng)矩形分區(qū)所對(duì)應(yīng)的圖形即可。

結(jié)語(yǔ)

????????本章內(nèi)容咱們先理解四叉樹(shù)的原理,下一章我們?cè)僭敿?xì)的教學(xué)如何用C#代碼去編寫(xiě)一個(gè)四叉樹(shù)并進(jìn)行應(yīng)用。如對(duì)本章內(nèi)容有任何疑問(wèn)可掃描下方二維碼,聯(lián)系作者微信。

?

? ? ? ??

?

?

?

? ? ?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-740729.html

到了這里,關(guān)于C#幾何算法:空間索引——Quadtree四叉樹(shù)及應(yīng)用(一)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【樹(shù)】從二叉樹(shù)到空間索引樹(shù)

    【樹(shù)】從二叉樹(shù)到空間索引樹(shù)

    這里主要介紹滿二叉樹(shù)、完全二叉樹(shù)、二叉搜索樹(shù)、平衡二叉樹(shù)、紅黑樹(shù)等。首先通過(guò)形象圖來(lái)記錄一下這幾種二叉樹(shù)之間的圖形關(guān)系,隨后再談?wù)勥@些樹(shù)的注意事項(xiàng)。 滿二叉樹(shù) 滿二叉樹(shù)是一個(gè)每層的結(jié)點(diǎn)數(shù)都達(dá)到最大值的二叉樹(shù),其定義和樹(shù)型結(jié)構(gòu)如下: 如果一個(gè)二叉樹(shù)

    2023年04月09日
    瀏覽(9)
  • 數(shù)據(jù)結(jié)構(gòu)——四叉樹(shù)

    數(shù)據(jù)結(jié)構(gòu)——四叉樹(shù)

    四叉樹(shù)(Quadtree)是一種用于表示和管理二維空間的樹(shù)狀數(shù)據(jù)結(jié)構(gòu)。它將二維空間遞歸地分割成四個(gè)象限,每個(gè)象限可以繼續(xù)分割,以實(shí)現(xiàn)對(duì)空間的更精細(xì)的劃分。四叉樹(shù)通常用于解決空間搜索和查詢問(wèn)題,例如碰撞檢測(cè)、圖像壓縮、地理信息系統(tǒng)等領(lǐng)域。 特別適合大規(guī)模的

    2024年02月07日
    瀏覽(15)
  • Unity四叉樹(shù)地圖

    Unity四叉樹(shù)地圖

    ????????當(dāng)使用Unity構(gòu)建大規(guī)模的游戲地圖或場(chǎng)景時(shí),使用四叉樹(shù)數(shù)據(jù)結(jié)構(gòu)可以提高性能和效率。四叉樹(shù)是一種基于分割的數(shù)據(jù)結(jié)構(gòu),將空間劃分為四個(gè)相等的子區(qū)域,并以遞歸方式構(gòu)建樹(shù)結(jié)構(gòu)。在游戲開(kāi)發(fā)中,四叉樹(shù)常用于空間分區(qū)、碰撞檢測(cè)和可視化剔除等方面。 ?

    2024年02月07日
    瀏覽(17)
  • 數(shù)據(jù)結(jié)構(gòu):二叉樹(shù)及相關(guān)操作

    數(shù)據(jù)結(jié)構(gòu):二叉樹(shù)及相關(guān)操作

    在實(shí)現(xiàn)二叉樹(shù)前,我們要先對(duì)樹(shù)產(chǎn)生一些基本的認(rèn)識(shí),才可以去實(shí)現(xiàn)它。樹(shù)的用途非常廣泛,向文件系統(tǒng)的目錄樹(shù)結(jié)構(gòu)等。 樹(shù)是一種 非線性的數(shù)據(jù)結(jié)構(gòu) ,它是由n(n=0)個(gè)有限結(jié)點(diǎn)組成一個(gè)具有層次關(guān)系的集合。 有一個(gè)特殊的結(jié)點(diǎn),稱(chēng)為根結(jié)點(diǎn),根節(jié)點(diǎn)沒(méi)有前驅(qū)結(jié)點(diǎn)。 除根

    2024年02月11日
    瀏覽(17)
  • unity四叉樹(shù)和視錐體剔除

    unity四叉樹(shù)和視錐體剔除

    這個(gè)最好還是看代碼,項(xiàng)目有注釋放在這里: GetbadEarlyup/Quadtree-cone-scene: 這是一個(gè)unity四叉樹(shù)場(chǎng)景視錐體剔除的Demo (github.com) https://github.com/GetbadEarlyup/Quadtree-cone-scene 國(guó)內(nèi)地址: Quadtree-cone-scene: unity四叉樹(shù)和視錐體剔除的一個(gè)示例項(xiàng)目 (gitee.com) https://gitee.com/dontgetupearly/Quadtre

    2024年02月08日
    瀏覽(18)
  • 【數(shù)據(jù)結(jié)構(gòu)】樹(shù)及二叉樹(shù)的概念

    【數(shù)據(jù)結(jié)構(gòu)】樹(shù)及二叉樹(shù)的概念

    ?? 作者:日出等日落 ?? 專(zhuān)欄:數(shù)據(jù)結(jié)構(gòu) 一次失敗,只是證明我們成功的決心還夠堅(jiān)強(qiáng)。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ——博 維 目錄 ???樹(shù)概念及結(jié)構(gòu): ?樹(shù)的概念: ?樹(shù)的相關(guān)概念?:?編輯 ??樹(shù)的表示: ?樹(shù)在實(shí)際中的運(yùn)用: ??二叉樹(shù)概念及結(jié)構(gòu) ?概念

    2023年04月23日
    瀏覽(26)
  • DS:樹(shù)及二叉樹(shù)的相關(guān)概念

    DS:樹(shù)及二叉樹(shù)的相關(guān)概念

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?創(chuàng)作不易,兄弟們來(lái)波三連吧??!? ? ? ? ? ? 樹(shù)是一種非線性的數(shù)據(jù)結(jié)構(gòu),它是由n(n=0)個(gè)有限結(jié)點(diǎn)組成一個(gè)具有層次關(guān)系的集合。把它叫做樹(shù)是因?yàn)樗雌饋?lái)像一棵倒掛的樹(shù),也就是說(shuō)它是根朝上,而葉朝下的。

    2024年03月13日
    瀏覽(17)
  • cocos creator 四叉樹(shù)碰撞系統(tǒng)Demo

    cocos creator 四叉樹(shù)碰撞系統(tǒng)Demo

    先掛上demo鏈接,目前測(cè)試的是2000個(gè)節(jié)點(diǎn)的碰撞 Cocos Creator | QuadTree (myqcloud.com) 檢測(cè)的節(jié)點(diǎn)越多,優(yōu)化效果越明顯。 優(yōu)化的原理大致就是將屏幕劃分成一個(gè)個(gè)小區(qū)域,每個(gè)小區(qū)域保存著這個(gè)小區(qū)域的碰撞節(jié)點(diǎn),只檢測(cè)這個(gè)小區(qū)域里面的節(jié)點(diǎn)碰撞,不在同一區(qū)域內(nèi)不進(jìn)行檢測(cè),

    2023年04月11日
    瀏覽(21)
  • 四叉樹(shù)圖像模糊(C代碼及實(shí)現(xiàn)思路)

    四叉樹(shù)圖像模糊(C代碼及實(shí)現(xiàn)思路)

    原創(chuàng)文章,參考文章見(jiàn)末尾,僅供學(xué)習(xí)交流使用,如果對(duì)你有幫助,請(qǐng)一鍵三連~ 代碼如有需要會(huì)整理上傳~ 能夠正確的對(duì)圖像建立四叉樹(shù); 對(duì)于輸入的圖像,四叉樹(shù)能夠輸出模糊的結(jié)果 對(duì)顏色相近的區(qū)域進(jìn)行模糊 背景知識(shí)理解 PPM文件格式理解 PPM 是通過(guò)RGB三種顏色顯現(xiàn)的圖

    2024年02月02日
    瀏覽(21)
  • 鏈?zhǔn)蕉鏄?shù)及相關(guān)操作(前,中,后,層序遍歷)

    鏈?zhǔn)蕉鏄?shù)及相關(guān)操作(前,中,后,層序遍歷)

    歡迎來(lái)到 Claffic 的博客 ??????? “春來(lái)無(wú)事,只為花忙?!?前言: 上一期給大家介紹了二叉樹(shù)的一種順序結(jié)構(gòu):堆,這一期承接上一期,給大家繼續(xù)介紹二叉樹(shù)的另一種結(jié)構(gòu):鏈?zhǔn)浇Y(jié)構(gòu)。 目錄 ??Part1:鏈?zhǔn)蕉鏄?shù)?? 1.前情提要? 2.創(chuàng)建一顆二叉樹(shù) ??Part2:相關(guān)操作實(shí)現(xiàn) 1

    2023年04月16日
    瀏覽(12)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包