非零半径球体之间的碰撞检测

时间:2013-04-10 13:21:27

标签: java algorithm collision-detection collision java-3d

我正在制作一个Java 3D游戏,你可以在其中跳过其他球。除了球员球和敌人球之间的碰撞外,我发现了一切。我已经发现我可以检查球体中心之间的距离是否小于它们的半径之和,但问题是我不知道该怎么做;如果有人知道如何检查球半径的总和,我将非常感谢你告诉我。

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

假设你有一个容器类,用于保存有关它们的信息:

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

现在你必须使用毕达哥拉斯定理得到一个三维空间来计算两个球体中心之间的距离:

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;
    }