我正在寻找一种算法,并带有伪代码示例,以找到一个c1(c1x,c1y)
具有给定半径的圆与r
一条线 l
和另一个圆相切c2(c2x,c2y)
;这个圆与同一条线相切。
谢谢,
一方面,距第一个圆距离为 r2 的点的轨迹是与第一个圆在同一中心 ( C ) 处的半径为 (r1+r2) 的圆。OTOH,它是一条线,在 r2 的偏移距离处平行于给定线 ( AB )。它们的交点 ( F ) 是寻找的圆的中心。
显然,有两个这样的交点。
另一种可能性是让两个圆圈在第一个圆圈接触线的点( D )处接触。要找到第二个圆的中心 ( E ),只需将 (c1,r1) 圆“向下”(在图表上)的半径延长 (r2-r1)。
即找到E ,从C点“向下”走(r2-r1)
(有符号)的距离。要找到F,请“向右”sqrt( (r1+r2)^2 - (r1-r2)^2 ) == 2*sqrt(r1*r2)
从E的距离。
选择直线上的任意一点,在直线的两侧画一条长度为 r 的垂线。所以垂线的一端在直线上,另一端是圆的中心。选择线上的另一个点,做同样的事情。