0

重複の可能性:
ベクトル間の符号付き角度の検索

ちょっとした数学の問題で助けが必要です。

したがって、向きを表すベクトル v と、2 つの点 s と t を取得しました。私がすべきことは、与えられた 2 点によって定義されるベクトルと平行にするために、ベクトル v に適用する回転を見つけることです。

現在、私はこれをある程度達成しています。つまり、角度を見つけることができますが、それを適用する方法ではありません(時計回りまたは反時計回り)。

現在、ベクトルの内積に対する acos を計算しているだけです。

任意の入力を歓迎します。

4

1 に答える 1

3

acos0 と pi の間の値を与えるとしましょう。

sからへのベクトルtが と呼ばれるとしましょうu。すでに計算したように、

acos((v . u)/(|v| * |u|))

角度を与えますalpha。実際には、 1 つまたは他の方向に回転させるvことができます。ualpha

おそらくこれは 2D で必要ですが、最初に 3D で説明します。

回転は、 と の両方に垂直なベクトルを中心とする必要がvありuます。このベクトルは、もちろん 2 つのクロス積です。u x v

例を見てみましょう:

   / v
  /
 /\  alpha
/  )
------------ u

この場合、u x vモニターの外側に向かってベクトルを与えます。同時に、 と平行になるように反時計回りalphaに配給を行う必要があることがわかります。vu

つまり、3D では、に対して反時計回りに計算w = u x vし、常に回転させるv必要があります。または、 ( は)に対して時計回りに回転できます。alphawvalpha-wv x u

2D では、回転したいのですzが、どちらの方向かわかりません。上記と同じ方法を適用できます。

  • コンピューティングw = u x v
  • z が正の場合w(x と y はゼロになります)
    • 次に、v反時計回りに回転させる必要があります。
    • それ以外の場合は、v時計回りに回転する必要があります。
于 2012-05-08T23:01:20.053 に答える