欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于距離優(yōu)先和時空相關(guān)性的碰撞檢測方法

文檔序號:6626152閱讀:367來源:國知局
一種基于距離優(yōu)先和時空相關(guān)性的碰撞檢測方法
【專利摘要】本發(fā)明公開了一種基于距離優(yōu)先和時空相關(guān)性的碰撞檢測方法,其首先對待檢測對象構(gòu)造對應(yīng)的方向包圍盒,構(gòu)建相應(yīng)的層次包圍盒樹;遍歷上述層次包圍盒樹,在對所述包圍盒進行遍歷的過程中:首先將所述包圍盒各自對應(yīng)的根節(jié)點作為初始節(jié)點進行第一次遍歷,記錄上述包圍盒中的不相交的節(jié)點,并將所述節(jié)點記錄到跟蹤表中;當(dāng)再次進行遍歷時直接從跟蹤表中記錄的不相交的節(jié)點進行遍歷,且在再次遍歷的過程中需要對跟蹤表進行基于距離優(yōu)先和時空相關(guān)性的更新策略。本發(fā)明首先遍歷距離比較近的包圍盒,尋找最佳路徑,減少遍歷包圍盒的數(shù)目,提高了碰撞檢測的效率;并提出跟蹤表采用堆來保存,加快了碰撞檢測的效率。
【專利說明】一種基于距離優(yōu)先和時空相關(guān)性的碰撞檢測方法

【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于碰撞檢測領(lǐng)域,尤其涉及基于方向包圍盒的碰撞檢測方法,并且引入距離優(yōu)先思想和時空相關(guān)性方法。

【背景技術(shù)】
[0002]碰撞檢測方法在計算幾何,計算機動畫,仿真機器人和虛擬現(xiàn)實等領(lǐng)域都有較好的應(yīng)用前景。
[0003]近幾十年來國內(nèi)外研究人員對碰撞檢測進行了廣泛而深入的研究,已經(jīng)成熟并且被廣泛應(yīng)用的方法有空間分解法和層次包圍盒方法??臻g分解法是將整個虛擬空間劃分成相等體積小的單元,只對占據(jù)了同一單元和相鄰單元格的幾何對象進行相交測試,比較典型的例子有均勻網(wǎng)格,k-d樹,八叉樹,BSP樹??臻g分解法通常適用于稀疏環(huán)境中分布比較均勻的幾何對象間的碰撞檢測;層次包圍盒法是碰撞檢測算法中廣泛使用的一種方法,基本思想是用體積略大的幾何特征簡單包圍盒來近似地描述復(fù)雜幾何對象,通過樹狀的層次結(jié)構(gòu)逼近幾何模型,直到幾乎完全獲得對象的幾何特征,從而只需對包圍盒重疊的部分進行進一步的相交測試,典型的方法有AABB,包圍球,方向包圍盒OBB,k-DOPs。
[0004]OBB包圍盒因其具有緊密的包裹性,對包圍盒進行更新時只需要進行簡單的選擇平移操作等優(yōu)點被廣泛使用。但是OBB包圍盒也具有一定的缺陷,在遍歷OBB包圍盒樹的過程中需要進行包圍盒相交測試和三角形相交測試,如果OBB重疊,則需要進行15次測試,那么在進行OBB包圍盒樹的遍歷過程中就需要進行大量的基于包圍盒的相交測試,影響計算效率。


【發(fā)明內(nèi)容】

