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

求二维空间红色原子坐标——已知蓝色原子坐标及所有原子间距离

2D空间原子坐标求解方案

这是个挺经典的2D空间定位问题,我来一步步给你拆解清楚解法:

先明确问题建模

首先咱们把变量定义清楚,避免混乱:

  • 设已知坐标的蓝色原子为点 ( B ),坐标是 ( (x_b, y_b) )
  • 剩下的3个红色原子分别记为 ( R_1, R_2, R_3 ),坐标待求:( (x_1,y_1), (x_2,y_2), (x_3,y_3) )
  • 已知的所有距离:蓝色原子到每个红色原子的距离 ( d_{BR1}, d_{BR2}, d_{BR3} ),以及红色原子之间的两两距离 ( d_{R1R2}, d_{R1R3}, d_{R2R3} )

单个红色原子的基础逻辑

如果先看单个红色原子 ( R_1 ),根据距离公式,它满足:

(x₁ - x_b)² + (y₁ - y_b)² = d_{BR1}²

这本质是个圆的方程——意味着 ( R_1 ) 可以在以 ( B ) 为圆心、( d_{BR1} ) 为半径的圆上任意位置。但只有这一个条件的话,解是无穷多的,这也是为什么需要原子间的两两距离来做约束。

多个红色原子的核心求解步骤

咱们通过固定参考点、联立方程的方式来缩小范围,找到唯一解(或有限个合理解):

步骤1:简化坐标系(可选但高效)

为了减少计算量,你可以先把蓝色原子 ( B ) 平移到坐标系原点:

  • 做坐标变换:( x' = x - x_b ),( y' = y - y_b )
  • 计算完红色原子的新坐标后,再平移回去(加回 ( x_b, y_b ) 即可)

平移后 ( B ) 的坐标是 ( (0,0) ),咱们直接把 ( R_1 ) 放在 ( (d_{BR1}, 0) ) 这个位置——因为它本来就在半径为 ( d_{BR1} ) 的圆上,选这个点作为初始位置完全不影响结果的合理性,反而能简化后续计算。

步骤2:求解第二个红色原子 ( R_2 )

现在我们有两个距离约束:( R_2 ) 到 ( B ) 的距离是 ( d_{BR2} ),到 ( R_1 ) 的距离是 ( d_{R1R2} ),列出两个方程:

  1. ( x_2'^2 + y_2'^2 = d_{BR2}^2 )
  2. ( (x_2' - d_{BR1})^2 + y_2'^2 = d_{R1R2}^2 )

用第一个方程减去第二个方程,就能消掉 ( y_2'^2 ),解出 ( x_2' ):

x₂' = (d_{BR2}² + d_{BR1}² - d_{R1R2}²) / (2*d_{BR1})

再把 ( x_2' ) 代入第一个方程,就能算出 ( y_2' ):

y₂' = ±√(d_{BR2}² - x₂'²)

这里会得到两个解(上下对称),你可以先任选一个,后面验证第三个原子的时候如果不匹配,再换另一个就行。

步骤3:求解第三个红色原子 ( R_3 )

现在我们有三个距离约束:( R_3 ) 到 ( B ) 的距离 ( d_{BR3} )、到 ( R_1 ) 的距离 ( d_{R1R3} )、到 ( R_2 ) 的距离 ( d_{R2R3} ),同样列方程:

  1. ( x_3'^2 + y_3'^2 = d_{BR3}^2 )
  2. ( (x_3' - d_{BR1})^2 + y_3'^2 = d_{R1R3}^2 )
  3. ( (x_3' - x_2')^2 + (y_3' - y_2')^2 = d_{R2R3}^2 )

重复之前的操作,用方程1减方程2解出 ( x_3' ):

x₃' = (d_{BR3}² + d_{BR1}² - d_{R1R3}²) / (2*d_{BR1})

代入方程1得到 ( y_3' ) 的两个可能值:

y₃' = ±√(d_{BR3}² - x₃'²)

最后把这两个 ( y_3' ) 分别代入方程3,验证哪个值能满足距离约束——满足的那个就是正确的 ( y_3' )。

步骤4:还原坐标(如果做了平移)

把计算出来的红色原子新坐标 ( (x_1', y_1'), (x_2', y_2'), (x_3', y_3') ) 平移回原坐标系:

x₁ = x₁' + x_b
y₁ = y₁' + y_b

同理处理 ( R_2, R_3 ) 的坐标。

几个要注意的点

  • 解的镜像问题:在2D空间中,可能会出现镜像对称的解(比如步骤2中 ( y_2' ) 的正负),这些都是合理的几何位置,取决于你初始的选择,没有对错之分。
  • 距离合法性检查:如果给定的距离不符合三角不等式(比如 ( d_{R1R2} > d_{BR1} + d_{BR2} )),那说明距离数据有问题,不存在合法解。
  • 多蓝色原子的情况:如果有多个蓝色原子(比如2蓝2红),解法逻辑一样——用多个蓝色原子的距离约束联立方程,解会更唯一。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:47:06