Navigation Mesh與Line-of-Sight Test

上圖是一個(gè)由任意凸多邊形構(gòu)成的導(dǎo)航網(wǎng)格踢关,白線(xiàn)包圍區(qū)域代表著不可進(jìn)入的障礙區(qū)域勺馆,紅線(xiàn)包圍區(qū)域則可以進(jìn)入或穿越咐鹤。網(wǎng)格中所有多邊形的頂點(diǎn)存儲(chǔ)次序均為順時(shí)鐘序拗秘。在下面的討論中,我們的運(yùn)算一概采用左手系進(jìn)行祈惶。

假設(shè)當(dāng)前所處的位置為p0雕旨,視線(xiàn)方向矢量為n0,p0位于多邊形A中捧请,我們知道每一條邊的兩側(cè)的多邊形的編號(hào)凡涩,現(xiàn)在的問(wèn)題是:如果求得該視線(xiàn)途經(jīng)了哪些多邊形?與這些多邊形的哪些邊相交于何處(即Way point)疹蛉?該視線(xiàn)終結(jié)于哪條邊的何處活箕?

首先讓我們來(lái)解決一個(gè)子問(wèn)題,即判斷射線(xiàn)r與某凸多邊形p之間的關(guān)系可款。不難想象育韩,r只可能與p不相交、相交于1點(diǎn)或2點(diǎn)(只有穿出筑舅、或先射入后穿出)座慰。這里我們最關(guān)心的是:(1) r究竟與p相交否?(2) 如果相交翠拣,那么r穿出p時(shí)版仔,其交點(diǎn)在哪條邊上?在哪里?

以A和射線(xiàn)r=(p0,n0)為例蛮粮,先來(lái)判斷A與r是否相交益缎,這個(gè)太容易了,只需判斷A有沒(méi)有邊與r相交即可然想。遍歷A的每一條邊e莺奔,然后得到每一條邊的起點(diǎn)和終點(diǎn)(注意,時(shí)刻牢記頂點(diǎn)順序是順時(shí)鐘的)变泄。然后令哟,分別獲得起點(diǎn)矢量from和終點(diǎn)矢量to,然后計(jì)算test_a=from×n0和test_b=to×n0妨蛹,再來(lái)檢查test_a和test_b的Z分量符號(hào):如果相同屏富,則from、to均位于n0的同一側(cè)蛙卤,e與r不相交狠半;如果test_a.Z>0且test_b.Z<0,則e為射線(xiàn)r在A中的穿出線(xiàn)颤难;如果test_a.Z<0且test_b.Z>0神年,則要么e是射線(xiàn)的反方向與A的交線(xiàn),要么e為射線(xiàn)在A中的射入邊行嗤。這里已日,我們最關(guān)心的是有沒(méi)有test_a.Z>0且test_b.Z<0的情況,即有沒(méi)有穿出邊昂验。

如圖捂敌,如果要對(duì)r進(jìn)行LOS test,首先我們要判斷一下p0處于哪個(gè)多邊形既琴,這個(gè)點(diǎn)與多邊形關(guān)系的判斷也很容易,這里泡嘴,我們的p0位于A中甫恩。然后,在A中找射線(xiàn)r的穿出邊和穿出點(diǎn)(求兩射線(xiàn)的交點(diǎn)酌予,trivial)磺箕,判斷穿出邊的另一側(cè)的多邊形是否可以進(jìn)入?如果是障礙或網(wǎng)格邊緣抛虫,則LOS test中止松靡,如果不是,則獲得穿出邊另一側(cè)的多邊形編號(hào)建椰,這里是B雕欺,然后繼續(xù)在B中找射線(xiàn)r的穿出邊和穿出點(diǎn),繼續(xù)前面的一系列步驟,直到找出r的所有途經(jīng)多邊形屠列、所有穿出邊和穿出點(diǎn)為止啦逆。以上便是一次完整的視線(xiàn)檢測(cè)過(guò)程。是不是足夠簡(jiǎn)單笛洛?heh

如何判斷點(diǎn)p0是否處于凸多邊形內(nèi)?

見(jiàn)上圖夏志,這里我們采用叉乘法,雖說(shuō)只適用于凸多邊形苛让,不過(guò)計(jì)算最簡(jiǎn)便沟蔑,不涉及三角運(yùn)算(內(nèi)角和法)和開(kāi)方(面積法),什么水平垂直交叉線(xiàn)檢測(cè)就直接免了吧狱杰,too ugly瘦材。假設(shè)多邊形是順時(shí)鐘頂點(diǎn)序,我們采用的是左手系浦旱。遍歷每條邊宇色,作一個(gè)邊矢量e,從起點(diǎn)到終點(diǎn)颁湖;然后作測(cè)試矢量t宣蠕,從邊起點(diǎn)到要測(cè)試的點(diǎn)p0;計(jì)算test=e×t甥捺,如果test矢量的Z分量符號(hào)始終保持不變抢蚀,則p0處于多邊形內(nèi)部;一旦其符號(hào)發(fā)生了改變(只需檢測(cè)到一次符號(hào)改變即可)镰禾,則p0處于多邊形外部皿曲。

導(dǎo)航網(wǎng)格和LOS檢測(cè)用來(lái)干什么的?

導(dǎo)航網(wǎng)格一般用來(lái)做層級(jí)式A*尋徑,它可以很容易地推廣到3D路徑規(guī)劃吴侦,與某些附加特性相配合屋休,能夠?qū)崿F(xiàn)更多的特殊用途;LOS檢測(cè)主要有兩個(gè)用途:動(dòng)態(tài)局部Point of View尋徑和A*路徑優(yōu)化(平滑+Cutting the Corner)备韧。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末劫樟,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子织堂,更是在濱河造成了極大的恐慌叠艳,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件易阳,死亡現(xiàn)場(chǎng)離奇詭異附较,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)潦俺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)拒课,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)徐勃,“玉大人,你說(shuō)我怎么就攤上這事捕发∈柚迹” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵扎酷,是天一觀的道長(zhǎng)檐涝。 經(jīng)常有香客問(wèn)我,道長(zhǎng)法挨,這世上最難降的妖魔是什么谁榜? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮凡纳,結(jié)果婚禮上窃植,老公的妹妹穿的比我還像新娘。我一直安慰自己荐糜,他們只是感情好巷怜,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著暴氏,像睡著了一般延塑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上答渔,一...
    開(kāi)封第一講書(shū)人閱讀 52,441評(píng)論 1 310
  • 那天关带,我揣著相機(jī)與錄音,去河邊找鬼沼撕。 笑死宋雏,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的务豺。 我是一名探鬼主播磨总,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼笼沥!你這毒婦竟也來(lái)了舍败?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤敬拓,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后裙戏,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體乘凸,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年累榜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了营勤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片灵嫌。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖葛作,靈堂內(nèi)的尸體忽然破棺而出寿羞,到底是詐尸還是另有隱情,我是刑警寧澤赂蠢,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布绪穆,位于F島的核電站,受9級(jí)特大地震影響虱岂,放射性物質(zhì)發(fā)生泄漏玖院。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一第岖、第九天 我趴在偏房一處隱蔽的房頂上張望难菌。 院中可真熱鬧,春花似錦蔑滓、人聲如沸郊酒。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)燎窘。三九已至,卻和暖如春杠纵,著一層夾襖步出監(jiān)牢的瞬間荠耽,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工比藻, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留铝量,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓银亲,卻偏偏與公主長(zhǎng)得像慢叨,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子务蝠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容