找到两个球体相交时的交点

时间:2011-02-19 03:40:41

标签: math collision

我有中心(xyz - 三维空间)和两个球体A和B的半径。

现在我必须弄清楚这些球体相遇的点或多于1点。很容易弄清楚两个球体是否发生碰撞,但我如何找出2个球体的交点?

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

如果较小球体的半径为A,且较大的B为B,并且它们的中心相距D个单位,则交点位于半径为r的圆上,该圆以两个中心之间的直接点为中心球体,从较大球体的中心开始是y个单位,从另一个球体的中心开始是x个单位,其中

y = 1/2(D +(B ^ 2 - A ^ 2)/ D)

x = 1/2(D - (B ^ 2 - A ^ 2)/ D)

半径

r = B ^ 2 - x ^ 2 = A ^ 2 - y ^ 2

如果你需要这个圆的方程,最好的方法是将它表示为一组三个参数化方程,其中x,y和z坐标各自表示为某个t的函数,表示半径向量trraveling环绕一圈,从零到2PI ...

要构造这些方程式,请考虑在2D平面上表示距中心半径为r的点,该平面垂直于两个球体之间的直线。

请查看此link以获取有关如何执行此操作的信息。

推导如下:在两个球体的中心之间画一条线。将其标记为D
在此线上指定一个点作为最终解决方案圆圈的中心,将其标记为点O
将D的较小部分标记为x,将大部分标记为y
从O perpindicular到D画一条线,一段距离r代表解圆的半径
将此半径的末尾标记为Q. 现在在较大球体的中心与较小球体的中心和Q

之间绘制B到Q和A.

来自毕达哥拉斯:
 B ^ 2 = y ^ 2 + r ^ 2且A ^ 2 = x ^ 2 + r ^ 2
因此,在消除了r和一些代数之后,
   y-x =(B ^ 2 -A * 2)/(x + y)
但是x + y = D so,

y-x =(B ^ 2 - A * 2)/ D

将等式x + y = D加到上面可以消除x,给出

2y = D +(B ^ 2 - A * 2)/ D
或者,

y = 1/2 (  D  + (B^2 - A*2) / D  )

答案 1 :(得分:2)

它们相交的曲线是圆形。圆的半径方程式有点复杂,但在方程式中显示为here。在图8中示出了圆与一个球的中心的距离。 5。

相关问题