2017-04-16 68 views
0

我正试图计算JavaScript中静止和移动向量之间的角度。但是,我希望角度根据方向进行叠加(因此,如果顺时针方向移动,角度总是增加,而逆时针方向移动会导致角度仅减小)。Javascript中的添加角度

我将数组中的坐标存储为数组start [x,y]和current [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;