2014-08-30 79 views
0

如何有效檢測圖像層和生成的形狀之間的碰撞?圖像層和形狀之間的碰撞檢測

我需要一個快速和全面的方法來檢測可旋轉圖像層和生成的形狀之間的碰撞。

到目前爲止,我已經將圖像分成一系列包含大多數像素的圓圈,然後針對其他形狀測試每個圓圈。爲了提高性能,我在每個結構周圍創建了外圍圓,只測試這些較大的圓,直到兩個結構足夠接近以便發生碰撞。

真正的問題是,例如,將可旋轉的矩形碰撞到這些圖像結構之一是非常困難的。用圓圈填充矩形看起來效率不高。更何況,我正在組合爆炸,使循環非常複雜和糟糕的表現。

任何人都知道更好的方式來處理這種類型的碰撞?我用Java,Python和C編寫。我也願意使用C++。

+0

我在gamedev.SE上看到類似的問題,確保你瀏覽了該網站 – 2014-08-31 00:09:02

回答

0

通常情況下,球體碰撞只是真正的碰撞測試的過濾器。

您可以:

  • 決定碰撞限制,例如,如果它是一個遊戲。
  • 實現真正的碰撞,並做完整的數學。你基本上是相交兩個矩形的旋轉邊緣(16例)。相交兩條邊就好像它們是直線一樣,只會有一個交點(除非它們是平行的),如果該點位於該段內,則會發生碰撞。

要限制複雜性,可以使用四叉樹/八叉樹。將你的空間分成四個矩形,然後把這些矩形分成四個等等,直到它們太小而不能包含對象或是空的。將可碰撞物體放入樹中最具特色的部分,它們將包含它們。如果兩個物體在同一個子矩形中,或者一個在另一個的父級中,則只能碰撞。

不確定有幫助,但它們是想法。