亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種地圖尋路方法及系統(tǒng)的制作方法

文檔序號(hào):6460168閱讀:277來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):一種地圖尋路方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及地圖尋路技術(shù),特別是指一種基于導(dǎo)航格的地圖尋路方法及系統(tǒng)。

背景技術(shù)
隨著網(wǎng)絡(luò)游戲的不斷發(fā)展,在基于三維(3D)場(chǎng)景的游戲中,經(jīng)常需要實(shí)現(xiàn)虛擬物體在場(chǎng)景中的移動(dòng),在移動(dòng)過(guò)程中就涉及到尋路的問(wèn)題。在游戲?qū)ぢ奉I(lǐng)域,A*尋路算法是一種被人們廣泛使用的人工智能技術(shù),A*尋路算法實(shí)際是一種啟發(fā)式搜索,就是利用一個(gè)估價(jià)函數(shù)評(píng)估每次決策的價(jià)值,決定先嘗試哪一種方案。具體而言,所謂啟發(fā)式搜索,就是在當(dāng)前搜索節(jié)點(diǎn)向下選擇下一步節(jié)點(diǎn)時(shí),可以通過(guò)一個(gè)啟發(fā)函數(shù)來(lái)進(jìn)行選擇,選擇代價(jià)最少的節(jié)點(diǎn)如距離當(dāng)前節(jié)點(diǎn)最近的節(jié)點(diǎn)作為下一步搜索節(jié)點(diǎn),并跳轉(zhuǎn)到選定的下一步節(jié)點(diǎn)上,直到到達(dá)目標(biāo)節(jié)點(diǎn)。
目前,3D場(chǎng)景中常用的尋路方法有基于三角面的A*尋路方法、A*二層尋路方法。具體來(lái)說(shuō),基于三角面的A*尋路方法先要設(shè)置存放所有已探知但未搜索過(guò)的節(jié)點(diǎn)的打開(kāi)表(Open Table),以及存放已搜索過(guò)的節(jié)點(diǎn)的關(guān)閉表(CloseTable);開(kāi)始尋路時(shí),自起始節(jié)點(diǎn)起,將每個(gè)節(jié)點(diǎn)作為當(dāng)前節(jié)點(diǎn)加入Open Table,在未到達(dá)目標(biāo)節(jié)點(diǎn)且Open Table表非空的情況下,逐一對(duì)每個(gè)當(dāng)前節(jié)點(diǎn)尋找其可能的子節(jié)點(diǎn),并計(jì)算每個(gè)子節(jié)點(diǎn)的估值;每次估算完就將當(dāng)前節(jié)點(diǎn)放入CloseTable,選擇下一個(gè)當(dāng)前節(jié)點(diǎn),之后再尋找新的當(dāng)前節(jié)點(diǎn)的子節(jié)點(diǎn),并計(jì)算每個(gè)子節(jié)點(diǎn)的估值,如此反復(fù),直到輸出找到的路徑為止。從上述處理過(guò)程可以看出,當(dāng)一個(gè)場(chǎng)景對(duì)應(yīng)的地圖由大量密集的三角面組成時(shí),如果起始節(jié)點(diǎn)距離目標(biāo)節(jié)點(diǎn)很遠(yuǎn)且基于三角面尋路,由于要存儲(chǔ)每個(gè)已探知或已搜索過(guò)的節(jié)點(diǎn),那么,搜索空間中就需要保存大量擴(kuò)展出來(lái)的節(jié)點(diǎn),空間開(kāi)銷(xiāo)會(huì)特別巨大,而其中有很多節(jié)點(diǎn)實(shí)際是無(wú)關(guān)節(jié)點(diǎn),如此,不僅占用了大量不必要的空間開(kāi)銷(xiāo),造成浪費(fèi);且會(huì)嚴(yán)重影響尋路的效率。
至于A*二層尋路方法,主要是在地圖上創(chuàng)建一個(gè)低密度的菱形網(wǎng)格,固定選取菱形網(wǎng)格的中心點(diǎn)作為路點(diǎn),先采用宏觀尋路方法確定粗略路徑,然后在每一段路徑上使用微觀尋路,但這種方法在尋路過(guò)程中采用的搜索節(jié)點(diǎn)是網(wǎng)格的中心點(diǎn),在適用范圍上具有一定的局限性,只能處理二維形狀規(guī)則的地圖,而不能用于二維或三維不規(guī)則形狀的地圖。


