我尝试使用光线投射风格的功能来做到这一点,但无法获得任何可维护的结果。我正在尝试计算一个圆上两条切线之间的交点。这张图片应该有助于解释:

我已经用谷歌搜索 + 搜索了有关此问题的 stackoverflow,但找不到与此问题类似的任何内容。有什么帮助吗?
我尝试使用光线投射风格的功能来做到这一点,但无法获得任何可维护的结果。我正在尝试计算一个圆上两条切线之间的交点。这张图片应该有助于解释:

我已经用谷歌搜索 + 搜索了有关此问题的 stackoverflow,但找不到与此问题类似的任何内容。有什么帮助吗?
好吧,如果你的变量是:
C = (cx, cy) - Circle center
A = (x1, y1) - Tangent point 1
B = (x2, y2) - Tangent point 2
从圆心到两点的线A分别B是CA = A - C和CB = B - C。
你知道切线垂直于中心的线。在 2D 中,要获得一条垂直于(x, y)您刚取的向量的线(y, -x)(或(-y, x))
所以你的两条(参数)切线是:
L1(u) = A + u * (CA.y, -CA.x)
= (A.x + u * CA.y, A.y - u * CA.x)
L2(v) = B + v * (CB.y, -CB.x)
= (B.x + v * CB.y, B.x - v * CB.x)
然后要计算两条线的交点,您只需要使用标准的交点测试即可。
Peter Alexander 的答案假设您知道圆心,这从您的图http://oi54.tinypic.com/e6y62f.jpg中并不明显。这是一个不知道中心的解决方案:
点C(在你的图中)是切线与垂直于A(x, y)的线的交点,切成两半。该线的参数方程可以推导出如下:LABABL
的中点AB是M = ((x+x2)/2, (y+y2)/2),在哪里 B(x2, y2)。垂直于 的向量AB是N = (y2-y, x-x2)。L因此
,直线的矢量方程为L(t) = M + t N,其中 t 是实数。