因此我決定查找一些碰撞檢測,但我一直無法找到有關兩幅圖像之間的二維碰撞檢測的正確信息 ,包括如何正確地避免檢測透明的 區域的圖像,但我沒有找到一個我自己附加的帖子,但問題是,我不 真正理解這個帖子,也不明白他爲什麼做這些事情...忽略透明零件的2D碰撞檢測
這裏的帖子問題:https://stackoverflow.com/posts/336615/revisions
所以首先我想問這個解決方案是否是實際的一個好的/適當的,或者我應該看看其他地方。
其次,我想知道他在帖子中提到使用整數數組,而不是2d數組,看起來, 設置1和0來決定像素是否透明或不,但我真的不知道如何我認爲 來實現這一目標。起初,我認爲它可以通過只形成1和0的字符串並將其轉換爲長 來實現,但即使僅具有25的圖像寬度,Long也會得到...太長...
我也試過這個沒有運氣,因爲代碼不符合此陣列功能:如
long[] array = new long[30*30]; // height * width of the image
int x = 0;
int y = 0;
for(int i = 0; i<30*30; i++){
if(image.getRGB(x,y) == 0){
array[i] = 0;
}
else{ array[i] = 1; }
x++;
if (x==30){
y++;
x=0;
}
}
第三,我希望有人能解釋也許全過程,以及爲什麼他做的事情,是必要的。順便說一句,我知道那些聰明的操作員是如何工作的! 換句話說,我不明白他在代碼中做所有事情的思路/動機,我想了解所有這些!
我真的不知道該怎麼現在嘿嘿繼續...
除非您有非常特殊的要求(例如,使用基元很難描述非常不規則的形狀),測試與碰撞幾何體的碰撞更快,更直接,更有可能產生有用的結果。 「其次,我想知道,在他的文章中,他提到了使用整數數組,而不是2d數組,看起來」您可以使用一維數組來表示二維數據:int arr [H] [W] => int arr [H * W ],arr [y] [x] => arr [y * W + x]。 – Cubic 2012-08-04 20:57:12
什麼是碰撞幾何?谷歌搜索不給太多! 即便如此,我仍然想了解代碼。我試圖用1和0填充一個數組[h * x],但是在代碼中實現時,它不起作用。我真的很想理解代碼,但我不明白他所做的事情的過程/動機,我試圖找出它,但沒有運氣! – Deragon 2012-08-05 15:28:48
他在做什麼是檢查與位掩碼的衝突。 (谷歌應該產生相關的結果)。碰撞幾何僅僅是幾何 - 而不是想着「這兩個圖像是否碰撞」,認爲「做這些矩形/三角形/圓形/這些碰撞的任意組合」。優點是這比使用位掩碼更快(例如,如果它們的距離小於它們的半徑的總和,則兩個2D圓相互碰撞),並且還產生如下結果:「我必須應用於該對象的最小偏移是什麼它不會再相撞「。在這裏考慮分離軸定理。 – Cubic 2012-08-05 16:18:05