JS按角度在圆上移动点
JS按角度在圆上移动点
我有一个程序,我点击三次,每次点击都会在画布上创建一个点。然后我通过以下方式计算这三个点之间的角度:
function find_angle(A, B, C) { var AB = Math.sqrt(Math.pow(B.x - A.x, 2) + Math.pow(B.y - A.y, 2)); var BC = Math.sqrt(Math.pow(B.x - C.x, 2) + Math.pow(B.y - C.y, 2)); var AC = Math.sqrt(Math.pow(C.x - A.x, 2) + Math.pow(C.y - A.y, 2)); return Math.acos((BC * BC + AB * AB - AC * AC) / (2 * BC * AB)); }
在上面的示例图片中,计算得到的角度为93°。我需要将点3
的角度减少3°,使得这些点恰好形成90°的角度。我有以下函数:
var angleToCorrect = alpha * (Math.PI / 180) - 90 * (Math.PI / 180); correct_angle(point2, point3, angleToCorrect) ... function correct_angle(p2, p3, angle) { var x = p2.x - p3.x; var y = p2.y - p3.y; var r = Math.sqrt(x * x + y * y); //圆半径。圆的原点是点2 return { X: p2.x + (Math.cos(angle) * r), Y: p2.y + (Math.sin(angle) * r) }; }
现在,这个函数应该返回修正为90°的点3
的新的x
和y
坐标。然而,坐标与我预期的不符。有人可以指出我错在哪里吗?