You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已知三球参数,求与三球相切的已知半径第四球的位置

解决三球相切的第四球定位问题

嘿,别慌!久未碰几何思路卡壳太正常了,这个问题其实是经典的三维相切球问题,咱们一步步拆解:

核心思路:利用相切条件列方程求解

假设三个已知球的参数如下:

  • 球A:中心坐标 $\vec{A}=(x_A,y_A,z_A)$,半径 $r_A$
  • 球B:中心坐标 $\vec{B}=(x_B,y_B,z_B)$,半径 $r_B$
  • 球C:中心坐标 $\vec{C}=(x_C,y_C,z_C)$,半径 $r_C$
    待求的第四球D:半径 $r_D$ 已知,中心坐标 $\vec{D}=(x,y,z)$ 待求

两球相切的核心条件是:两球中心的距离等于半径之和(外切)或半径差的绝对值(内切)。据此我们可以列出3个方程:

  • $||\vec{D} - \vec{A}||^2 = (r_D \pm r_A)^2$
  • $||\vec{D} - \vec{B}||^2 = (r_D \pm r_B)^2$
  • $||\vec{D} - \vec{C}||^2 = (r_D \pm r_C)^2$

注:每个方程里的±号,外切取+,内切取-,所以总共有$2^3=8$种组合,对应不同的相切方式(比如第四球同时外切三个已知球,或者内切其中一个外切另外两个等)

解方程的具体步骤

  1. 展开方程并消去二次项
    把每个方程展开,比如第一个方程展开后:
(x - x_A)² + (y - y_A)² + (z - z_A)² = (r_D ± r_A)²

展开左边的平方项后,会得到$x²、y²、z²$项,右边展开后也会有常数项。将任意两个方程相减,就能消去二次项,得到一个关于$x,y,z$的线性方程。

比如用第一个方程减第二个方程,整理后会得到:

2(x_B - x_A)x + 2(y_B - y_A)y + 2(z_B - z_A)z = (x_A² + y_A² + z_A² - r_A²) - (x_B² + y_B² + z_B² - r_B²) ± 2r_D(r_A - r_B)
  1. 构建线性方程组求解
    重复上述步骤,得到三个线性方程,组成三元一次方程组。解这个方程组就能得到$x,y,z$的具体值,也就是第四球的中心坐标。

  2. 验证解的有效性
    不是所有的±组合都能得到有效解,需要把解代回原方程验证,排除那些不满足相切条件的情况(比如三个已知球的位置和半径无法容纳第四球的情况)。

补充:3D版Descartes定理

如果是求第四球的半径,3D版Descartes定理会更快捷,公式为:

k₄ = k₁ + k₂ + k₃ ± 2√(k₁k₂ + k₂k₃ + k₃k₁)

其中$k_i = ±1/r_i$,正号对应外切,负号对应内切。不过你的问题里半径已知,所以还是用上面的方程组方法更直接。

内容的提问来源于stack exchange,提问作者Bamboo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:44:45