[0005]鑒于已有技術(shù)存在的缺陷,本發(fā)明的目的是要提供一種新型的碰撞檢測方法,本方法引入基于距離優(yōu)先和時空相關(guān)性思想,可有效減小包圍盒相交測試的數(shù)目,加快碰撞檢測的效率,繼而提聞了算法的效率。
[0006]為了實現(xiàn)上述目的,本發(fā)明的技術(shù)方案:
[0007]一種基于距離優(yōu)先和時空相關(guān)性的碰撞檢測方法,其特征在于:
[0008]1、首先對待檢測對象構(gòu)造對應(yīng)的方向包圍盒,進而構(gòu)建相應(yīng)的層次包圍盒樹;
[0009]i1、遍歷上述層次包圍盒樹,檢測待檢測對象對應(yīng)的當(dāng)前的包圍盒是否相交,在對所述包圍盒進行遍歷的過程中:首先將所述包圍盒各自對應(yīng)的根節(jié)點作為初始節(jié)點進行第一次遍歷,在進行第一次遍歷時,記錄上述包圍盒中的不相交的節(jié)點,并將所述節(jié)點記錄到跟蹤表中;當(dāng)再次進行遍歷時直接從跟蹤表中記錄的不相交的節(jié)點進行遍歷,且在再次遍歷的過程中需要對跟蹤表進行基于距離優(yōu)先和時空相關(guān)性的更新策略。
[0010]所述的跟蹤表基于距離優(yōu)先和時空相關(guān)性的更新策略包括:跟蹤表初始化過程以及跟蹤表優(yōu)化過程:
[0011 ] 所述的跟蹤表初始化過程為:
[0012]設(shè)vT為跟蹤表中第一個標(biāo)記節(jié)點,vF為活動對象根節(jié)點
[0013](8)若vT不空,則判斷vT的包圍盒和vF的包圍盒是否相交,若相交進入⑵判斷,若不相交,則進入(5);
[0014](9)如果上述兩個包圍盒相交,則判斷vT是否為葉節(jié)點,如果是葉節(jié)點,則進入
(3)判斷,否則進入⑷;
[0015](10)如果vT是葉節(jié)點,則遍歷vT相應(yīng)的包圍盒樹;
[0016](11)如果vT不是葉節(jié)點,貝U刪除這個節(jié)點,向下更新,即對于vT的每個子節(jié)點判斷前一時刻與vF不相交的內(nèi)部節(jié)點在當(dāng)前時刻是否與vF相交,若相交,則從跟蹤表中插入此節(jié)點,產(chǎn)生新的標(biāo)記節(jié)點;
[0017](12)提取跟蹤表的下一節(jié)點νΝ,判斷vN和vT是否為兄弟節(jié)點。如果vN和vT是兄弟節(jié)點,則判斷vN的包圍盒和vF的包圍盒是否相交;
[0018](13)如果vN的包圍盒和vF的包圍盒不相交,則從跟蹤表中刪除vT和νΝ,將vT和νΝ父節(jié)點加入當(dāng)前相應(yīng)的位置;
[0019](14) vT指向下一節(jié)點,直到遍歷完成整個跟蹤表的更新初始化過程;
[0020]所述的跟蹤表優(yōu)化過程是指:初始化過程之后,基于距離優(yōu)先的準(zhǔn)則,按照距離的遠(yuǎn)近由近到遠(yuǎn)對上述跟蹤表中的節(jié)點進行排序,其中所述的距離是指系統(tǒng)環(huán)境中待檢測對象的空間位移,即待檢測對象的時空相關(guān)性,在進行下次遍歷時,根據(jù)跟蹤表中按照距離進行排序的節(jié)點對對應(yīng)的包圍盒進行遍歷,并實時更新跟蹤表。
[0021 ] 進一步的,所述跟蹤表的存儲方式是二叉堆存儲方式。
[0022]進一步的,所述遍歷采用基于距離優(yōu)先和時空相關(guān)性的跟蹤表優(yōu)化的前提條件是系統(tǒng)環(huán)境中待檢測對象的其各自對應(yīng)的包圍盒的距離小于一定閾值。
[0023]進一步的,所述方法還包括設(shè)定跟蹤表的最大長度,當(dāng)跟蹤表的長度大于當(dāng)前系統(tǒng)預(yù)設(shè)的超限值時,不使用本文提出的優(yōu)化算法,直接采用二叉樹遍歷策略。
[0024]進一步的,基于上述方法在進行待測對象精確相交測試之前,即在遍歷上述跟蹤表之后,找到兩個需要遍歷的包圍盒后,首先利用預(yù)處理方法對待檢測對象對應(yīng)的包圍盒進行是否相交的初步檢測,從而避免了復(fù)雜檢測的方法,提高了效率;
[0025]所述利用預(yù)處理方法包括如下步驟:
[0026]首先通過層次遍歷,找到需要檢測對象對應(yīng)的兩個包圍盒,分別以兩個包圍盒各自中心點作為球心,分別計算兩個包圍盒的最遠(yuǎn)頂點與對應(yīng)的球心的距離得到兩個包圍盒各自的大球的半徑,記為rl,r2 ;相應(yīng)的分別以兩個包圍盒各自中心點作為球心,分別計算兩個包圍盒的最近頂點與對應(yīng)的球心的距離得到兩個包圍盒各自的小球的半徑,記為rminl, rmin2 ;
[0027]其次判斷兩個包圍盒之間的距離re與大球半徑之和、小球半徑之和的關(guān)系:當(dāng)兩個包圍盒之間的距離re大于大球半徑之和時,則上述包圍盒不會相交,返回包圍盒相交測試的結(jié)果;當(dāng)上述包圍盒之間的距離小于小球半徑之和時則上述包圍盒一定會相交,同理返回上述包圍盒相交測試的結(jié)果,不再進行分離軸測試;當(dāng)兩個上述包圍盒之間的距離re位于大球半徑之和與小球半徑之和之間時,利用分離軸的方法進行檢測。
[0028]其中計算兩個包圍盒的距離re的公式如下,因為包圍盒在不同的坐標(biāo)系下,所以需要將兩個包圍盒轉(zhuǎn)換到相同坐標(biāo)系下才能進行計算,因為算法需要計算根號,為了保證算法的正確性,在計算re時加入一定的彌補因子,保證算法的強健性,