發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種地圖尋路方法及系統(tǒng),既能節(jié)省空間占用,又能提高尋路效率,還適用于對(duì)各種形狀地圖的處理。
為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的 本發(fā)明提供了一種地圖尋路方法,將平面地圖劃分為一個(gè)以上大小相等的區(qū)域,在區(qū)域邊界上生成路點(diǎn);需要尋路時(shí),先基于區(qū)域進(jìn)行尋路,獲得區(qū)域路徑;再根據(jù)獲得的區(qū)域路徑基于三角面尋路,生成最終路徑。
其中,所述劃分區(qū)域?yàn)椴捎玫乳g距的垂直和水平線將平面地圖分割為一個(gè)以上區(qū)域大小相等的方格。所述生成路點(diǎn)為將所劃分區(qū)域各邊與平面地圖所構(gòu)成多邊形的各邊重合線段的中點(diǎn)作為路點(diǎn)。所述獲得區(qū)域路徑為先確定從起點(diǎn)到終點(diǎn)途徑的區(qū)域,再根據(jù)所確定區(qū)域之間的關(guān)聯(lián)以及區(qū)域間的進(jìn)入點(diǎn),得到路點(diǎn)構(gòu)成的區(qū)域路徑。
上述方案中,所述尋路采用A*尋路算法。
上述方案中,在劃分區(qū)域之前,該方法進(jìn)一步包括將三維場(chǎng)景對(duì)應(yīng)的地圖導(dǎo)航片投影到平面,形成平面地圖。
上述方案中,所述基于區(qū)域進(jìn)行尋路具體包括先確定起點(diǎn)、終點(diǎn)以及起點(diǎn)和終點(diǎn)分別所屬的劃分區(qū)域,以區(qū)域?yàn)閱挝贿M(jìn)行尋路。
本發(fā)明還提供了一種地圖尋路系統(tǒng),包括區(qū)域生成模塊、路點(diǎn)管理模塊、尋路模塊;其中, 區(qū)域生成模塊,用于將多邊形平面地圖劃分為一個(gè)以上大小相等的區(qū)域;路點(diǎn)生成模塊,負(fù)責(zé)針對(duì)劃分的每塊區(qū)域,獲取區(qū)域各邊與多邊形各邊重合線段的中點(diǎn)作為路點(diǎn),將每塊區(qū)域中的路點(diǎn)生成路點(diǎn)序列,并建立路點(diǎn)序列內(nèi)各路點(diǎn)之間的連通關(guān)系;尋路模塊,用于采用A*尋路算法進(jìn)行尋路; 尋路模塊進(jìn)一步包括區(qū)域?qū)ぢ纺K和三角面尋路模塊,所述區(qū)域?qū)ぢ纺K以區(qū)域?yàn)閱挝徊捎肁*尋路算法進(jìn)行尋路,并根據(jù)途徑的區(qū)域及區(qū)域間的進(jìn)入點(diǎn),確定由路點(diǎn)構(gòu)成的區(qū)域路徑;所述三角面尋路模塊,在具體場(chǎng)景中采用基于三角面的A*尋路,得到最終的移動(dòng)路徑。
本發(fā)明所提供的地圖尋路方法及系統(tǒng),將場(chǎng)景對(duì)應(yīng)的平面地圖劃分為若干個(gè)大小相等的區(qū)域,并在區(qū)域的邊界上生成路點(diǎn);尋路時(shí),先基于區(qū)域進(jìn)行尋路,獲得區(qū)域路徑后,再進(jìn)一步根據(jù)所確定的區(qū)域路徑在具體場(chǎng)景中采用基于三角面的尋路,生成最終的移動(dòng)路徑。因此,本發(fā)明具有以下的優(yōu)點(diǎn)和特點(diǎn) 1)本發(fā)明先基于區(qū)域進(jìn)行尋路,再基于所確定區(qū)域涉及到的路點(diǎn)進(jìn)行尋路,雖然也是采用A*尋路算法,但第一次尋路是以區(qū)域?yàn)閱挝?,搜索?jié)點(diǎn)相當(dāng)于是一個(gè)個(gè)區(qū)域,第二次尋路僅涉及已確定的區(qū)域路徑涵蓋的范圍,不再有大量的無(wú)關(guān)節(jié)點(diǎn),顯然,尋路過(guò)程中大大減少了需占用的存儲(chǔ)空間,降低了空間開(kāi)銷(xiāo)。
2)本發(fā)明采用的二級(jí)尋路方式,第一級(jí)以區(qū)域?yàn)閱挝幌茸龃致詫ぢ?,將搜索范圍縮??;第二級(jí)再基于已確定的區(qū)域逐一做精細(xì)尋路,按照基于三角面的方式進(jìn)行尋路,獲取最終移動(dòng)路徑,如此,相當(dāng)于把高密度的三角面稀疏化,分?jǐn)偭藭r(shí)間、空間的開(kāi)銷(xiāo),有效降低了整個(gè)尋路過(guò)程的時(shí)空復(fù)雜度,可大大提高尋路效率。
3)由于將地圖進(jìn)行了區(qū)域劃分,且所采用的路點(diǎn)在區(qū)域邊界上,路點(diǎn)的位置與地圖的形狀相關(guān),所以,本發(fā)明可適用于對(duì)各種形狀的地圖進(jìn)行處理,例如存在不連通區(qū)域的地圖等,適用范圍更廣,實(shí)用性更強(qiáng)。
4)本發(fā)明中路點(diǎn)獲取的是所劃分區(qū)域的邊與多邊形地圖的邊重合線段的重點(diǎn),可以動(dòng)態(tài)生成路點(diǎn),而不是固定不變的,這樣,在實(shí)現(xiàn)上更靈活、方便,與實(shí)際路徑更接近,所得到的移動(dòng)路徑精確度更高。



