JS按角度在圆上移动点

8 浏览
0 Comments

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

degree

在上面的示例图片中,计算得到的角度为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的新的xy坐标。然而,坐标与我预期的不符。有人可以指出我错在哪里吗?

0