自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

碰撞檢測算法在Java ME中的實現

開發(fā) 后端 算法
在Java ME開發(fā)中經常會碰到碰撞檢測算法的實現問題,本文向您介紹兩種實現碰撞檢測算法的方法,包括矩形和矩形進行碰撞、圓形和圓形的碰撞。

在Java ME游戲開發(fā)中,經常需要進行碰撞檢測算法的實現,例如判斷前面是否有障礙以及判斷子彈是否擊中飛機,都是檢測兩個物體是否發(fā)生碰撞,然后根據檢測的結果通過碰撞檢測算法做出不同的處理。

進行碰撞檢測算法的物體可能有些的形狀和復雜,這些需要進行組合碰撞檢測,就是將復雜的物體處理成一個一個的基本形狀的組合,然后分別進行不同的檢測。

下面簡單介紹一下兩種最基本的形狀進行碰撞的時候進行的處理。

1、矩形和矩形進行碰撞檢測算法

一般規(guī)則的物體碰撞都可以處理成矩形碰撞,實現的原理就是檢測兩個矩形是否重疊。我們假設矩形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程序中,只需要將上面的條件轉換成代碼就可以實現了。

但是矩形碰撞只是一種比較粗糙的碰撞檢測算法,因為很多實際的物體可能不是一個規(guī)則的矩形。

下面介紹一下圓形碰撞。

2、圓形和圓形的碰撞檢測算法

圓形和圓形的碰撞應該說是一種最簡單的碰撞,因為在數學上對于兩個圓形是否發(fā)生重疊,有計算兩個圓心之間的距離的公式。那么條件就變?yōu)椋河嬎銉蓚€圓心之間的距離是否小于兩個圓的半徑和。

假設圓形1的左上角坐標是(x1,y1),半徑是r1,圓形2的左上角的坐標是(x2,y2),半徑是r2。

因為MIDP1.0中沒有浮點數,而且浮點數的運算比較慢,所以我們將條件做一個簡單的變換:對于條件的兩邊都進行平方,這樣就去掉了開方的運算步驟。

下面是數學表達式:

(x1 – x2)2 + (y1 – y2)2 < (r1 + r2)2

在Java ME程序中,只需要將上面的條件轉換成代碼就可以了。

上面介紹的只是最基本的碰撞檢測算法的實現,而實際的編程過程中遇到的碰撞檢測問題要比這些復雜很多,還需要其他形式的檢測,還需要進行更加深入的學習。

 

【編輯推薦】

  1. Java ME多模搜索技術初探
  2. 如何解決Java ME設備碎片問題
  3. J2ME中setClip方法的使用詳解
  4. 用NetBeans平臺開發(fā)J2ME游戲實例講解
  5. 淺談J2ME與JSP實現通信技巧
責任編輯:佚名 來源: IT168
相關推薦

2023-03-13 13:35:00

幾何算法矩形碰撞檢測

2022-12-26 07:37:14

四叉樹Canvas

2020-10-18 07:15:53

Python異常檢測算法開發(fā)

2013-06-17 09:12:31

Unity3D

2020-11-02 11:24:52

算法人臉識別技術

2024-04-28 11:42:39

Python模型數據

2017-09-20 16:25:00

深度學習視覺領域計算機

2018-09-17 15:30:05

機器學習密度異常值

2024-05-30 12:50:54

2024-04-26 10:00:03

自動駕駛模型

2020-11-10 15:22:46

算法PythonIoU

2018-01-23 16:16:03

開源技術 Facebook

2020-12-24 19:01:14

iForest大數據檢測算法

2023-11-13 22:17:54

YOLO-NAS目標檢測

2024-06-05 09:26:50

2023-07-14 07:15:13

2009-03-09 09:01:35

架構J2EESOA

2022-03-07 10:04:09

機器學習訓練模型

2012-04-17 12:44:38

cocos2d-x

2020-11-02 13:44:35

算法數據科學Python
點贊
收藏

51CTO技術棧公眾號