首先,我要说我在数学方面绝对是一个残酷的人,请多多包涵。
我正在尝试计算圆上两个点之间的 Angular ,这两个点是用户在一定时间内拖动的距离。
这是我到目前为止的内容:
intervalId = setInterval(function(){
if(p1x != undefined){
p2x = Xpos;
}
if(p1y != undefined){
p2y = Ypos;
}
if( p1x != p2x || p1y != p2y ){
p1a = p1x - wheelMiddleVer;
p1b = p1y - wheelMiddleHor;
a = Math.sqrt((p1a * p1a) + (p1b * p1b));
p2a = p2x - wheelMiddleVer;
p2b = p2y - wheelMiddleHor;
b = Math.sqrt((p2a * p2a) + (p2b * p2b));
u = p1x - p2x;
v = p1y - p2y;
c = Math.sqrt((u * u) + (v * v));
}
p1x = Xpos;
p1y = Ypos;
}, 1000);
我不确定如何完成。我尝试使用cos A =(b ^ 2 + c ^ 2-a ^ 2)/2bc公式,但对我来说不可行。感谢您对此的投入。如果我可以使问题更清楚,请告诉我。
最佳答案
首先,请记住,大多数语言都具有反向Y轴。表示刻度上的点越高-> Y值越小。
至于您的问题,您应该使用arctan:
var angle = Math.atan((p1y - p2y) / (p2x - p1x)) * (180 / Math.PI);