圆与另一条直线和另一条圆相切

时间:2013-03-14 08:51:09

标签: algorithm geometry

我正在寻找一种算法,在伪代码中有一个例子,找到一条圆c1(c1x,c1y),其中一条线r与一条线l相切,另一条圆c2(c2x,c2y) };这个圆圈与同一条直线相切。

谢谢,

2 个答案:

答案 0 :(得分:3)

一方面,与第一个圆相距距离r2的点的轨迹是与第一个圆相同的中心( C )的半径为(r1 + r2)的圆。圈。 OTOH,它是一条线,平行于给定线( A B ),偏移距离为r2。他们的交集( F )是所寻求的圈子的中心。

enter image description here

显然有两个这样的交叉点。

另一种可能性是让两个圆接触第一个圆接触线的点( D )。要找到第二个圆的中心( E ),只需将(c1,r1)圆的半径“向下”(在图上)延长(r2-r1)即可。

即。要找到 E ,请从 C 点“向下”移动(r2-r1)(已签名)的距离。要查找 F ,请将“sqrt( (r1+r2)^2 - (r1-r2)^2 ) == 2*sqrt(r1*r2) E 的距离”“向右”移动。

答案 1 :(得分:0)

选择线上的任意点,在线的两侧绘制长度为r的垂线。所以垂线的一端是在线上,另一端是圆的中心。在线上选择另一个点,做同样的事情。