找到与其他两个圆相切的圆的位置

时间:2015-04-12 22:15:30

标签: geometry trigonometry

假设有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处于最大允许距离,否则应该有两种解决方案,在这种情况下只有一种。

谢谢,非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

"充气"在将C缩小到单个点的同时,Rc圈出A和B.然后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中,产生两种解决方案。