其他两个圆的切线圆?

时间:2013-09-01 12:33:43

标签: math geometry

有两个圈子: a A 为中心,圈 b (以 B 为中心) 。什么是计算所有或没有切圆的2D位置的等式。主要约束是,所有圆的半径都相同。据我所知,应该没有解决方案(图2)或2个解决方案(图1)。如何查找是否有解决方案,以及这些解决方案的中心位置 C D

enter image description here 图1 :这里应该有2个解决方案


enter image description here 图2 :没有解决方案!

更新(解决方案):

1)计算从A到B的距离 - >的 | AB |

enter image description here

2)检查解决方案是否存在,仅在以下情况下存在:

enter image description here

3)如果存在,计算点 A B 之间的半点:

enter image description here

4)创建标准化的垂直向量到线段 AB

enter image description here

5)计算从该H点到C点的距离 - >的 | HC |

enter image description here

6)最后沿距离| HC |从 C :

enter image description here

2 个答案:

答案 0 :(得分:2)

我认为这个问题应该迁移到更多数学相关的网站。

当圈子 a b 进一步分开时,试着想象这两个切线圈在哪里。他们越接近 AB 这一行。一旦 AB 段等于 4r ,这两个切线圆将重叠。从现在开始,一旦圈子 a b 进一步分开,就没有任何切线圈。

如果您想计算这些圆圈的位置,只需假设中心之间的距离始终 2r

你应该得到xC和yC的两个,一个或没有解决方案,它们将是你的切圆的中心。我希望我没有搞砸了。

解决方案

如果你知道有解决方案(只检查d(A,B) <= 4r),这些是你的两个圈子的坐标:

http://pastebin.com/LeW7Ws98

有点吓人,嗯?但它正在发挥作用。有以下变量:

x_A, y_A - 圆圈A的坐标

x_B, y_B - 圆圈B的坐标

r - 半径。

我已经使用下面的一条评论中的值检查了解决方案。我认为您可以复制这些解决方案并立即将它们注入到您的代码中(假设有一个sqrt函数)并在声明一些变量后得到结果。

这些解决方案是松散地从Save的命题中得出的,但我不能在他的答案下面发表评论 - 我的声望点不到50,呃......(谢谢你!你是男人!)。但是我很确定它们应该对我的系统有效。干杯

答案 1 :(得分:1)

  1. iff d(A,B) = sqrt(2)*2*r
  2. 存在解决方案
  3. 要查找解圆的中心,可以绘制圆周,您可以将圆与中心(x_m,y_m)相交,即AB的中间点,半径{ {1}},该行垂直于AB并从sqrt(2)*r
  4. 传递

    这应该为您提供所有必要的信息,以检查解决方案是否有效,如果有,则可以绘制它。