我正在寻找一种算法,在伪代码中有一个例子,找到一条圆c1(c1x,c1y)
,其中一条线r
与一条线l
相切,另一条圆c2(c2x,c2y)
};这个圆圈与同一条直线相切。
谢谢,
答案 0 :(得分:3)
一方面,与第一个圆相距距离r2的点的轨迹是与第一个圆相同的中心( C )的半径为(r1 + r2)的圆。圈。 OTOH,它是一条线,平行于给定线( A B ),偏移距离为r2。他们的交集( F )是所寻求的圈子的中心。
显然有两个这样的交叉点。
另一种可能性是让两个圆接触第一个圆接触线的点( 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的垂线。所以垂线的一端是在线上,另一端是圆的中心。在线上选择另一个点,做同样的事情。