首页 文章

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

提问于
浏览
-1

假设有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

    在将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 中的二次方程,得到两个解 .

相关问题