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