2

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

谢谢!

4

2 回答 2

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 );
}
于 2015-03-11T02:21:28.283 回答
0

这篇文章很好地解释了两个球体如何相互作用球体碰撞检测->反应。请注意,您可能必须处理复杂的数学才能解决此问题。希望通过阅读这些解释,您可以更好地理解数学应该做什么。我过去发现,在深入研究数学之前,最好先尝试可视化并理解如何解决问题。

于 2013-03-13T05:40:01.733 回答