C ++检查两个球相交/碰撞

时间:2013-03-13 05:22:53

标签: geometry collision

我进入C ++并且我一直在研究如何让两个球体相互作用。我发现的大部分内容都非常复杂或者是实际的数学公式。有没有更简单的方法来创建一个能够识别球体任何一侧与另一个球体接触的功能?我不是要求你做我的工作,但我真的很感激某些干净的视觉,伪代码或代码片段,这可以帮助我理解更多。或者也许我找不到一些链接?

谢谢!

2 个答案:

答案 0 :(得分:2)

检查球体中心之间的距离是否小于其半径之和。

class Sphere {
public:
    double centerX, centerY, centerZ, radius;
    // .... 
};

double distanceBetween( const Sphere& a, const Sphere& b ) {
    return sqrt( pow( a.centerX - b.centerX, 2 ) + pow( a.centerY - b.centerY, 2 ) + pow( a.centerZ - b.centerZ, 2 ) );
}

bool areColliding( const Sphere& a, const Sphere& b ) {
    return distanceBetween( a, b ) < ( a.radius + b.radius );
}

答案 1 :(得分:0)

这篇文章很好地解释了两个球体如何相互作用Sphere - sphere collision detection -> reaction。请注意,为了解决这个问题,您可能需要处理复杂的数学运算。希望通过阅读这些解释,您可以更好地理解数学应该做什么。我在过去发现,在深入研究数学之前,最好先尝试可视化并理解如何解决问题。