【发布时间】:2013-02-28 22:27:33
【问题描述】:
我正在学习 C++,我一直在研究如何让两个球体相互交互。我发现的大部分内容非常复杂,或者是实际的数学公式。有没有更简单的方法来创建一个可以识别球体的任何一侧何时与另一侧接触的函数?我不是要你做我的工作,但我真的很感激某种干净的视觉、伪代码或代码 sn-p,这可以帮助我理解更多。或者也许我还没有找到一些链接?
谢谢!
【问题讨论】:
我正在学习 C++,我一直在研究如何让两个球体相互交互。我发现的大部分内容非常复杂,或者是实际的数学公式。有没有更简单的方法来创建一个可以识别球体的任何一侧何时与另一侧接触的函数?我不是要你做我的工作,但我真的很感激某种干净的视觉、伪代码或代码 sn-p,这可以帮助我理解更多。或者也许我还没有找到一些链接?
谢谢!
【问题讨论】:
检查球心之间的距离是否小于它们的半径之和。
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 );
}
【讨论】:
这篇文章很好地解释了两个球体如何相互作用Sphere - sphere collision detection -> reaction。请注意,您可能必须处理复杂的数学才能解决此问题。希望通过阅读这些解释,您可以更好地理解数学应该做什么。我过去发现,在深入研究数学之前,最好先尝试可视化并了解如何解决问题。
【讨论】: