2013-08-24 65 views
0

我使用創建「球」的對象,其僅僅具有位置,速度和加速度矢量以及一個直徑橢圓Processing.js運行一個簡單的草圖在HTML5畫布。在繪圖函數中,我調用一個名爲applyPhysics()的函數,它循環遍歷一個hashmap中的每個球,並相互檢查它們以查看它們的位置是否使它們崩潰。如果他們這樣做,他們的速度向量是相反的。高效碰撞檢測

長話短說,因爲它是現在計算的數量是(球的數量)^ 2,最終成爲了很多,當我去到數百個球。使用這種檢查會減慢草圖太多,所以我正在尋找其他方式進行智能碰撞的方法。

有什麼建議嗎?不知何故使用PGraphics?

回答

1

我假設你已經通過將橢圓看作是圓來簡化物理過程。

除此之外,檢查了四叉樹碰撞檢測:

http://gamedev.tutsplus.com/tutorials/implementation/quick-tip-use-quadtrees-to-detect-likely-collisions-in-2d-space/

我不知道你的項目,但如果球有非隨機的力量應用到它們(如重力加速度),你可以使用預測分析也。

+0

是的圓圈,我喜歡四叉樹算法!謝謝!我現在開始嘗試實現它。 – ZekeDroid

0

如果網格的空間,並創建一個數據結構,反映了這一點(例如,行陣列對象,每個包含列的陣列對象,每個球容納對象的ArrayList),也可以只考慮在每個小區內的相互作用(或也與相鄰的小區)。您可以爲跨越邊界的球重新分配數據位置。那麼你的交互就會少得多。