试图计算圆上两点之间的角度?

首先,让我说我对数学绝对是残酷的,请耐心等待。

我正在尝试计算圆上两点之间的角度,这两点是用户在一定时间内拖动的距离。

这是我到目前为止:

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); 

首先找出起点和终点之间的差异。

 deltaY = P2_y - P1_y deltaX = P2_x - P1_x 

然后使用arctan计算角度

 angleInDegrees = atan2(deltaY ,deltaX) * 180 / PI