レイキャスティングスタイルの関数を使用して実行しようとしましたが、維持可能な結果が得られません。1つの円の2つの接線間の交点を計算しようとしています。この写真は説明に役立つはずです:
この問題についてGoogleで検索してstackoverflowを検索しましたが、この問題に類似したものは見つかりませんでした。何か助けはありますか?
レイキャスティングスタイルの関数を使用して実行しようとしましたが、維持可能な結果が得られません。1つの円の2つの接線間の交点を計算しようとしています。この写真は説明に役立つはずです:
この問題についてGoogleで検索してstackoverflowを検索しましたが、この問題に類似したものは見つかりませんでした。何か助けはありますか?
さて、あなたの変数が次の場合:
C = (cx, cy) - Circle center
A = (x1, y1) - Tangent point 1
B = (x2, y2) - Tangent point 2
円の中心から2点までの線は、それぞれとA
です。B
CA = A - C
CB = B - C
接線が中心からの線に垂直であることを知っています。(x, y)
2Dでは、ベクトルに垂直な線を取得するには、(y, -x)
(または(-y, x)
)
したがって、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つの線の交点を計算するには、標準の交点テストを使用する必要があります。
ピーターアレクサンダーによる答えは、あなたが円の中心を知っていることを前提としていますが、それはあなたの図からは明らかではありません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は実数です。