2012-05-08 1 views
0

との間の角度の可能性の重複を見つける:
Finding Signed Angle Between Vectorsはベクトル

私は少し数学の問題との助けを必要にいますよ。

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

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

現在、私はベクトルの内積にacosを計算しています。

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

+1

http://stackoverflow.com/questions/2150050/finding-signed-angle-between-vectors – moowiz2020

+0

moowiz2020が言うように、これは正確な複製です。 – tom10

+0

ああ、ありがとう、探している間にそれを見つけられなかったtho; s – Skeen

答えて

3

たとえば、acosとすると、0〜piの値が与えられます。

sからtまでのベクトルをuとしましょう。既に計算されているとおり、alphaと計算されていますので、alphaと計算されています。alpha実際には、vuになり、alphaで一方向または他の方向に回転できます。

これはおそらく2Dで必要になるかもしれませんが、まず3Dで作業します。

回転は、vuの両方に垂直なベクトルの周りにする必要があります。このベクターは、もちろん2の外積である:u x v

の例を見てみましょう:この場合

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

u x vは、お使いのモニタの外に向けたベクトルを与えます。同時に、alphaの配当はの反時計回りにuにはvを平行にする必要があることがわかります。

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

2Dでは、あなたはzの周りを回転したいと思うし、あなたはどちらの方向がわからないと思います。あなたは、上記と同様の方法を適用することができる:

  • 計算は、w = u x v
  • w次いで正のz(xとyはゼロとなる)
    • を有する場合、vが反時計回りに回転しなければなりません。
    • else、vは時計回りに回転する必要があります。