如何检查一个因子是否在2个圆形的凸包内?

在我的上一个问题之后,我问自己如何确定一个因子是否在2个圆的凸包内(布尔值)。 如果因素保留在两个圆圈中的任何一个中,则无需担心筛选,但它可能另外“介于”它们之间,而且我也不知道如何检查它。

看到Wolfram MathWorld在圆圈切线上的一篇文章,似乎有一个不等式可以检查这个因素是否在内侧都有外圆切线就足够了,但我担心我的寻址能力也无法改变切线公式正好适合不平等。

我正在使用两个设施和距离来指定2个圆形的凸包。

0
2019-05-04 18:54:12
资源 分享
答案: 2

您可以先计算四点相切,然后再使用指向多边形算法确定您的因子是否在四边形内(这是认为您有显示相关的问题)

否则,只要您实际找到了4个相切因子,就可以创建4条线并获得4个同步不等式。

0
2019-05-08 04:40:48
资源

对这种麻烦的补救措施毫无疑问是要检查因子是否仍然存在于圆圈之间或者由等腰梯形建立的因素是圆圈接触切线。 尽管如此,如果没有一些治疗方法,公式会变得令人不愉快。

允许以距离为r1'的(x1',y1')处的圆圈开始,在距离为r2'的(x2',y2')处为圆,并且还要检查要素(x',y')。 我们可能会认为r1'至少是r2'。 通过通过缩放粘附来改变粘附,可以将其改变为不太复杂的实例:距离为r1的(0,0)处的圆,距离r2处的(1,0)处的圆,以及因子( x,y)要检查。 我们有:r1 = r1'/ D,r2 = r2'/ D,

$x=((y'-y'_1)\sin\alpha+(x'-x'_1)\cos\alpha)/D$

$y=((y'-y'_1)\sin\alpha-(x'-x'_1)\cos\alpha)/D$

哪里

$D^2=(x'_1-x'_2)^2+(y'_1-y'_2)^2$

并且$\alpha$是存在(x2'- x1',y2'-y1')的角度。 (在C中,有一个函数atan2,它既可以使用因子,也可以提供角度。在数学中,atan实际上并不比较对称因子wrt(0,0)。)

  1. 如果因子保留在声称是的圈子中,或者继续。
  2. 如果在返回之后r1 = r2(0 <x <1并且还| y | <r1),或者继续。 (在这个因素中,距离Dr = r1-r2之间的区别纯粹在0和1之间。)
  3. 如果x <r1 Dr,则声明NO。
  4. 如果x> 1 + r2博士,则声明为NO。
  5. 如果是$x\Delta r + |y|\sqrt{1-{\Delta r}^2}>r_1$,则声明为NO。
  6. 要求是。

实际上,我只使用了一点,特别是特定的三角形可比。 吸引接触两个圆圈的切线。 允许声称它将大圆收敛于A =(x1,y1),B =(x2,y2)处的小圆,以及C =(d,0)处的直轴。 允许另外写D =(0,0)并且还E =(x1,0)并且还F =(1,0)并且还G =(x2,0)。 可比较的三角形是ADC,AED,BFC和BGD。 从与BFC相当的ADC,您可以找到d = r1 / Dr。 从与AED相当的ADC,您可以找到x1 = r1 Dr,也可以找到与BGD相当的BFD,您可以找到x2 - 1 = r2 Dr.

要检查某个因子是否在某一行的适当位置,请将其公式写为ax + by + c = 0,并通过不等式更改相等的权限。 (请记住,向量$(a,b)^T$垂直于可以采用公式的行,指定所有向量/点,其标量/点项与处理向量$(a,b)^T$提供常量c。)

让我知道如果我再次搞砸了:P


这是旧的解决方案,如下面列出的第一条评论所指出的那样是不正确的。 它从完全相同的改造(没有提供信息)开始,然后它使用明显的一些线 与圆相切。

声称第一个圆圈具有设施在(0,0)(否则,改变数字)与距离r_1,并且第二个圆圈在(1,0)(否则,旋转数量和范围)与距离r_2。 如果你的因子是(x,y)并且也不在两个圆之间,那么x必须在0和1之间,并且| y | 必须转到r_1 +(r_2-r_1)x的大部分。

0
2019-05-08 03:31:47
资源