2013-04-10 48 views
-2

我正在製作一個Java 3D遊戲,你可以在其他球上跳球。除了球員球和敵人球之間的碰撞之外,我已經找到了一切。我發現我可以檢查球體中心之間的距離是否小於其半徑的總和,但問題是我不知道如何去做;如果有人知道我如何檢查球的總和,我會非常感激你告訴我。非零半徑球體之間的碰撞檢測

+3

哪個部分特別是你在掙扎? – NPE 2013-04-10 13:24:31

+0

我真的不明白這個問題......你在3D空間中有兩點:球體的中心。你知道他們的半徑。所以問題是如何計算三維歐氏空間中兩點之間的距離? – 2013-04-10 13:24:48

+1

請參閱http://mathworld.wolfram.com/Sphere-SphereIntersection.html – 2013-04-10 13:25:41

回答

0

比方說,你有球的容器類,它包含有關它們的信息:

private class Sphere{ 
     public float x; 
     public float y; 
     public float z; 
     public float radius; 
    } 

現在你必須使用畢達哥拉斯用於計算兩個球體中心之間距離的3D空間定理:

public boolean areColiding(Sphere s1, Sphere s2){ 
     float dist = (float) Math.sqrt((s1.x - s2.x) * (s1.x - s2.x) + 
             (s1.y - s2.y) * (s1.y - s2.y) + 
             (s1.z - s2.z) * (s1.z - s2.z)); 
     if(dist <= s1.radius + s2.radius) 
      return true; 
     else 
      return false; 
    }