2011-06-26 52 views
2

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

enter image description here

我GOOGLE +计算器搜索关于这个问题,但无法找到类似这样的问题什么。任何帮助?

+0

你知道如何计算两条线的交点,给定它们的方程吗? –

+0

给定它们的等式?我想是的,是的 – Conros

回答

3

好了,如果你的变量是:

C = (cx, cy) - Circle center 
A = (x1, y1) - Tangent point 1 
B = (x2, y2) - Tangent point 2 

从圆心到两点AB的线分别CA = A - CCB = 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) 

然后计算两条直线的交点你只需要使用standard intersection tests即可。

+0

太棒了,这正是我需要的,谢谢:D! – Conros

1

彼得亚历山大的答案假定你知道圆圈的中心,这从你的数字http://oi54.tinypic.com/e6y62f.jpg不明显。 这里是不知道的中心的解决方案:

C(在图中)是相切的A(x, y)的交点与线L垂直于AB,切割AB成两半。为线L参数方程可以导出如下:

AB中点是M = ((x+x2)/2, (y+y2)/2),其中B(x2, y2)。垂直于AB的矢量是N = (y2-y, x-x2)。行L的矢量方程因此是 L(t) = M + t N,其中t是实数。