0

我正在寻找一种算法,并带有伪代码示例,以找到一个c1(c1x,c1y)具有给定半径的圆与r一条线 l和另一个圆相切c2(c2x,c2y);这个圆与同一条线相切。

谢谢,

4

2 回答 2

3

一方面,距第一个圆距离为 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的距离。

于 2013-03-14T10:34:14.993 回答
0

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

于 2013-03-14T08:55:35.230 回答