【问题标题】:C++ Checking For Two Spheres Intersecting/CollidiingC++ 检查两个球体相交/碰撞
【发布时间】:2013-02-28 22:27:33
【问题描述】:

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

谢谢!

【问题讨论】:

    标签: geometry collision


    【解决方案1】:

    检查球心之间的距离是否小于它们的半径之和。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 您已经为显然是 3D 问题提供了 2D 解决方案。我很想给你投反对票,但我宁愿让你编辑你的帖子。
      • 很抱歉。没有意识到 OP 是在谈论球体。
      猜你喜欢
      • 2014-04-01
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 2021-11-04
      • 2011-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多