本發(fā)明涉及導(dǎo)路領(lǐng)域,是一種應(yīng)用于導(dǎo)購系統(tǒng)的基于網(wǎng)格生成路徑的方法。
背景技術(shù):
隨著經(jīng)濟(jì)的不斷發(fā)展,人們的生活水平和生活方式不斷進(jìn)步,消費水平不斷上漲,主要的消費場所“購物商場”,也正向著集成化、大型化的方向發(fā)展。然而,商場占地面積的不斷擴(kuò)大化,也給消費者造成了諸多不便,其中最為直接的就是尋路難度加大,使消費者較難在短時間內(nèi)找到想要的品牌或商品。為解決該問題,大型商場通常會安裝互動導(dǎo)購系統(tǒng),以方便消費者更好地了解商場的形象、樓層平面、商戶分布、商戶分類檢索、商戶介紹、活動信息、會員章程、積分查詢等信息。而且隨著觸摸一體機的推廣,國內(nèi)的互動導(dǎo)購系統(tǒng)開始逐步興起并發(fā)展起來。商場互動導(dǎo)購系統(tǒng)解決的最主要問題是查詢從當(dāng)前位置到目標(biāo)店鋪的路徑規(guī)劃,現(xiàn)有互動導(dǎo)購系統(tǒng)的路徑規(guī)劃通常采用了路徑點窮舉的方式,以商場為例,需要在商場的地形圖中各條路的分岔位置、各個店鋪門口,以及店鋪位置均標(biāo)注路徑點,再將這些路徑點一一輸入至導(dǎo)購系統(tǒng)中,從而生成一張路徑網(wǎng)。由此可見,要生成一張貫穿整個地形圖的路徑點,是一項相當(dāng)復(fù)雜且繁瑣的工作,該操作需要花費大量的人工和時間來實現(xiàn),并且不易被商場的管理人員所掌握,專業(yè)性極強,這也決定了當(dāng)前商場互動導(dǎo)購系統(tǒng)定制化程度高、通用性差,不易維護(hù)更新的缺點。為此,有待對現(xiàn)有商場導(dǎo)購系統(tǒng)的路徑規(guī)劃方法進(jìn)行改進(jìn)。
技術(shù)實現(xiàn)要素:
為克服上述不足,本發(fā)明設(shè)計一種基于網(wǎng)格生成路徑的方法,使其解決現(xiàn)有路徑規(guī)劃采用路徑點窮舉的方式,較為繁瑣,通用性差,專業(yè)性強不易維護(hù)管理的技術(shù)問題。其采用如下技術(shù)方案實現(xiàn)。
一種基于網(wǎng)格生成路徑的方法,其包括如下步驟:
一、生成網(wǎng)格數(shù)據(jù),通過描繪場地平面輪廓,并根據(jù)平面輪廓劃分為通行平面區(qū)域和非通行平面區(qū)域,對通行平面區(qū)域根據(jù)“delaunay三角剖分”算法自動構(gòu)建三角網(wǎng)格;
二、形成三角網(wǎng)格通路,根據(jù)起始點和目標(biāo)點所在三角網(wǎng)格,結(jié)合a*尋路算法,得到起始點至目標(biāo)點的三角網(wǎng)格通路;
三、根據(jù)拐角點算法形成初始路徑,首先,以起始點至目標(biāo)點所經(jīng)過三角網(wǎng)格為順序依次確定“臨邊”的順序,臨邊為相鄰三角網(wǎng)格之間的公共邊;其次,臨邊的兩個端點以臨邊逆時針旋轉(zhuǎn)時接近所述起始點的端點為左端點,遠(yuǎn)離起始點的端點為右端點,所述起始點所在三角網(wǎng)格的臨邊為起始臨邊,所述目標(biāo)點所在三角網(wǎng)格的臨邊為末端臨邊;接下來按臨邊順序,依次將起始臨邊之后的各臨邊的兩個端點與所述起始點進(jìn)行位置比較確定拐點,過程為:起始臨邊的左端點、右端點均與起始點連線,并形成第一個平面夾角,其中左端點與起始點的連線稱為左夾角線,右端點與起始點的連線稱為右夾角線;判定第二條臨邊的左端點、右端點相對于平面夾角的位置狀態(tài),如果第二條臨邊的左端點位于平面夾角范圍內(nèi),則第二條臨邊的左端點作為連接起始點的新的左端點,刪除起始臨邊的左端點與起始點的左夾角線,更新為第二條臨邊的左端點與起始點的新的左夾角線;如果第二條臨邊的左端點位于平面夾角范圍外,且位于左夾角線的外側(cè),則保留起始臨邊的左端點與起始點的左夾角線;如果第二條臨邊的右端點位于平面夾角范圍內(nèi),則第二條臨邊的右端點作為連接起始點的新的右端點,刪除起始臨邊的右端點與起始點的右夾角線,更新為第二條臨邊的右端點與起始點的新的右夾角線;如果第二條臨邊的右端點位于平面夾角范圍外,且位于右夾角線的外側(cè),則保留起始臨邊的右端點與起始點的右夾角線;繼續(xù)比較第三條臨邊的兩個端點,且比較第三條臨邊兩個端點位置狀態(tài)時,是以第二條臨邊兩個端點比較后所形成的新的平面夾角為比較對象,以這樣的方式依次比較后續(xù)臨邊的兩個端點;
上述比較過程中,如果出現(xiàn):當(dāng)后一臨邊的左端點、右端點均位于所參照的平面夾角范圍外,且位于左夾角線的外側(cè)時,則該平面夾角所參照的左端點作為一個拐點;當(dāng)后一臨邊的左端點、右端點均位于所參照的平面夾角范圍外,且位于右夾角線的外側(cè)時,則該平面夾角所參照的右端點作為一個拐點;當(dāng)后一臨邊為末端臨邊時,根據(jù)目標(biāo)點相對于該末端臨邊所參照的平面夾角范圍形成如下三種狀態(tài):目標(biāo)點位于該參照平面夾角范圍內(nèi)時,則目標(biāo)點直接與前一個拐點連接;目標(biāo)點位于該參照平面夾角范圍外,且位于左夾角線外側(cè)時,該參照平面夾角所對應(yīng)的左端點作為一個拐點,其與目標(biāo)點直線連接;當(dāng)目標(biāo)點位于參照平面夾角范圍外,且位于右夾角線外側(cè)時,該參照平面夾角所對應(yīng)的右端點作為一個拐點,其與目標(biāo)點直線連接;
當(dāng)?shù)玫揭粋€拐點后,則以該拐點重新作為新的起始點,以上述方式繼續(xù)找出下一拐點,直至下一拐點與目標(biāo)點之間不再存在拐點時,將起始點、各拐點、目標(biāo)點依次直線連接,即形成初始路徑;
上述方法還包括步驟四,包括步驟四,根據(jù)直線視線檢測法去除上述初始路徑中多余的路徑點,對上述起始點、拐點、目標(biāo)點分別按順序進(jìn)行排序形成一個點序列,在點序列中,當(dāng)起始點與第三個點所連成的線段未完全落入上述步驟二所形成的三角網(wǎng)格通路內(nèi)時,繼續(xù)判定第二個點與第四個點所連成的線段是否落入上述步驟二所形成的三角網(wǎng)格通路內(nèi),如果未完全落入,則繼續(xù)判定第三個點與第五個點所連成的線段是否落入上述步驟二所形成的三角網(wǎng)格通路內(nèi),以次類推;當(dāng)所述起始點與第三個點所連成的線段完全落入上述步驟二所形成的三角網(wǎng)格通路內(nèi)時,則去除點序列中的第二個點,繼續(xù)判定起始點與第四個點所連成的線段是否落入上述步驟二所形成的三角網(wǎng)格通路內(nèi),如果完全落入,則去除點序列中的第三個點,如果未完全落入,則以第三個點作為新的起始點,繼續(xù)以上述方式判定后續(xù)的點,直至去除初始路徑中多余的路徑點,去除多余的路徑點后,剩余路徑點依次直線連接,即生成最終的路徑。
上述基于網(wǎng)格生成路徑的方法中,所述步驟一由人工繪制場地輪廓并輸入編程系統(tǒng)中,由軟件系統(tǒng)自動識別輪廓后構(gòu)建形成三角網(wǎng)格,步驟二至步驟四由軟件系統(tǒng)按預(yù)設(shè)程序執(zhí)行完成。
通過上述方法,將復(fù)雜繁瑣的路徑點手動標(biāo)注輸入替換為由軟件系統(tǒng)根據(jù)人工繪制的場地輪廓在通行區(qū)域自動生成三角網(wǎng)格,并由系統(tǒng)根據(jù)預(yù)設(shè)程序?qū)⑷蔷W(wǎng)格自動生成路徑,大幅減少了工作量,降低了操作人員的專業(yè)性要求,且軟件脫離了高度定制化,通用性強,便于二次開發(fā)使用,具有較好的應(yīng)用前景。
附圖說明
圖1是本發(fā)明根據(jù)場地輪廓對通行區(qū)域自動生成三角網(wǎng)格的示意圖。
圖2是本發(fā)明步驟三的狀態(tài)結(jié)構(gòu)示意圖,圖中虛線表示路徑,粗實線表示臨邊。
圖中序號及名稱為:1、三角網(wǎng)格,2、起始點,3、臨邊,301、起始臨邊,302、末端臨邊,4、左端點,5、右端點,6、左夾角線,7、右夾角線,8、拐點,9、目標(biāo)點。
具體實施方式
現(xiàn)結(jié)合附圖,對本發(fā)明作如下描述。
該基于網(wǎng)格生成路徑的方法,主要分為以下步驟:
步驟一,如圖1所示,首先通過人工根據(jù)商場實際大小按縮放比例繪制商場導(dǎo)購平面輪廓圖,由軟件系統(tǒng)自動對該商場導(dǎo)購平面輪廓圖進(jìn)行識別,將該商場導(dǎo)購平面輪廓圖劃分為通行平面區(qū)域和非通行平面區(qū)域,對通行平面區(qū)域根據(jù)“delaunay三角剖分”算法自動構(gòu)建三角網(wǎng)格1?!癲elaunay三角剖分”算法是現(xiàn)有已知算法,簡單的說是指在給定平面中的n個點,用不相交的直線段連接它們,以致范圍內(nèi)的每個區(qū)域都是一個三角形,且細(xì)長、尖銳的三角形越少,等邊三角形及近似等邊的三角形越多,整體三角形網(wǎng)格以均勻為佳。
步驟二,形成三角網(wǎng)格通路。根據(jù)起始點2和目標(biāo)點9所在三角網(wǎng)格1,結(jié)合a*尋路算法,得到起始點2至目標(biāo)點9的三角網(wǎng)格通路。a*尋路算法是屬于現(xiàn)有尋路里一種常規(guī)的算法,故不作詳細(xì)表述,僅簡單表述其原理:a*算法使用的估價方式為f(n)=g(n)+h(n)。其中g(shù)(n)表示從起點到任意節(jié)點n的路徑花費,h(n)表示從節(jié)點n到目標(biāo)節(jié)點路徑花費的估計值啟發(fā)值。a*算法在物體移動的同時平衡g(n)和h(n)兩者的值,每次都選取鄰接節(jié)點中f(n)值最小的節(jié)點作為下一個節(jié)點。
步驟三,根據(jù)拐角點算法形成初始路徑。首先,以起始點2至目標(biāo)點9所經(jīng)過三角網(wǎng)格1為順序依次確定“臨邊3”的順序,臨邊為相鄰三角網(wǎng)格之間的公共邊,其次,臨邊的兩個端點以臨邊逆時針旋轉(zhuǎn)時接近起始點的端點為左端點4,遠(yuǎn)離起始點的端點為右端點5,起始點所在三角網(wǎng)格的臨邊為起始臨邊301,目標(biāo)點所在三角網(wǎng)格的臨邊為末端臨邊;接下來按臨邊3順序,依次將起始臨邊301之后的各臨邊的兩個端點與起始點進(jìn)行位置比較確定拐點8,具體過程為:起始臨邊301的左端點4、右端點5均與起始點2連線,并形成第一個平面夾角,其中左端點4與起始點2的連線稱為左夾角線6,右端點5與起始點2的連線稱為右夾角線7;判定第二條臨邊的左端點、右端點相對于平面夾角的位置狀態(tài),如果第二條臨邊的左端點位于平面夾角范圍內(nèi),則第二條臨邊的左端點作為連接起始點的新的左端點,刪除起始臨邊的左端點與起始點的左夾角線,更新為第二條臨邊的左端點與起始點的新的左夾角線;如果第二條臨邊的左端點位于平面夾角范圍外,且位于左夾角線的外側(cè),則保留起始臨邊的左端點與起始點的左夾角線;如果第二條臨邊的右端點位于平面夾角范圍內(nèi),則第二條臨邊的右端點作為連接起始點的新的右端點,刪除起始臨邊的右端點與起始點的右夾角線,更新為第二條臨邊的右端點與起始點的新的右夾角線;如果第二條臨邊的右端點位于平面夾角范圍外,且位于右夾角線的外側(cè),則保留起始臨邊的右端點與起始點的右夾角線;繼續(xù)比較第三條臨邊的兩個端點,且比較第三條臨邊兩個端點位置狀態(tài)時,是以第二條臨邊兩個端點比較后所形成的新的平面夾角為比較對象,以這樣的方式依次比較后續(xù)臨邊的兩個端點;
上述比較過程中,如果出現(xiàn):當(dāng)后一臨邊的左端點、右端點均位于所參照的平面夾角范圍外,且位于左夾角線的外側(cè)時,則該平面夾角所參照的左端點作為一個拐點8;當(dāng)后一臨邊的左端點、右端點均位于所參照的平面夾角范圍外,且位于右夾角線的外側(cè)時,則該平面夾角所參照的右端點作為一個拐點;當(dāng)后一臨邊為末端臨邊302時,根據(jù)目標(biāo)點相對于該末端臨邊所參照的平面夾角范圍形成如下三種狀態(tài):目標(biāo)點位于該參照平面夾角范圍內(nèi)時,則目標(biāo)點直接與前一個拐點連接;目標(biāo)點位于該參照平面夾角范圍外,且位于左夾角線外側(cè)時,該參照平面夾角所對應(yīng)的左端點作為一個拐點,其與目標(biāo)點直線連接;當(dāng)目標(biāo)點位于參照平面夾角范圍外,且位于右夾角線外側(cè)時,該參照平面夾角所對應(yīng)的右端點作為一個拐點,其與目標(biāo)點直線連接;
當(dāng)?shù)玫揭粋€拐點8后,則以該拐點重新作為新的起始點,以上述方式繼續(xù)找出下一拐點,直至下一拐點與目標(biāo)點之間不再存在拐點時,將起始點、各拐點、目標(biāo)點依次直線連接,即形成初始路徑。
結(jié)合圖2,對步驟三進(jìn)行具體舉例說明:如圖2所示,起始臨邊301的左端點4和右端點5均與起始點2連線分別形成左夾角線6和右夾角線7,左夾角線和右夾角線之間形成第一個平面夾角a;第二條臨邊的左端點、右端點均位于該平面夾角內(nèi),則更新為第二條臨邊的左端點、右端點與起始點連線形成新的左夾角線、右夾角線(其中右夾角線與起始右夾角線為同一條);第三條臨邊的左端點位于前一臨邊所參照的平面夾角范圍內(nèi),右端點位于該平面夾角范圍外,且位于右夾角線外側(cè),故第三條臨邊的左端點與起始點連線更新為新的左夾角線,右夾角線不更新;第四條臨邊的左端點位于前一臨邊所參照的平面夾角范圍內(nèi),右端點位于該平面夾角范圍外,且位于右夾角線外側(cè),故第四條臨邊的左端點與起始點連線更新為新的左夾角線,右夾角線不更新;第五條臨邊的左端點、右端點均位于前一臨邊所參照的平面夾角范圍內(nèi),故第五條臨邊的左端點、右端點分別與起始點連線更新為新的左夾角線、右夾角線;第六條臨邊的左端點位于前一臨邊所參照的平面夾角范圍外,右端點位于前一臨邊所參照的平面夾角范圍內(nèi),故第六條臨邊的右端點與起始點連線更新為新的右夾角線(該新的右夾角線與前一右夾角線為同一條);第七條臨邊的左端點、右端點均位于前一臨邊所參照的平面夾角范圍外,且位于該平面夾角的左夾角線外側(cè),故前一臨邊所參照的平面夾角的左端點(第五條臨邊的左端點)作為一個拐點8;以該拐點作為起始點,以第六條臨邊的左端點、右端點與該拐點連接形成新的平面夾角b,第七條臨邊的左端點、右端點均位于該平面夾角b范圍內(nèi),故第七條臨邊的左端點、右端點與該新的起始點連接更新為新的左夾角線、右夾角線,形成新的平面夾角;第八條臨邊為末端臨邊,目標(biāo)點位于該末端臨邊所參照平面夾角的范圍外,且位于該平面夾角的左夾角線外側(cè),故該平面夾角的左端點(第七條臨邊的左端點)作為一個拐點,該拐點與目標(biāo)點直線連接,最終得到圖中虛線所示的初始路徑。
步驟四,根據(jù)直線視線檢測法去除上述初始路徑中多余的路徑點,即:對上述起始點、拐點、目標(biāo)點分別按順序進(jìn)行排序形成一個點序列,在點序列中,當(dāng)起始點與第三個點所連成的線段未完全落入上述步驟二所形成的三角網(wǎng)格通路內(nèi)時,繼續(xù)判定第二個點與第四個點所連成的線段是否落入上述步驟二所形成的三角網(wǎng)格通路內(nèi),如果未完全落入,則繼續(xù)判定第三個點與第五個點所連成的線段是否落入上述步驟二所形成的三角網(wǎng)格通路內(nèi),以次類推;當(dāng)所述起始點與第三個點所連成的線段完全落入上述步驟二所形成的三角網(wǎng)格通路內(nèi)時,則去除點序列中的第二個點,繼續(xù)判定起始點與第四個點所連成的線段是否落入上述步驟二所形成的三角網(wǎng)格通路內(nèi),如果完全落入,則去除點序列中的第三個點,如果未完全落入,則以第三個點作為新的起始點,繼續(xù)以上述方式判定后續(xù)的點,直至去除初始路徑中多余的路徑點。例如:假設(shè)起始點、拐點、目標(biāo)點依次形成點序列為a、b、c、d、e,若ac連線的線段落入三角網(wǎng)格通路內(nèi),則路徑中的b點可以刪除優(yōu)化,再對ad連線的線段進(jìn)行判斷是否落入三角網(wǎng)格通路內(nèi),如果ad線段落入三角網(wǎng)格通路內(nèi),則路徑中的c點可以刪除優(yōu)化;如果ad線段未完全落入三角網(wǎng)格通路內(nèi),則取c點作為新的起始點,按照之前判斷ac線段的方式繼續(xù)判斷ce連線的線段是否落入三角網(wǎng)格通路內(nèi),完全落入,則路徑中的d點可以刪除優(yōu)化。依次類推,去除多余的路徑點后,剩余路徑點依次直線連接,即生成最終的路徑。