需要使用 python 代码知道球体是否与立方体相交...?

Need to know if a sphere intersects with cube using python code...?

我正在 python 中开发一个代码来检查以 (x, y, z) 坐标为中心且半径为 R 的球体是否与一维立方体相交,即 l = 1 , b = 1, h = 1。 上面说了,我想知道球体是否与立方体相交在任何点或方向,或比例。

我有一个球体坐标 (x,y,z) 列表,必须检查交点。我对此做了一些研究,但无法消除我对如何处理这个例子的疑虑。

我很想知道它的数学和编码部分。有人可以帮我解决吗..?? 编辑:立方体轴对齐并放置在原点。

要揭示相交的事实,您可以计算从立方体到球体中心的距离,并将其与球体半径进行比较。 2D case is described here,可以轻松扩展到3D案例。

取立方体中心为(rcx, rcy, rcz)并求立方体中心与球体中心的坐标差

dx, dy, dz = x - rcx, y - rcy, z - rcz

SquaredDist = 0,对每个坐标令:

t = dx + 0.5                # 0.5 is half-size of your cube
if t < 0:
  SquaredDist += t * t
else:
   t = dx - 0.5
   if t > 0:
  SquaredDist += t * t

最后比较SquaredDistR*R

对评论的一些解释:

查看链接答案中的图片。对于矩形 ABCD,我们有中心 G 和坐标差 GK 和 GJ,它们包括宽度的一半和高度的一半。平方距离(此处为 EC)是到适当边线(3D 情况下的平面)的平方距离之和。当最近(到球体中心)点是立方角时,我们考虑三个平面,当最近点位于边缘时 - 我们考虑两个平面,当最近点位于小平面时 - 我们只考虑一个平面,当球体中心位于内部时 - SquaredDist 保持为零。