2

私には問題があります(そして解決策もあります)。私が知りたいのは、「その」解決策に到達する方法です。「その」ソリューションは完璧であり、考えられるすべての組み合わせで問題なく機能します。

XY座標系に3つのポイントがあると仮定します:P1(x1, y1)、、。P2(x2, y2)P3(x3, y3)

ここで、点P2をP3と結合します。その結果、点P2から発生し、点P3を通過する「光線」が発生します。レイという言葉を使用したのは、一方向、つまりP2からP3にのみ必要だからです。

さて、点P1に関して、光線 P2 --> P3は時計回りまたは反時計回りの方向ですか?


解決策は次のとおりです。

次の式を使用して、z1の値を見つけます。

z1 = (x3 - x1)(y2 - y1) - (y3 - y1)(x2 - x1)

z1が正の場合、P2 --> P3は時計回りです。z1が負の場合、P2 --> P3は反時計回りです。そして、それが0の場合、ポイントは。から伸びる同じ仮想線上にありP1ます。

誰かがこの解決策に到達する方法を教えてもらえますか?

4

2 に答える 2

3

あなたが書いた式は、2つのベクトルの外積の式と非常によく似ています。外積の方向はCW/CCW構成に依存するため、問題に簡単に使用できます。

2つの光線P1->P2とを作成できP1->P3ます。次に、それらの外積を取ることができます。Z軸に沿った製品の成分が正の場合、P2とP3は反時計回りの順序であり、その逆も同様です。

これを行おうとすると、外積のk(Z軸に沿った単位ベクトル)の係数となる結果は、あなたが述べた答えとまったく同じになります。

于 2012-01-27T15:02:46.763 に答える
-1

これがうまくいくかどうかはわかりません。私はそれを試しましたが、それは私に両方に対して同じ答えを与え続けます。次の座標を試してください。

Start point 0, 90, 0
Center point 0, 0, 0
End point 90, 0, 0
.....
directional vector 1, 0, 0
inverse directional vector -1, 0, 0
于 2012-04-26T06:54:05.733 に答える