假设有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处于最大允许距离,否则应该有两种解决方案,在这种情况下只有一种 .
谢谢,非常感谢任何帮助 .
在将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 中的二次方程,得到两个解 .
Y
X
1 回答
在将C缩小到单个点的同时,通过Rc“圈出”圆A和B.然后C的中心显示为两个膨胀的圆的交点 .
写出两个圆的隐式方程,并从另一个中减去一个;二次项取消,留下直线方程(通过两个交点的直线) .
要解决这个问题,您可以使用线性关系表示
Y
作为X
的函数,然后在其中一个圆的方程中替换Y
并求解X
中的二次方程,得到两个解 .