版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
碰撞檢測教程(C++)碰撞檢測教程(C++)碰撞檢測教程(C++)碰撞檢測教程(C++)編制僅供參考審核批準(zhǔn)生效日期地址:電話:傳真:郵編:簡介本文是闡述如何在2D動作游戲中進行精確而高效的碰撞檢測。這里的碰撞是基于多邊形而不是基于精靈的。這兩者之間在設(shè)計上會有不同?;诰`的碰撞檢測是通過精靈之間的重疊的像素來完成的。而多邊形使用向量數(shù)學(xué)來精確計算交點,時間和碰撞方向。雖然多邊形僅僅是精靈的一個近似,但是它比精靈系統(tǒng)要高級。可以精確模擬逼真的簡單物理學(xué),例如反彈,摩擦,斜面的滑行碰撞檢測可以更精確的用于高速精靈系統(tǒng)。在基于精靈的系統(tǒng)中,如果物體移動過快就會在跳過另一個物體?;谙蛄繑?shù)學(xué)因此可以擴展到3D,然而精靈碰撞系統(tǒng)被嚴(yán)格限制在2D的情況下。特性本文使用的算法只適用于凸多邊形,例如三角形,四邊形,六邊形,圓形。對于非凸多邊形,你可以將其分解為多個凸多邊形,例如三角形。算法可以用于快速移動或慢速移動的多邊形。不管物體移動多快,碰撞都不會丟失。它也可以處理重疊的問題,并促使交疊物體分離。演示也支持分割多邊形交叉。這可以用于子彈的建模。同時提供了簡單的物體系統(tǒng),彈力,一些基本的摩擦和靜摩擦力。用于確保物體不會從斜面上滑落。有一個剛體系統(tǒng)的例子,使用了ChrsiHecker的物理教程。限制有序碰撞。就是說并不是有序的進行碰撞。這對于快速移動的物體會出現(xiàn)一定的問題。一旦碰撞被檢測到,它就被直接處理了。理想狀態(tài)下你可能需要找到一個碰撞點并處理它,然后尋找更多的碰撞。但是對于2D動作游戲,這通常是不必要的。一、分離坐標(biāo)軸方法這個方法是碰撞檢測的核心。它的規(guī)則非常簡單并且非常易于實現(xiàn)。這個方法也非??觳⑶曳浅?煽?,因為計算中沒有使用除法操作,下面給出一個簡單的基于兩個BOX的碰撞檢測的例子。算法試圖在兩個物體之間找到一個合適平面,如果這個平面存在,那么物體就沒有相交。為了測試物體是否是分開的,簡單的方法是投影這個物體到平面的法線上,并比較兩者之間的間距看二者是否重疊。顯然有無數(shù)的平面可以用來分割兩個物體。但是已經(jīng)經(jīng)過證明的是:你只需要使用一部分平面來進行測試,對于BOX從上圖中可以看出平面的法線為BOXB的長軸。對于BOX來說需要測試的分割平面是那些法線等于兩個BOX的軸向的平面。因此對于兩個BOX來說,你只需要測試4個分割平面即可。在這四個平面里,一旦發(fā)現(xiàn)一個分割平面可以分割BOX那么你就可以斷定這兩個BOX是不相交的。如果四個平面都不能分割BOX,那么這兩個BOX一定是相交的,也就是出現(xiàn)了碰撞??梢詳U展這個算法到普通的多邊形,算法是相同的,只用需要測試的平面的數(shù)量改變了。并且分割平面在每個多邊形邊的垂直方向上又有一個法線。在下圖中,你可以看到兩個分割平面用于測試。在紅色的平面上你可以看到兩個間隔是重疊的。然而,在藍色的平面上間隔是不重疊的,因此,藍色的平面的是分割平面,因此物體是不相交的?,F(xiàn)在,我們有一個算法來檢測兩個多邊形是否是相交的。代碼可以分為三個部分:a) 生成需要測試的分離軸b) 計算每一個多邊形在分離軸法線上的投影c) 檢測這些投影是否相交boolIntersect(PolygonA,PolygonB){for(I=0;I<;I++){VectorN=Vector[I].y,[I].x);if(AxisSeparatePolygons(N,A,B))returnfalse;}for(I=0;I<;I++){VectorN=Vector[i].y,[I].x);if(AxisSeparatePolygons(N,A,B))returnfalse;}returntrue;}voidCalculateInterval(VectorAxis,PolygonP,float&min,float&max){floatd=Axisdot[0];num_vertices;J=I,I++){
VectorE=[I]-[J];Axis[iNumAxis++]=Vector,;if(AxisSeparatePolygons(N,A,B))returnfalse;}for(J=B.num_vertices-1,I=0;I<;J=I,I++){
VectorE=[I]-[J];Axis[iNumAxis++]=Vector,;if(AxisSeparatePolygons(N,A,B))returnfalse;}
ormalise();N))*N理想狀態(tài)下,碰撞前后粒子的能量是相同的。但是我們可以給粒子的碰撞加入彈性系數(shù)V’=V-((1+elasticity)*(V.N))*N彈性系數(shù)的范圍為[0,1]如果為零意味著粒子將沿著平面滑動,如果為1,粒子將沒有能量損耗的彈開。同樣我們可以加入一些摩擦。如果我們沿著碰撞的法線和碰撞平面方向分解速度,我們可以同時計算彈性系數(shù)和摩擦力。這里,速度被沿著平面的法向和平面分解。彈性系數(shù)將影響沿著平面法向的響應(yīng)(Vn),摩擦力將影響速度的切向(Vt)。同樣摩擦系數(shù)的范圍為[0,1].0意味著沒有摩擦力,1意味著粒子將突然停止。Vn=(V.N)*N;Vt=V-Vn;V’=Vt*(1-friction)+Vn
*-(elasticity);對于靜摩擦力,簡單地在速度Vt小于給定的值時設(shè)置Vt為(0,0),或者設(shè)置摩擦系數(shù)稍微比1大?,F(xiàn)在,計算兩個物體間的碰撞響應(yīng)。原理是相同的。然而,計算是基于物體的相對速度的,物體將象上述一樣受到影響。結(jié)果將添加到每一個物體上?,F(xiàn)在我們需要修改一下系數(shù),因為現(xiàn)在我們使用了相對的概念VectorV=Va-Vb;N)*N;Vt=V-Vn;if()<friction=; ||表示求模運算。在2D中表示向量的長度??梢允褂孟旅娴墓礁鶕?jù)組成多邊形材質(zhì)的密度來計算慣量這里:P是密度,N是頂點數(shù),Pn是多邊形的頂點,||..||表示求模,從上述方程中,你可以推理出計算質(zhì)量的等式。該系統(tǒng)的其它模式是處理交疊。這可以避免一個物體陷入另一個物體,因為使用推力計算在低速的時候是非常不精確的。為了解決交疊問題,即簡單的方法是沿著碰撞法線根據(jù)碰撞深度將物體推開。當(dāng)然只有在檢測到交疊的時候才使用它。?為了使它更為精確,物體的移動應(yīng)該依賴于它們質(zhì)量的比率,因此較輕的物體應(yīng)該移動更多,而較重的物體移動較少,當(dāng)然具有無窮大質(zhì)量的物體是不會移動的。?至于摩擦力,基本的是動態(tài)摩擦力,它將沿著物體速度的反向添加一個力,大小為||u*Jn||其中u是動摩擦系數(shù)Jn是壓力。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 17 他們那時候多有趣啊 教學(xué)設(shè)計-2023-2024學(xué)年語文六年級下冊統(tǒng)編版
- Module5 Unit 2 It describes the changes in Chinese society.教案-2024-2025學(xué)年外研版八年級上冊英語
- 神奇的微生物-科普.課件
- 物流與供應(yīng)鏈案例之歐莎服飾區(qū)域倉配一體化解決方案
- 網(wǎng)球私教課合同模板
- 《整數(shù)指數(shù)冪》課件-人教版八年級數(shù)學(xué)上冊
- 遼寧省本溪市(2024年-2025年小學(xué)四年級語文)人教版隨堂測試(下學(xué)期)試卷及答案
- 汽車公證贈與合同模板
- 粵教版四年級勞動與技術(shù) 第二單元 小泥巴變變變 活動2 泥塑杯子 教案
- 2024-2025學(xué)年遼寧省五校高三化學(xué)試題大數(shù)據(jù)訓(xùn)練卷含解析
- 哈爾濱師范大學(xué)學(xué)生教學(xué)信息員意見反饋表
- 建筑工地環(huán)境保護方案
- 澳洲簽證-在校證明-常規(guī)版(模板)
- 高密度聚乙烯(hdpe)工字雙壁纏繞管室外排水管道工程技術(shù)規(guī)程_secret
- 節(jié)能知識培訓(xùn)課件
- 《回憶魯迅先生》知識點整理(共4頁)
- 機械手自動控制系統(tǒng)的PLC實現(xiàn)方法研究設(shè)計(有cad源圖+開題報告+文獻綜述等)軟件部分
- 超市儲備干部培養(yǎng)計劃
- 微波測量概述及信號源測量技術(shù):4微波頻譜分析儀工作原理第四章
- 數(shù)控加工市級技能大師工作室的申報報告
- 蘇教版小學(xué)一年級語文上冊生字表描紅
評論
0/150
提交評論