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

标签 geometry collision

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

谢谢!

最佳答案

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

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

关于geometry - C++ 检查两个球体相交/碰撞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15377656/

相关文章:

javascript - 缩放多边形使边匹配

geometry - 检测任意形状

javascript - 通过 css 对象的 X 轴确定偏移,javascript

java - 玩家似乎正在与空气碰撞?

unity-game-engine - 忽略特定情况下的碰撞,同时仍将其用作触发器

java - 2D游戏中的碰撞

algorithm - 计算特定角度凸多边形的宽度

algorithm - 创建通过所有给定点的非相交多边形

ios - SpriteKit 物理体在与关节连接时不会发生碰撞

javascript - 旋转多边形检测并使直线遵循边界