如果我正确地理解了您的问题,您可以简单地使用Sphere vs Sphere相交测试,如AttackingHobo所建议的那样。
进行此类测试的数学方法如下(如果我错了,请纠正我,已经有一段时间了)。同样,这是考虑到您的球体的中心和半径均可变。
检查公式如下所示:
distanceOfSpheres <= sumOfRadii^2
您有一个球体与球体的交点。这非常简单,让我们看看代码中的样子!
bool sphereIntersectTest(BoundingSphere* s1, BoundingSphere* s2)
{
Vector3 distance;
// Get the distance between each sphere, center is a Vector3 type
distance = (s1->center - s2-> center);
// Determine the sum of both radii
float radii = (s1->radius + s2->radius);
// Determine if we have an intersection
if (distance.length <= (radii * radii))
return true;
else
return false;
}
同样,我认为这是您可能正在寻找的正确答案。如果有人知道这是错误的,请纠正我,因为自从我做完这个数学已经有一段时间了。