圖1為本發(fā)明方法總體的實(shí)現(xiàn)流程示意圖; 圖2為三維場(chǎng)景地圖投影到平面的示意圖; 圖3為將圖2所示地圖劃分為導(dǎo)航格的示意圖; 圖4為圖2所示地圖生成路點(diǎn)后的示意圖; 圖5為本發(fā)明中一種生成導(dǎo)航格的實(shí)現(xiàn)流程示意圖; 圖6a至圖6g為本發(fā)明一實(shí)施例的實(shí)現(xiàn)過(guò)程示意圖。

具體實(shí)施例方式 本發(fā)明的基本思想是將所需處理場(chǎng)景對(duì)應(yīng)的平面地圖劃分為若干個(gè)大小相等的區(qū)域,并在區(qū)域的邊界上生成路點(diǎn);當(dāng)需要尋路時(shí),先基于區(qū)域進(jìn)行尋路,獲得從起點(diǎn)到終點(diǎn)的區(qū)域路徑;之后,再進(jìn)一步基于所獲得的區(qū)域路徑采用基于三角面的尋路,生成最終路徑。
其中,每個(gè)區(qū)域可稱(chēng)為一個(gè)導(dǎo)航格,相應(yīng)的,區(qū)域路徑就是將每個(gè)導(dǎo)航格看作一個(gè)點(diǎn),先確定由起點(diǎn)所屬導(dǎo)航格到終點(diǎn)所屬導(dǎo)航格途經(jīng)的所有導(dǎo)航格,再根據(jù)所確定導(dǎo)航格間的關(guān)聯(lián)及導(dǎo)航格間的進(jìn)入點(diǎn),得到一條由路點(diǎn)構(gòu)成的起點(diǎn)到終點(diǎn)的路徑。所述路點(diǎn)是導(dǎo)航格的各邊與平面地圖所構(gòu)成多邊形的各邊重合線段的中點(diǎn),每個(gè)導(dǎo)航格各個(gè)邊上的所有路點(diǎn)構(gòu)成該導(dǎo)航格對(duì)應(yīng)的路點(diǎn)序列。
這里,所述的場(chǎng)景可以是二維或三維場(chǎng)景,例如游戲中的3D社區(qū)地圖,對(duì)于3D場(chǎng)景,需要先將3D場(chǎng)景的地圖導(dǎo)航片投影到平面上,得到一個(gè)多邊形平面地圖;對(duì)于二維平面場(chǎng)景,可直接采用平面地圖。所述導(dǎo)航格可以采用不同的形狀,如方格、矩形格、六角形格等,只要區(qū)域大小相等即可;較佳的,用等間距的垂直和水平線將整個(gè)平面地圖分割為若干個(gè)區(qū)域大小相等的方格。
如圖1所示,本發(fā)明的地圖尋路方法包括以下步驟 步驟101獲取所需處理場(chǎng)景對(duì)應(yīng)的多邊形平面地圖,并將所獲得的平面地圖多邊形劃分為若干個(gè)大小相等的導(dǎo)航格。
這里,所述獲取多邊形平面地圖,對(duì)于3D場(chǎng)景的地圖,例如游戲中的社區(qū)地圖,需要先將地圖導(dǎo)航片投影到平面上,得到一個(gè)多邊形平面地圖,如圖2所示,圖2是一個(gè)3D社區(qū)地圖導(dǎo)航片投影到平面,得到的多邊形平面地圖。
所述劃分可以采用不同方式、不同形狀的劃分,只要各個(gè)導(dǎo)航格區(qū)域相等。較佳的,用等間距的垂直和水平線將多邊形劃分為若干個(gè)方格,如圖3所示,圖3為將圖2所示多邊形平面地圖劃分為大小相等的方格。
步驟102生成每個(gè)導(dǎo)航格對(duì)應(yīng)的路點(diǎn)序列,并建立每個(gè)路點(diǎn)序列內(nèi)各路點(diǎn)之間的連通關(guān)系。
這里,每個(gè)路點(diǎn)是導(dǎo)航格的某條邊與多邊形的某條邊重合的線段的中點(diǎn),如圖4所示,圖4為基于圖2所示地圖生成路點(diǎn)后的地圖,圖4中的黑點(diǎn)均為路點(diǎn),每個(gè)導(dǎo)航格各邊上的所有路點(diǎn)構(gòu)成路點(diǎn)序列。一般,為每個(gè)導(dǎo)航格創(chuàng)建一個(gè)結(jié)構(gòu)體或稱(chēng)數(shù)據(jù)結(jié)構(gòu),結(jié)構(gòu)體中包括導(dǎo)航格的相關(guān)信息以及其對(duì)應(yīng)的路點(diǎn)序列。
通常,所述導(dǎo)航格對(duì)應(yīng)的路點(diǎn)序列內(nèi)各路點(diǎn)間的連通關(guān)系可以根據(jù)基于三角面的尋路建立,連通關(guān)系的保存可使用并查集的數(shù)據(jù)結(jié)構(gòu)來(lái)實(shí)現(xiàn),所謂并查集是指若干個(gè)不相交集合,能夠?qū)崿F(xiàn)較快的合并、判斷元素所在集合的操作,主要涉及對(duì)集合的合并和查找。
步驟103需要尋路時(shí),基于導(dǎo)航格采用A*尋路,獲得導(dǎo)航格路徑。
具體來(lái)說(shuō),當(dāng)需要尋路時(shí),先輸入起點(diǎn)和終點(diǎn)的坐標(biāo)位置,根據(jù)坐標(biāo)位置即可定位起點(diǎn)和終點(diǎn)分別所屬的導(dǎo)航格;之后,就以導(dǎo)航格作為單位點(diǎn),起始導(dǎo)航格為起點(diǎn),終止導(dǎo)航格為終點(diǎn),進(jìn)行A*尋路。
具體基于導(dǎo)航格的A*尋路過(guò)程包括以下步驟 A、構(gòu)造Open表,訪問(wèn)起始導(dǎo)航格可到達(dá)的相鄰導(dǎo)航格,把二元組<導(dǎo)航格,進(jìn)入點(diǎn)>作為元素放入表中。
這里,對(duì)于起始導(dǎo)航格可到達(dá)的相鄰導(dǎo)航格需要調(diào)用低層基于三角面的尋路來(lái)確定擴(kuò)展方向。
B、如果Open表不空,取出表中估價(jià)值最小的元素,放入Close表。設(shè)置取出的導(dǎo)航格為當(dāng)前導(dǎo)航格。
C、如果當(dāng)前導(dǎo)航格等于終點(diǎn)導(dǎo)航格,則尋路結(jié)束,執(zhí)行步驟E;否則,執(zhí)行步驟D; D、訪問(wèn)當(dāng)前導(dǎo)航格可到達(dá)的相鄰導(dǎo)航格,處于未訪問(wèn)過(guò)狀態(tài)的元素<導(dǎo)航格,進(jìn)入點(diǎn)>都加入Open表中,返回步驟B。
E、如果尋找到終點(diǎn),則沿各狀態(tài)點(diǎn)生成一條由路點(diǎn)構(gòu)成的從起點(diǎn)到終點(diǎn)的路徑。
步驟104根據(jù)生成的導(dǎo)航格路徑,在具體場(chǎng)景中進(jìn)行基于三角面的A*尋路,生成最終的移動(dòng)路徑。
步驟103中,根據(jù)導(dǎo)航格間的關(guān)聯(lián)及進(jìn)入點(diǎn)可先得到一條由路點(diǎn)構(gòu)成的粗略路徑,本步驟中,在具體場(chǎng)景移動(dòng)中,再進(jìn)一步采用基于三角面的A*尋路,得到細(xì)化的移動(dòng)路徑。
本發(fā)明中,之所以將所劃分的區(qū)域稱(chēng)為導(dǎo)航格,是因?yàn)槊總€(gè)導(dǎo)航格對(duì)應(yīng)著一個(gè)導(dǎo)航片區(qū)域,具有導(dǎo)航作用,也就是說(shuō)相鄰導(dǎo)航格之間具有關(guān)聯(lián)關(guān)系?;诖?,本發(fā)明中一種生成導(dǎo)航格的過(guò)程如圖5所示,包括以下步驟 步驟501確定當(dāng)前導(dǎo)航格左上角坐標(biāo); 因?yàn)榈貓D具有一定的坐標(biāo)范圍,且每個(gè)導(dǎo)航格的大小在劃分時(shí)是已知的,這里,根據(jù)導(dǎo)航格左上角坐標(biāo)可以確定導(dǎo)航格在地圖中所處的位置,也可以確定導(dǎo)航格邊界與地圖的關(guān)系。
步驟502獲取當(dāng)前導(dǎo)航格右邊界路點(diǎn)和下邊界路點(diǎn); 這里,如果兩個(gè)導(dǎo)航格有公共邊,也就是說(shuō)兩個(gè)導(dǎo)航格相鄰,那么,公共邊上的路點(diǎn)兩個(gè)導(dǎo)航格可以共用。基于此,本步驟可以不用獲取當(dāng)前導(dǎo)航格上邊界和左邊界的路點(diǎn),這兩個(gè)邊上的路點(diǎn)在步驟503中,可以通過(guò)提取左邊導(dǎo)航格右邊界上的路點(diǎn)、以及上邊導(dǎo)航格下邊界上的路點(diǎn)直接獲取。如此,還可以提高生成效率,降低程序運(yùn)算的復(fù)雜度。
步驟503設(shè)置當(dāng)前導(dǎo)航格與上邊導(dǎo)航格、左邊導(dǎo)航格的關(guān)聯(lián),獲取上邊界和左邊界上的路點(diǎn); 這里,對(duì)于當(dāng)前導(dǎo)航格而言,其上邊導(dǎo)航格和左邊導(dǎo)航格的路點(diǎn)已經(jīng)在先生成并獲取,此處只要當(dāng)前導(dǎo)航格主動(dòng)與上邊導(dǎo)航格、左邊導(dǎo)航格進(jìn)行關(guān)聯(lián),即可獲取當(dāng)前導(dǎo)航格上邊界和左邊界上的路點(diǎn)。
步驟504生成當(dāng)前導(dǎo)航格的路點(diǎn)序列,并建立各路點(diǎn)之間的連通關(guān)系。
這里,所述路點(diǎn)序列就是當(dāng)前導(dǎo)航格各個(gè)邊界上所有路點(diǎn)的集合;所述建立各路點(diǎn)間的連通關(guān)系是通過(guò)基于三角面的A*尋路方法實(shí)現(xiàn)。
圖5給出的生成導(dǎo)航格的方法是從左上角開(kāi)始向右、向下生成導(dǎo)航格,在實(shí)際應(yīng)用中,也可以從右上角向左、向下生成導(dǎo)航格,或從左下角向右、向上生成導(dǎo)航格,或從右下角向左、向上生成導(dǎo)航格,處理過(guò)程都是類(lèi)似的,只需替換上述步驟中選擇的角坐標(biāo)以及邊界即可,例如確定右上角坐標(biāo),獲取左邊界、下邊界上的路點(diǎn)等等。
下面結(jié)合具體實(shí)施例和附圖詳細(xì)說(shuō)明一下本發(fā)明地圖尋路方法的實(shí)現(xiàn)。
圖6a至圖6g給出了一實(shí)施例中實(shí)現(xiàn)地圖尋路的過(guò)程,本實(shí)施例中,采用等間距的垂直和水平線將多邊形地圖劃分為若干個(gè)方格,圖6中的黑點(diǎn)均為路點(diǎn)。S點(diǎn)為起點(diǎn),T點(diǎn)為終點(diǎn),分別用五角星表示,灰色填充的方格為搜索過(guò)的方格節(jié)點(diǎn)。
圖6a為起始狀態(tài),從S點(diǎn)到T點(diǎn)的尋路過(guò)程是這樣 步驟11定位起點(diǎn)S與終點(diǎn)T所屬的導(dǎo)航格分別為Gs、Gt,如圖6b所示。
步驟12執(zhí)行A*尋路算法,根據(jù)S點(diǎn)能走到的路點(diǎn),擴(kuò)展出導(dǎo)航格G0,并將G0放入優(yōu)先隊(duì)列,如圖6c所示。
這里,導(dǎo)航格G0是從起始導(dǎo)航格Gs第一個(gè)擴(kuò)展出的導(dǎo)航格,具體如何確定起始導(dǎo)航格Gs的擴(kuò)展方向,需要通過(guò)調(diào)用低層基于三角面的A*尋路算法確定。具體到本實(shí)施例中,對(duì)于導(dǎo)航格Gs來(lái)說(shuō),根據(jù)基于三角面的A*尋路來(lái)看,從起點(diǎn)S只能向左移動(dòng),右邊不連通,所以就從導(dǎo)航格Gs向左擴(kuò)展出導(dǎo)航格G0;如果從起點(diǎn)S向左、右兩側(cè)都可以移動(dòng)的話,根據(jù)A*尋路算法就可以從導(dǎo)航格Gs向左、向右各擴(kuò)展出一個(gè)導(dǎo)航格,之后繼續(xù)基于導(dǎo)航格執(zhí)行A*尋路算法,至于A*尋路算法如何實(shí)現(xiàn),屬于已有技術(shù),在此不再詳述。
步驟13基于A*尋路算法,從導(dǎo)航格G0擴(kuò)展出導(dǎo)航格G1、G2、G3,如圖6d所示。
步驟14根據(jù)啟發(fā)搜索規(guī)則,即根據(jù)到導(dǎo)航格Gt的距離,優(yōu)先擴(kuò)展導(dǎo)航格G1,得到導(dǎo)航格G4,如圖6e所示。
步驟15依據(jù)與步驟14相同的原理進(jìn)行操作,擴(kuò)展導(dǎo)航格G4,得到導(dǎo)航格G5,進(jìn)而到達(dá)Gt,如圖6f所示。至此,確定Gs、G0、G1、G4、G5、Gt為導(dǎo)航格路徑途徑的所有導(dǎo)航格。
步驟16根據(jù)各導(dǎo)航格之間的關(guān)聯(lián)關(guān)系以及進(jìn)入點(diǎn),生成一個(gè)路點(diǎn)序列,進(jìn)而得到從S點(diǎn)到T點(diǎn)的導(dǎo)航格路徑。如圖6f所示,Gs與G0之間相鄰,Gs到G0的進(jìn)入點(diǎn)為點(diǎn)1;G0與G1之間相鄰,G0到G1的進(jìn)入點(diǎn)為點(diǎn)2;G1與G4之間相鄰,G1到G4的進(jìn)入點(diǎn)為點(diǎn)3;G4與G5之間相鄰,G4到G5的進(jìn)入點(diǎn)為點(diǎn)4;G5與Gt之間相鄰,G5到Gt的進(jìn)入點(diǎn)為點(diǎn)5,因此,所生成的路點(diǎn)序列為{S、1、2、3、4、5、T},得到的導(dǎo)航格路徑為S→1→2→3→4→5→T,如圖6g所示,各路點(diǎn)之間的路段組成長(zhǎng)路徑。
步驟17在具體場(chǎng)景中移動(dòng)時(shí)可再調(diào)用基于三角面的A*尋路算法尋路。
為實(shí)現(xiàn)上述方法,本發(fā)明還提出一種地圖尋路系統(tǒng),包括區(qū)域生成模塊、路點(diǎn)管理模塊、尋路模塊;其中, 所述區(qū)域生成模塊,將多邊形平面地圖劃分為若干個(gè)大小相等的區(qū)域。所述路點(diǎn)生成模塊,負(fù)責(zé)針對(duì)劃分的每塊區(qū)域,獲取區(qū)域各邊與多邊形各邊重合線段的中點(diǎn)作為路點(diǎn),將每塊區(qū)域中的路點(diǎn)生成路點(diǎn)序列,并建立路點(diǎn)序列內(nèi)各路點(diǎn)之間的連通關(guān)系。所述尋路模塊采用A*尋路算法進(jìn)行尋路,進(jìn)一步包括區(qū)域?qū)ぢ纺K和三角面尋路模塊,區(qū)域?qū)ぢ纺K是以區(qū)域?yàn)閱挝徊捎肁*尋路算法進(jìn)行尋路,并根據(jù)途徑的區(qū)域及區(qū)域間的進(jìn)入點(diǎn),確定一條由路點(diǎn)構(gòu)成的粗略的區(qū)域路徑;三角面尋路模塊,在具體場(chǎng)景移動(dòng)中,進(jìn)一步采用基于三角面的A*尋路,得到最終細(xì)化的移動(dòng)路徑。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。
權(quán)利要求
1、一種地圖尋路方法,其特征在于,將平面地圖劃分為一個(gè)以上大小相等的區(qū)域,在區(qū)域邊界上生成路點(diǎn);需要尋路時(shí),先基于區(qū)域進(jìn)行尋路,獲得區(qū)域路徑;再根據(jù)獲得的區(qū)域路徑基于三角面尋路,生成最終路徑。
2、根據(jù)權(quán)利要求1所述的地圖尋路方法,其特征在于,所述劃分區(qū)域?yàn)椴捎玫乳g距的垂直和水平線將平面地圖分割為一個(gè)以上區(qū)域大小相等的方格。
3、根據(jù)權(quán)利要求1所述的地圖尋路方法,其特征在于,所述生成路點(diǎn)為將所劃分區(qū)域各邊與平面地圖所構(gòu)成多邊形的各邊重合線段的中點(diǎn)作為路點(diǎn)。
4、根據(jù)權(quán)利要求1所述的地圖尋路方法,其特征在于,所述獲得區(qū)域路徑為先確定從起點(diǎn)到終點(diǎn)途徑的區(qū)域,再根據(jù)所確定區(qū)域之間的關(guān)聯(lián)以及區(qū)域間的進(jìn)入點(diǎn),得到路點(diǎn)構(gòu)成的區(qū)域路徑。
5、根據(jù)權(quán)利要求1至4任一項(xiàng)所述的地圖尋路方法,其特征在于,所述尋路采用A*尋路算法。
6、根據(jù)權(quán)利要求1至4任一項(xiàng)所述的地圖尋路方法,其特征在于,在劃分區(qū)域之前,該方法進(jìn)一步包括將三維場(chǎng)景對(duì)應(yīng)的地圖導(dǎo)航片投影到平面,形成平面地圖。
7、根據(jù)權(quán)利要求1至4任一項(xiàng)所述的地圖尋路方法,其特征在于,所述基于區(qū)域進(jìn)行尋路具體包括先確定起點(diǎn)、終點(diǎn)以及起點(diǎn)和終點(diǎn)分別所屬的劃分區(qū)域,以區(qū)域?yàn)閱挝贿M(jìn)行尋路。
8、一種地圖尋路系統(tǒng),其特征在于,包括區(qū)域生成模塊、路點(diǎn)管理模塊、尋路模塊;其中,
區(qū)域生成模塊,用于將多邊形平面地圖劃分為一個(gè)以上大小相等的區(qū)域;
路點(diǎn)生成模塊,負(fù)責(zé)針對(duì)劃分的每塊區(qū)域,獲取區(qū)域各邊與多邊形各邊重合線段的中點(diǎn)作為路點(diǎn),將每塊區(qū)域中的路點(diǎn)生成路點(diǎn)序列,并建立路點(diǎn)序列內(nèi)各路點(diǎn)之間的連通關(guān)系;
尋路模塊,用于采用A*尋路算法進(jìn)行尋路;
尋路模塊進(jìn)一步包括區(qū)域?qū)ぢ纺K和三角面尋路模塊,所述區(qū)域?qū)ぢ纺K以區(qū)域?yàn)閱挝徊捎肁*尋路算法進(jìn)行尋路,并根據(jù)途徑的區(qū)域及區(qū)域間的進(jìn)入點(diǎn),確定由路點(diǎn)構(gòu)成的區(qū)域路徑;所述三角面尋路模塊,在具體場(chǎng)景中采用基于三角面的A*尋路,得到最終的移動(dòng)路徑。
全文摘要
本發(fā)明公開(kāi)了一種地圖尋路方法,將平面地圖劃分為一個(gè)以上大小相等的區(qū)域,在區(qū)域邊界上生成路點(diǎn);需要尋路時(shí),先基于區(qū)域進(jìn)行尋路,獲得區(qū)域路徑;再根據(jù)獲得的區(qū)域路徑基于三角面尋路,生成最終路徑。本發(fā)明還同時(shí)公開(kāi)了一種地圖尋路系統(tǒng),采用本發(fā)明的方法及系統(tǒng),既能節(jié)省空間占用,又能提高尋路效率,還適用于對(duì)各種形狀地圖的處理。
文檔編號(hào)G06F19/00GK101241507SQ200810056378
公開(kāi)日2008年8月13日 申請(qǐng)日期2008年1月17日 優(yōu)先權(quán)日2008年1月17日
發(fā)明者超 彭 申請(qǐng)人:騰訊科技(深圳)有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1