我正在寻找一种算法,以伪代码为例,找到一个圆 c1(c1x,c1y)
给定半径 r
与一条线相切 l
和另一个圆c2(c2x,c2y)
;这个圆与同一条线相切。
谢谢,
最佳答案
一方面,距离第一个圆 r2 处的点的轨迹是半径为 (r1+r2) 且与第一个圆心 (C) 相同的圆圆圈。 OTOH,它是一条线,在 r2 的偏移距离处平行于给定线 (A B)。它们的交点 (F) 是所寻找的圆的中心。
显然有两个这样的交点。
另一种可能性是让两个圆在第一个圆与直线相交的点 (D) 相交。要找到这样的第二个圆的中心 (E),只需将 (c1,r1) 圆“向下”(在图上)的半径延长 (r2-r1)。
即要找到 E,请从 C 点“向下”移动 (r2-r1)
的距离(已签名)。要找到 F,请“向右”移动 sqrt( (r1+r2)^2 - (r1-r2)^2 ) == 2*sqrt(r1*r2)
来自 E。
关于algorithm - 与另一条线和另一个圆相切的圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15404730/