2011-06-26 55 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是實數。