【權(quán)利要求】
1.一種基于距離優(yōu)先和時空相關(guān)性的碰撞檢測方法,其特征在于: 1.首先對待檢測對象構(gòu)造對應(yīng)的方向包圍盒,進而構(gòu)建相應(yīng)的層次包圍盒樹; i1、遍歷上述層次包圍盒樹,檢測待檢測對象對應(yīng)的當(dāng)前的包圍盒是否相交,在對所述包圍盒進行遍歷的過程中:首先將所述包圍盒各自對應(yīng)的根節(jié)點作為初始節(jié)點進行第一次遍歷,在進行第一次遍歷時,記錄上述包圍盒中的不相交的節(jié)點,并將所述節(jié)點記錄到跟蹤表中;當(dāng)再次進行遍歷時直接從跟蹤表中記錄的不相交的節(jié)點進行遍歷,且在再次遍歷的過程中需要對跟蹤表進行基于距離優(yōu)先和時空相關(guān)性的更新策略。
2.根據(jù)權(quán)利要求1所述的基于距離優(yōu)先和時空相關(guān)性的碰撞檢測方法,其特征在于:所述的跟蹤表基于距離優(yōu)先和時空相關(guān)性的更新策略包括:跟蹤表初始化過程以及跟蹤表優(yōu)化過程: 所述的跟蹤表初始化過程為: 設(shè)vT為跟蹤表中第一個標(biāo)記節(jié)點,vF為活動對象根節(jié)點 (1)若vT不空,則判斷vT的包圍盒和vF的包圍盒是否相交,若相交進入⑵判斷,若不相交,則進入(5); (2)如果上述兩個包圍盒相交,則判斷vT是否為葉節(jié)點,如果是葉節(jié)點,則進入(3)判斷,否則進入⑷; (3)如果vT是葉節(jié)點,則遍歷vT相應(yīng)的包圍盒; (4)如果vT不是葉節(jié)點,貝U刪除這個節(jié)點,向下更新,即對于vT的每個子節(jié)點判斷前一時刻與vF不相交的內(nèi)部節(jié)點在當(dāng)前時刻是否與vF相交,若相交,貝U從跟蹤表中插入此節(jié)點,產(chǎn)生新的標(biāo)記節(jié)點; (5)提取跟蹤表的下一節(jié)點vN,判斷vN和vT是否為兄弟節(jié)點。如果vN和vT是兄弟節(jié)點,則判斷vN的包圍盒和vF的包圍盒是否相交; (6)如果vN的包圍盒和vF的包圍盒不相交,則從跟蹤表中刪除vT和vN,將vT和vN父節(jié)點加入當(dāng)前位置; (7)vT指向下一節(jié)點,直到遍歷完成整個跟蹤表的更新初始化過程; 所述的跟蹤表優(yōu)化過程是指:初始化過程之后,基于距離優(yōu)先的準(zhǔn)則,按照距離由近到遠(yuǎn)對上述跟蹤表中的節(jié)點進行排序,其中所述的距離是指系統(tǒng)環(huán)境中待檢測對象的空間位移,即待檢測對象的時空相關(guān)性,在進行下次遍歷時,根據(jù)跟蹤表中按照距離進行排序的節(jié)點對對應(yīng)的包圍盒進行遍歷,并實時更新跟蹤表。
3.根據(jù)權(quán)利要求2所述的基于距離優(yōu)先和時空相關(guān)性的碰撞檢測方法,其特征在于:所述跟蹤表的存儲方式是二叉堆存儲方式。
4.根據(jù)權(quán)利要求2所述的基于距離優(yōu)先和時空相關(guān)性的碰撞檢測方法,其特征在于:所述遍歷采用基于距離優(yōu)先和時空相關(guān)性的跟蹤表優(yōu)化的前提條件是系統(tǒng)環(huán)境中待檢測對象的其各自對應(yīng)的包圍盒的距離小于一定閾值。
5.根據(jù)權(quán)利要求2所述的基于距離優(yōu)先和時空相關(guān)性的碰撞檢測方法,其特征在于:所述方法還包括設(shè)定跟蹤表的最大長度,當(dāng)跟蹤表的長度大于當(dāng)前系統(tǒng)預(yù)設(shè)的超限值時,不使用本文提出的優(yōu)化算法,直接采用二叉樹遍歷策略。
6.根據(jù)權(quán)利要求1所述的基于距離優(yōu)先和時空相關(guān)性的碰撞檢測方法,其特征在于:基于上述方法在進行待測對象精確相交測試之前,即在遍歷上述跟蹤表之后,找到兩個需要遍歷的包圍盒后,首先利用預(yù)處理方法對待檢測對象對應(yīng)的包圍盒進行是否相交的初步檢測; 所述利用預(yù)處理方法包括如下步驟: 首先通過層次遍歷,找到需要檢測對象對應(yīng)的兩個包圍盒,分別以兩個包圍盒各自中心點作為球心,分別計算兩個包圍盒的最遠(yuǎn)頂點與對應(yīng)的球心的距離得到兩個包圍盒各自的大球的半徑,記為rl,r2 ;相應(yīng)的分別以兩個包圍盒各自中心點作為球心,分別計算兩個包圍盒的最近頂點與對應(yīng)的球心的距離得到兩個包圍盒各自的小球的半徑,記為rminl,rmin2 ; 其次判斷兩個包圍盒之間的距離re與大球半徑之和、小球半徑之和的關(guān)系:當(dāng)兩個包圍盒之間的距離re大于大球半徑之和時,則上述包圍盒不會相交,返回包圍盒相交測試的結(jié)果;當(dāng)上述包圍盒之間的距離小于小球半徑之和時則上述包圍盒一定會相交,同理返回上述包圍盒相交測試的結(jié)果,不再進行分離軸測試;當(dāng)兩個上述包圍盒之間的距離re位于大球半徑之和與小球半徑之和之間時,利用分離軸的方法進行檢測; 其中計算兩個包圍盒的距離re的公式如下,因為包圍盒在不同的坐標(biāo)系下,所以需要將兩個包圍盒轉(zhuǎn)換到相同坐標(biāo)系下才能進行計算,因為算法需要計算根號,為了保證算法的正確性,在計算re時加入一定的彌補因子,保證算法的強健性, re = ^Jix1 — x2)2 +Cy1 -y2)~ +Ui — A)2 +ε(I) 其中點(XDy1J1)和點(x2,y2,z2)分別表示將兩個球轉(zhuǎn)換至同一坐標(biāo)系下的原點坐標(biāo),ε表示彌補因子; 將兩個球坐標(biāo)系原點轉(zhuǎn)換至一個坐標(biāo)系的公式如下:
P(2)R(2->1)+T(2->1) = P(I) (2) 其中P(2)表示圖中第二個包圍盒的坐標(biāo)原點,R(2-m)和T(D1)分別表示由第二個坐標(biāo)系到第一個坐標(biāo)系的旋轉(zhuǎn)矩陣和平移矩陣,Ρω表示將第二個坐標(biāo)系中的P⑵點轉(zhuǎn)換至第一個坐標(biāo)系中的點。
【文檔編號】G06F17/50GK104200031SQ201410450418
【公開日】2014年12月10日 申請日期:2014年9月4日 優(yōu)先權(quán)日:2014年9月4日
【發(fā)明者】張強, 滿冉冉, 周東生, 魏小鵬 申請人:大連大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
温州市| 芦山县| 梅河口市| 凤山市| 丽江市| 林周县| 察隅县| 曲周县| 尉氏县| 黑水县| 盱眙县| 新平| 屏山县| 安新县| 庆云县| 乐都县| 那曲县| 缙云县| 定南县| 项城市| 彭山县| 左权县| 改则县| 政和县| 镇平县| 安福县| 九台市| 徐闻县| 永宁县| 城步| 镇平县| 万盛区| 毕节市| 通榆县| 江永县| 灵台县| 太和县| 城市| 商水县| 临沂市| 察隅县|