『壹』 怎麼檢測不規則圖形的碰撞。求代碼,如矩形與平行四邊形的碰撞。
很簡單啊!將平行四邊形分成兩個三角形或者兩個三角形和一個矩形不久可以了
『貳』 游戲中,使用矩形碰撞如何判斷碰撞具體位置急急急急!!!
我也碰到過這個問題,近期准備做個2D的ACT游戲,想到了一個方法。如圖:在沒碰撞之前,假設矩形B向上運動,碰撞後矩形B與矩形A相交,如果在游戲中記錄下矩形B碰撞之前的位置,若發現滿足這樣的條件(這里用rectA代表「碰撞前」矩形A,rectB代表「碰撞前」矩形B),即rectB.bottom-rectA.bottom>(rectB.bottom-rectB.top),就說明矩形B是因為「向上」運動才碰到矩形A的,這樣就可以判斷出矩形B碰撞了矩形A的底部,其他情況同理。
『叄』 一個簡單的多矩形碰撞演算法,有快於N^2的方法嗎
肯定有啊,一般這種東西都是具體情況具體分析的
一般處理碰撞可以用掃描線演算法,也就是固定解析度的長寬高掃描。這樣的話最壞復雜度取決於圖像解析度大小。如果放在數值處理上,(也就是只判斷相交與否)那麼可以首先將矩形存儲為四個頂點的坐標,然後對坐標離散化處理。之後再作掃描線。演算法復雜度會較N^2有很大提高。特別是在處理非特定數據時,演算法如果不退化的話會很快的。
『肆』 碰撞檢測.矩形,圓,扇形 之間的有沒有產生碰撞的演算法
你可以吧地圖分割成一小格一小格的(用數組表示),存在物體則該數組元素值為1,不存在則為0。移動時,檢測碰到的格子的值,就可以知道是否發生碰撞了。
『伍』 c++ 游戲碰撞檢測怎麼做
在游戲開發中,經常需要進行碰撞檢測演算法的實現,例如判斷前面是否有障礙以及判斷子彈是否擊中飛機,都是檢測兩個物體是否發生碰撞,然後根據檢測的結果通過碰撞檢測演算法做出不同的處理。
進行碰撞檢測演算法的物體可能有些的形狀和復雜,這些需要進行組合碰撞檢測,就是將復雜的物體處理成一個一個的基本形狀的組合,然後分別進行不同的檢測。
下面簡單介紹一下兩種最基本的形狀進行碰撞的時候進行的處理。
1、矩形和矩形進行碰撞檢測演算法
一般規則的物體碰撞都可以處理成矩形碰撞,實現的原理就是檢測兩個矩形是否重疊。我們假設矩形1的參數是:左上角的坐標是(x1,y1),寬度是w1,高度是h1;矩形2的參數是:左上角的坐標是(x2,y2),寬度是w2,高度是h2。
在檢測時,數學上可以處理成比較中心點的坐標在x和y方向上的距離和寬度的關系。即兩個矩形中心點在x方向的距離的絕對值小於等於矩形寬度和的二分之一,同時y方向的距離的絕對值小於等於矩形高度和的二分之一。下面是數學表達式:
x方向:| (x1 + w1 / 2) – (x2 + w2/2) | < |(w1 + w2) / 2|
y方向:| (y1 + h1 / 2) – (y2 + h2/2) | < |(h1 + h2) / 2|
在Java ME程序中,只需要將上面的條件轉換成代碼就可以實現了。
但是矩形碰撞只是一種比較粗糙的碰撞檢測演算法,因為很多實際的物體可能不是一個規則的矩形。
下面介紹一下圓形碰撞。
2、圓形和圓形的碰撞檢測演算法
圓形和圓形的碰撞應該說是一種最簡單的碰撞,因為在數學上對於兩個圓形是否發生重疊,有計算兩個圓心之間的距離的公式。那麼條件就變為:計算兩個圓心之間的距離是否小於兩個圓的半徑和。
假設圓形1的左上角坐標是(x1,y1),半徑是r1,圓形2的左上角的坐標是(x2,y2),半徑是r2。
因為MIDP1.0中沒有浮點數,而且浮點數的運算比較慢,所以我們將條件做一個簡單的變換:對於條件的兩邊都進行平方,這樣就去掉了開方的運算步驟。
下面是數學表達式:
(x1 – x2)2 + (y1 – y2)2 < (r1 + r2)2
在Java ME程序中,只需要將上面的條件轉換成代碼就可以了。
上面介紹的只是最基本的碰撞檢測演算法的實現,而實際的編程過程中遇到的碰撞檢測問題要比這些復雜很多,還需要其他形式的檢測,還需要進行更加深入的學習。
『陸』 pygame 可檢測兩矩形碰撞時,一矩形被碰撞的邊的函數
pygame.sprite.collide_rect()
『柒』 請問有什麼高效簡便的矩形碰撞演算法
那個時軸對稱aabb的碰撞,你旋轉後就不靈了,旋轉後只能視為兩個多邊形求了,要麼利用物理引擎求,要麼自己寫演算法求。如果要求效率不高,直接迭代邊求交最簡單的方法