2017-04-16 1 views
0

私は、javascriptの静止ベクトルと移動ベクトルの間の角度を計算しようとしています。しかし、私は角度を方向に基づいて加法的にしたい(時計回りに動かしていると、角度は常に大きくなり、反時計回りに動くと角度は小さくなる)。JavaScriptでの加算の角度

私は座標をstart [x、y]と現在の[x、y]として配列に格納していますが、現在の配列が変更されている間に角度を計算する必要があります。私も現在atan2関数を使用していますが、これは-180〜+180度に制限されています。

start = [event.clientX - discCent[0], event.clientY - discCent[1]]; 
current = [event.clientX - discCent[0], event.clientY - discCent[1]]; 

// Get this to be additive 
angleDeg = Math.atan2(current[1] - start[1], current[0] - start[0]) * 180/Math.PI; 

ありがとうございます!

答えて

0

以前の角度を維持し、それに最も近い取得するために360°の倍数を加算/減算:

var angleDegPrev = 0.; // initialization at start 
... 

// compute angle in ]-180,180] 
start = [event.clientX - discCent[0], event.clientY - discCent[1]]; 
current = [event.clientX - discCent[0], event.clientY - discCent[1]]; 
angleDeg = Math.atan2(current[1] - start[1], current[0] - start[0]) * 180/Math.PI; 

// add multiple of 360 to get closest to previous angle 
angleDeg += Math.round((angleDegPrev - angleDeg)/360.)*360.; 
angleDegPrev = angleDeg;