首页 文章

其他两个圆的切线圆?

提问于
浏览
-1

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

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


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

Update (solution):

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

enter image description here

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

enter image description here

3)如果存在,则计算点 AB 之间的半点:

enter image description here

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

enter image description here

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

enter image description here

6)最后沿距离| HC |从X开始沿(HC)计算点 C

enter image description here

2 回答

  • 2
    • 解决方案存在iff d(A,B) = sqrt(2)*2*r

    • 要找到解圆的中心,这将允许您绘制圆周,您可以将圆与中心 (x_m,y_m) 相交,即半径为 sqrt(2)*r 的分段 AB 的中点,该线垂直于AB并从中传递 (x_m,y_m)

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

  • 1

    我想这个问题应该迁移到更多数学相关的网站 .

    试着想象当圆圈 a 和_2474212越来越远时,这两个相切圆圈的位置 . 他们越来越靠近 AB . 一旦 AB 段等于 4r ,这两个切线圆将重叠 . 从现在开始,一旦圆圈 ab 进一步分开,就没有任何相切的圆圈 .

    如果要计算这些圆的位置,只需假设中心之间的距离始终为 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,呃......(谢谢!你是男人!) . 但是我很确定它们应该对我的系统有效 . 干杯

相关问题