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

一種基于包圍盒樹的碰撞檢測方法

文檔序號:6353973閱讀:457來源:國知局
專利名稱:一種基于包圍盒樹的碰撞檢測方法
技術(shù)領(lǐng)域
本 發(fā)明涉及碰撞檢測方法,特別是涉及一種基于包圍盒樹的碰撞檢測方法。
背景技術(shù)
碰撞問題多年來一直受到較多的關(guān)注,碰撞檢測方法在計算幾何、計算機(jī)動畫、 CAD/CAM,仿真機(jī)器人和虛擬現(xiàn)實等領(lǐng)域中都有較好的應(yīng)用前景。近二十多年來,研究人員在碰撞檢測領(lǐng)域中做了相當(dāng)多的有意義的工作,提出一些較為成熟的方法,總體上將這些方法分為兩大類幾何分解法和分層包圍盒法。前者是將整個虛擬空間劃分為相等體積的小的單元格,只對占居了同一單元格或相鄰單元格的幾何對象進(jìn)行相交計算。比較典型的例子有八叉樹、k-d樹、BSP樹等。這類方法的特點為方法復(fù)雜、精度高。分層包圍盒的核心思想是用體積略大而幾何特性簡單的包圍盒來近似地描述復(fù)雜的幾何對象,從而通過判斷包圍盒是否重疊來粗略估計兩檢測對象是否碰撞,此外可以通過構(gòu)造樹狀分層結(jié)構(gòu)一步步逼近幾何模型,提高檢測精度。分層包圍盒由于其方法簡單、效率相對高,成為一種被廣泛應(yīng)用的碰撞檢測方法。但現(xiàn)有的動態(tài)碰撞檢測方法還存在一些問題,如檢測中會發(fā)生刺穿和遺漏等。另夕卜,傳統(tǒng)的多物體間的碰撞檢測方法一般時間復(fù)雜度為0(ri2),不能滿足實時性的要求,不利于碰撞檢測快速實現(xiàn)?;诳臻g分割技術(shù)的幾何分解方法由于分區(qū)數(shù)目較難把握,效率不高。八叉樹和其它幾何模型在解決碰撞檢測的框架之間的幾何干涉問題時,也不會大幅度提高效率。盡管也可以采用分層包圍盒技術(shù)來加速物體場景的碰撞檢測,但一般的包圍盒方法作為一個整體方法,檢測精度低,效率提高并不明顯。

