【问题标题】:Find the position of a circle tangent to two other circles找到与其他两个圆相切的圆的位置
【发布时间】:2015-04-12 22:15:30
【问题描述】:

假设有 3 个圆,A 以 a 点为中心,B 以 b 点为中心,C 以 c 点为中心。每个都有一个已知的半径,与其他的 Ar、Br 和 Cr 无关。 a 和 b 的位置是已知的,但 c 的位置不知道。

a 和 b 之间的距离总是在 (Ar + Br) 和 (Ar + Br + (2 * Cr)) 之间。

我正在寻找一种伪代码算法来找到 c 的位置,以便圆 A 和 C 相切,圆 B 和 C 相切。除非 a 和 b 处于最大允许距离,否则应该有两种解决方案,在这种情况下,只有一种解决方案。

谢谢,非常感谢您的帮助。

【问题讨论】:

  • 我投票结束这个问题,因为它是关于几何,而不是编程。
  • 我正在寻找可以集成到我的程序中的伪代码解决方案。我认为这关于编程的。
  • 先弄清楚数学。一旦你有了等式,转换为代码应该是微不足道的。
  • 我的问题类似于this one,只是我的圈子可以有不同的半径。弄清楚数学是我遇到麻烦的地方。

标签: geometry trigonometry


【解决方案1】:

在将 C 缩小到一个点的同时,将圆 A 和 B 通过 Rc“膨胀”。则 C 的中心出现为两个膨胀圆的交点。

写出两个圆的隐式方程,相减一个;二次项抵消,留下一条直线方程(通过两个交点的线)。

(X-Xa)² + (Y-Ya)² = (Ra+Rc)²
(X-Xb)² + (Y-Yb)² = (Rb+Rc)²
    => by subtraction
(Xa-Xb)(2X-Xa-Xb) + (Ya-Yb)(2Y-Ya-Yb) = (Ra-Rb)(Ra+Rb+2Rc)

要解决这个问题,您可以使用线性关系将Y 表示为X 的函数,然后将Y 代入其中一个圆的方程并求解X 中的二次方程,得到两种解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-19
    • 2022-10-23
    • 1970-01-01
    • 2014-07-03
    相关资源
    最近更新 更多