2

レイキャスティングスタイルの関数を使用して実行しようとしましたが、維持可能な結果が得られません。1つの円の2つの接線間の交点を計算しようとしています。この写真は説明に役立つはずです:

ここに画像の説明を入力してください

この問題についてGoogleで検索してstackoverflowを検索しましたが、この問題に類似したものは見つかりませんでした。何か助けはありますか?

4

2 に答える 2

3

さて、あなたの変数が次の場合:

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

円の中心から2点までの線は、それぞれとAです。BCA = A - CCB = 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つの線の交点を計算するには、標準の交点テストを使用する必要があります。

于 2011-06-26T16:02:48.880 に答える
1

ピーターアレクサンダーによる答えは、あなたが円の中心を知っていることを前提としていますが、それはあなたの図からは明らかではありませんhttp://oi54.tinypic.com/e6y62f.jpg。センターを知らない場合の解決策は次のとおりです。

(図の)点Cは、の接線とに垂直なA(x, y)線の交点であり、半分にカットされます。直線のパラメトリック方程式は、次のように導き出すことができます。LABABL

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

于 2011-06-26T16:37:09.320 に答える