發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種快速的基于包圍盒樹的碰撞檢測方法。為達(dá)到上述目的,本發(fā)明采用如下技術(shù)方案本發(fā)明首先提供一種基于包圍盒樹的碰撞檢測方法,從樹根部出發(fā)向樹枝最末端檢測,包含如下步驟步驟a 建立兩個物體的包圍盒樹;該步驟a具體包含步驟al 建立整個物體的包圍盒,該包圍盒作為該物體的包圍盒樹的根節(jié)點;步驟a2 利用與局部坐標(biāo)軸垂直的平面將上述包圍盒劃分成兩個子包圍盒以形成根節(jié)點的兩個子節(jié)點,當(dāng)所有子節(jié)點包含的基本幾何元素個數(shù)少于預(yù)先給定的葉節(jié)點所包含幾何元素個數(shù)的最小值時,轉(zhuǎn)向步驟b,否則轉(zhuǎn)向步驟a3;步驟a3 對步驟a2中得到的兩個子節(jié)點分別遞歸地執(zhí)行上述包圍盒的分割過程, 當(dāng)遞歸深度超過了預(yù)先給定的最大樹深度時,轉(zhuǎn)向步驟b,否則繼續(xù)執(zhí)向步驟a2 ;步驟b 取所述兩個物體的包圍盒樹的當(dāng)前結(jié)點兩兩之間進(jìn)行檢測,判斷是否發(fā)生碰撞,若發(fā)生碰撞,轉(zhuǎn)向步驟c,若沒碰撞,轉(zhuǎn)向步驟d ;
步驟c 判斷當(dāng)前結(jié)點是否為葉子結(jié)點,若是,進(jìn)行精確檢測確定是否真的發(fā)生碰撞,并根據(jù)檢測結(jié)果更新包含“最近距離”,“速度”,“是否碰撞”在內(nèi)的節(jié)點信息,并記錄“最近距離”在搜索樹中的路徑,記下該結(jié)點,返回;若不是葉子結(jié)點,則取它所有子結(jié)點作為該樹的當(dāng)前結(jié)點,遞歸執(zhí)行步驟b ;步驟d:如果當(dāng)前結(jié)點沒有未檢測的兄弟結(jié)點,表明沒發(fā)生碰撞,則計算包含“最近距離”,“速度”,“是否碰撞”在內(nèi)的節(jié)點信息,記下當(dāng)前結(jié)點后,返回;如果還有未檢測的兄弟結(jié)點,則依次將下兄弟結(jié)點作為該樹的當(dāng)前結(jié)點,遞歸執(zhí)行步驟b。進(jìn)一步地,所述步驟b中,對當(dāng)前結(jié)點兩兩之間進(jìn)行檢測時,系統(tǒng)可以根據(jù)優(yōu)先級鏈表的次序,依次檢測物體兩兩間的碰撞情況,該優(yōu)先級鏈表根據(jù)優(yōu)先級函數(shù)P獲得,該優(yōu)先級函數(shù)P如下
權(quán)利要求
1.一種基于包圍盒樹的碰撞檢測方法,從樹根部出發(fā)向樹枝最末端檢測,其特征在于, 該方法包含如下步驟步驟a 建立兩個物體的包圍盒樹;該步驟a具體包含 步驟al 建立整個物體的包圍盒,該包圍盒作為該物體的包圍盒樹的根節(jié)點; 步驟a2 利用與局部坐標(biāo)軸垂直的平面將上述包圍盒劃分成兩個子包圍盒以形成根節(jié)點的兩個子節(jié)點,當(dāng)所有子節(jié)點包含的基本幾何元素個數(shù)少于預(yù)先給定的葉節(jié)點所包含幾何元素個數(shù)的最小值時,轉(zhuǎn)向步驟b,否則轉(zhuǎn)向步驟a3 ;步驟a3 對步驟a2中得到的兩個子節(jié)點分別遞歸地執(zhí)行上述包圍盒的分割過程,當(dāng)遞歸深度超過了預(yù)先給定的最大樹深度時,轉(zhuǎn)向步驟b,否則繼續(xù)執(zhí)向步驟a2 ;步驟b:取所述兩個物體的包圍盒樹的當(dāng)前結(jié)點兩兩之間進(jìn)行檢測,判斷是否發(fā)生碰撞,若發(fā)生碰撞,轉(zhuǎn)向步驟c,若沒碰撞,轉(zhuǎn)向步驟d ;步驟c 判斷當(dāng)前結(jié)點是否為葉子結(jié)點,若是,進(jìn)行精確檢測確定是否真的發(fā)生碰撞, 并根據(jù)檢測結(jié)果更新包含“最近距離”,“速度”,“是否碰撞”在內(nèi)的節(jié)點信息,并記錄“最近距離”在搜索樹中的路徑,記下該結(jié)點,返回;若不是葉子結(jié)點,則取它所有子結(jié)點作為該樹的當(dāng)前結(jié)點,遞歸執(zhí)行步驟b;步驟d:如果當(dāng)前結(jié)點沒有未檢測的兄弟結(jié)點,表明沒發(fā)生碰撞,則計算包含“最近距離”,“速度”,“是否碰撞”在內(nèi)的節(jié)點信息,記下當(dāng)前結(jié)點后,返回;如果還有未檢測的兄弟結(jié)點,則依次將下兄弟結(jié)點作為該樹的當(dāng)前結(jié)點,遞歸執(zhí)行步驟b。
2.根據(jù)權(quán)利要求1所述的基于包圍盒樹的碰撞檢測方法,其特征在于,所述步驟b中, 對當(dāng)前結(jié)點兩兩之間進(jìn)行檢測時,系統(tǒng)是根據(jù)優(yōu)先級鏈表的次序,依次檢測物體兩兩間的碰撞情況,該優(yōu)先級鏈表根據(jù)優(yōu)先級函數(shù)P獲得,該優(yōu)先級函數(shù)P如下
3.根據(jù)權(quán)利要求2所述的基于包圍盒樹的碰撞檢測方法,其特征在于,當(dāng)P小于預(yù)定值時放棄該節(jié)點的檢測,并通過計數(shù)器C記錄該節(jié)點被放棄檢測的次數(shù),若計數(shù)器C超過了預(yù)設(shè)值,則系統(tǒng)檢測該節(jié)點,并將計數(shù)器清零。
4.一種基于包圍盒樹的碰撞檢測方法,從樹枝最末端出發(fā)向樹根部檢測,其特征在于, 該方法包含如下步驟步驟e 建立兩個物體的包圍盒樹;該步驟e具體包含 步驟el 建立整個物體的包圍盒,該包圍盒作為該物體的包圍盒樹的根節(jié)點; 步驟e2 利用與局部坐標(biāo)軸垂直的平面將上述包圍盒劃分成兩個子包圍盒以形成根節(jié)點的兩個子節(jié)點,當(dāng)所有子節(jié)點包含的基本幾何元素個數(shù)少于預(yù)先給定的葉節(jié)點所包含幾何元素個數(shù)的最小值時,轉(zhuǎn)向步驟f,否則轉(zhuǎn)向步驟e3 ; 步驟e3 對步驟e2中得到的兩個子節(jié)點分別遞歸地執(zhí)行上述包圍盒的分割過程,當(dāng)遞歸深度超過了預(yù)先給定的最大樹深度時,轉(zhuǎn)向步驟f,否則繼續(xù)執(zhí)向步驟e2 ; 步驟f 將已經(jīng)檢測到發(fā)生碰撞的結(jié)點,作為當(dāng)前結(jié)點;步驟g 檢測當(dāng)前結(jié)點是否發(fā)生碰撞,如發(fā)生,則方法結(jié)束返回,若沒碰撞,轉(zhuǎn)向步驟h ; 步驟h 對當(dāng)前節(jié)點的兄弟節(jié)點進(jìn)行碰撞檢測,若發(fā)生碰撞,則方法結(jié)束;若未發(fā)生碰撞,則將父節(jié)點作為當(dāng)前節(jié)點,進(jìn)入包圍盒樹的更高一層,并轉(zhuǎn)入步驟g。
5.根據(jù)權(quán)利要求4所述的基于包圍盒樹的碰撞檢測方法,其特征在于,所述步驟g中, 對當(dāng)前結(jié)點兩兩之間進(jìn)行檢測時,系統(tǒng)是根據(jù)優(yōu)先級鏈表的次序,依次檢測物體兩兩間的碰撞情況,該優(yōu)先級鏈表根據(jù)優(yōu)先級函數(shù)P獲得,該優(yōu)先級函數(shù)P如下
6.根據(jù)權(quán)利要求5所述的基于包圍盒樹的碰撞檢測方法,其特征在于,當(dāng)P小于預(yù)定值時放棄該節(jié)點的檢測,并通過計數(shù)器C記錄該節(jié)點被放棄檢測的次數(shù),若計數(shù)器C超過了預(yù)設(shè)值,則系統(tǒng)檢測該節(jié)點,并將計數(shù)器清零。
7.根據(jù)權(quán)利要求6所述的基于包圍盒樹的碰撞檢測方法,其特征在于,物體的樹根部的根節(jié)點具有超時計數(shù)器Cr,每對該物體進(jìn)行一次自下而上的搜索就將計數(shù)器Cr的值加一,若計數(shù)器Cr的值超過預(yù)設(shè)的定值,就對該物體進(jìn)行權(quán)利要求1-3任一項所述的方法。
8.一種基于包圍盒樹的碰撞檢測方法,從樹枝最末端出發(fā)向樹根部檢測,其特征在于, 該方法包含如下步驟步驟i 將根據(jù)權(quán)利要求1-3任一項所述的方法生成的“最近距離”路徑,在兩物體的最底層選擇具有“最近距離”的兩節(jié)點作為當(dāng)前節(jié)點;步驟j 檢測當(dāng)前結(jié)點是否發(fā)生碰撞,如發(fā)生,則返回,若沒碰撞,轉(zhuǎn)向步驟i ; 步驟k:對當(dāng)前節(jié)點的兄弟節(jié)點進(jìn)行碰撞檢測,若發(fā)生碰撞,則方法結(jié)束;若未發(fā)生碰撞,則將父節(jié)點作為當(dāng)前節(jié)點,進(jìn)入包圍盒樹的更高一層,并轉(zhuǎn)入步驟j。
9.根據(jù)權(quán)利要求8所述的基于包圍盒樹的碰撞檢測方法,其特征在于,所述步驟j中, 對當(dāng)前結(jié)點兩兩之間進(jìn)行檢測時,系統(tǒng)是根據(jù)優(yōu)先級鏈表的次序,依次檢測物體兩兩間的碰撞情況,該優(yōu)先級鏈表根據(jù)優(yōu)先級函數(shù)P獲得,該優(yōu)先級函數(shù)P如下
10.根據(jù)權(quán)利要求9所述的基于包圍盒樹的碰撞檢測方法,其特征在于,當(dāng)P小于預(yù)定值時放棄該節(jié)點的檢測,并通過計數(shù)器C記錄該節(jié)點被放棄檢測的次數(shù),若計數(shù)器C超過了預(yù)設(shè)值,則系統(tǒng)檢測該節(jié)點,并將計數(shù)器清零。
11.根據(jù)權(quán)利要求10所述的基于包圍盒樹的碰撞檢測方法,其特征在于,物體的樹根部的根節(jié)點具有超時計數(shù)器Cr,每對該物體進(jìn)行一次自下而上的搜索就將計數(shù)器Cr的值加一,若計數(shù)器Cr的值超過預(yù)設(shè)的定值,就對該物體進(jìn)行權(quán)利要求1-3任一項所述的方法。
全文摘要
本發(fā)明提供一種基于包圍盒樹的碰撞檢測方法,從樹根部出發(fā)向樹枝最末端檢測,該方法包含步驟a建立兩個物體的包圍盒樹;步驟b取兩個物體的包圍盒樹的當(dāng)前結(jié)點兩兩之間進(jìn)行檢測,判斷是否發(fā)生碰撞,若發(fā)生碰撞,轉(zhuǎn)向步驟c,否則,轉(zhuǎn)向步驟d;步驟c判斷當(dāng)前結(jié)點是否為葉子結(jié)點,若是,記下該結(jié)點,返回,并進(jìn)行精確檢確定是否真的發(fā)生碰撞。否則,取它所有子結(jié)點作為該樹的當(dāng)前結(jié)點,遞歸執(zhí)行步驟b;步驟d如果當(dāng)前結(jié)點沒有未檢測的兄弟結(jié)點,則計算包含“最近距離”,“速度”,“是否碰撞”在內(nèi)的節(jié)點信息,記下當(dāng)前結(jié)點,返回;否則依次將下個兄弟結(jié)點作為該樹的當(dāng)前結(jié)點,遞歸執(zhí)行步驟b。本發(fā)明還提供一種從樹枝最末端出發(fā)向樹根部檢測的方法。
文檔編號G06F11/00GK102446122SQ20111043379
公開日2012年5月9日 申請日期2011年12月21日 優(yōu)先權(quán)日2011年12月21日
發(fā)明者熊玉梅 申請人:上海電機(jī)學(xué)院
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
泽普县| 波密县| 绥中县| 商南县| 思南县| 辉南县| 玉林市| 宜丰县| 尤溪县| 石台县| 张掖市| 文登市| 繁昌县| 托里县| 轮台县| 会东县| 太和县| 常德市| 于都县| 固原市| 锡林浩特市| 开封市| 黄陵县| 敦化市| 曲周县| 灵川县| 时尚| 宜都市| 南阳市| 平南县| 桓台县| 灯塔市| 黄骅市| 玉树县| 红河县| 崇礼县| 辽阳县| 鸡东县| 中方县| 高陵县| 莫力|