2011-06-26 16 views
2

レイキャスティングスタイルの関数を使ってみましたが、保守可能な結果は得られませんでした。私は1つの円の2つの接線の交点を計算しようとしています。この絵は、説明するのに役立つはずです。1つの円上の2つの接線の交点を計算しますか?

enter image description here

私はこの問題についてのstackoverflowを検索+ Googleで検索しましたが、この問題に似た何かを見つけることができません。どんな助け?

+0

2つの線の交点を計算する方法を知っていますか? –

+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では、あなただけ

(y, -x)(または(-y, x))を取る(x, y)ベクトルに垂直な線を得るためにだからあなたの2(パラメトリック)の接線は、次のとおりです。

その後
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) 

は、2線の交点を計算しますただstandard intersection testsを使用する必要があります。

+0

素晴らしい、それはちょうど私が必要なもの、感謝:D! – Conros

1

Peter Alexanderの答えは、円の中心を知っていることを前提としています。これは、あなたの数字http://oi54.tinypic.com/e6y62f.jpgからは分かりません。ここ 中心を知ることなく溶液である:

C(あなたの姿で)半分にAB切削、ABに垂直な線LA(x, y)での接線の交点です。次のようにラインLためのパラメトリック方程式を導出することができる。

ABの中点がB(x2, y2)M = ((x+x2)/2, (y+y2)/2)、です。 ABに垂直なベクトルはN = (y2-y, x-x2)です。したがって、線Lのベクトル式は、 L(t) = M + t Nです。ここで、tは実数です。

関連する問題