我有两个圆,我知道它们都与第三个(未知)圆相切。我也知道切线点在圆的象限中。如下图所示。我也知道第三个圆在两个切点之间的弧角。

我想知道两个切点的位置以及一个切向,因此我可以画出未知的(红色)圆。

我目前有一个可行的解决方案,涉及非线性方程求解器。如果可能的话,我希望有一个不涉及非线性方程求解的解决方案,因为我需要运行很多这样的问题,并且需要精确的结果。



评论

@ritwiksinha用黑色写的所有东西都是已知的。中心点,半径和弧角。

#1 楼

首先让我们求解您的圆的半径。您会看到圆的中心形成一个三角形。有8个可能的三角形,其中4个是连接原始圆心的直线上的镜像解。其他解决方案是内部切线和外部切线连接的置换。



图像1:所有可能的解决方案

因此了解象限不足以选择解决方案。 />求解三角形



因此,对于eaxmple,让圆位于两个圆的内侧(其他解决方案的符号会更改)。现在您需要求解方程:

$$
D ^ 2 =(x + r_1)^ 2 +(x + r_2)^ 2-2(x + r_1)(x + r_2)\ cos(\ beta)
$$

现在可以在计算机代数系统中解决此问题,并提供2个具有众多边角约束的解决方案(您自己做对鲁棒代码很重要并且显然您需要检查4个解决方案。)

$$
x = \ frac {1} {2} \ left(\ pm \ sqrt {\ frac {\ cos(\ beta )(r_1-r_2)^ 2-2 D ^ 2 +(r_1-r_2)^ 2} {\ cos(\ beta)-1}}-r_1-r_2 \ right)
$$

一旦解决了x问题,就可以解决中心问题。这可以通过多种方式完成,但我将通过求解角度$ \ alpha $以及一些矢量旋转,归一化和标量乘法来进行。可以使用相同的计算来找到交点,并且切线就是此向量旋转了90度。

还可以使用具有2个角度和向量和为$ a + bc =的替代公式。 0 $,具有2个未知数和2个方程。

评论


$ \ begingroup $
谢谢。查看解决方案,我想知道圆接触的象限就足够了,即使我也知道曲率的方向。
$ \ endgroup $
– Rikki-Tikki-Tavi
16年7月4日在13:57



$ \ begingroup $
您能否详细说明如何使用给定的数据和半径$ x $来获得切点和方向?
$ \ endgroup $
– Rikki-Tikki-Tavi
16年7月4日在15:51

$ \ begingroup $
@ Rikki-Tikki-Tavi,您不知道该如何计算:三角形的其他角度(使用正弦定律)或矢量旋转?如果查看图像,您会看到其中两个解决方案在同一象限中。相反,我将使用其切线的内部或外部切线,否则您需要检查所有切线。 (顺便说一句,就像我已经教过你的余弦定律一样,我就像又在教你高中学习一样)
$ \ endgroup $
– joojaa
16年7月4日在17:20