Vector 寻找两个信息有限的接触圆

Vector 寻找两个信息有限的接触圆,vector,geometry,equations,Vector,Geometry,Equations,我在一个轨迹编辑器上工作,发现自己处于一种需要定义两个接触圆的情况。理想情况下,我想知道这些圆的中心点和半径 我得到的信息是每个圆圆周上的一个点,以及该点与圆的切线 我自己已经弄明白了,如果我知道这些点的切线,我就知道中心点必须所在的直线 C1是我要找的第一个圆的中心 P1是圆圆周上的一个点,我知道该点的切线 A是我在P1知道的切线的法线 C2是我正在寻找的第二个圆的中心 P2是圆周长上的一个点,我知道该点的切线 B是切线的法线,我知道在P2 C1 = P1 - t1 * A C2 = P2

我在一个轨迹编辑器上工作,发现自己处于一种需要定义两个接触圆的情况。理想情况下,我想知道这些圆的中心点和半径

我得到的信息是每个圆圆周上的一个点,以及该点与圆的切线

我自己已经弄明白了,如果我知道这些点的切线,我就知道中心点必须所在的直线

C1是我要找的第一个圆的中心 P1是圆圆周上的一个点,我知道该点的切线 A是我在P1知道的切线的法线

C2是我正在寻找的第二个圆的中心 P2是圆周长上的一个点,我知道该点的切线 B是切线的法线,我知道在P2

C1 = P1 - t1 * A  
C2 = P2 - t2 * B
我也知道两个中心之间的距离等于两个中心到圆周上各点的距离之和

|C1 - P1| + |C2 - P2| = |C1 - C2|

我还希望将abs | t1*A |-| t2*B |保持在最小值。

如果只有切向量和点,则没有足够的信息。你需要至少多2个点,每个圆多一个点,否则t1和t2可以是任意实数。顺便说一下,A=-B
不管怎样,我假设圆没有重叠。无论哪种方式,我们都无法在不知道更多信息的情况下知道它们有多大以及中心点在哪里。

看起来你有一个包含三个方程和四个未知数的方程组;这不是个好兆头。我现在不会数学,但你应该画一个仔细标记的图表,有时这有助于澄清问题,当然也有助于沟通。你可能也想试试,因为这不是一个真正的编程问题。谢谢。当我回顾我在这里试图实现的目标时,我意识到我想要的是两个圆,这样半径长度之间的差异保持在最小。