两条线之间的角度及其坐标

时间:2018-04-09 20:48:55

标签: javascript math

我想计算用绘制线函数绘制的两条线之间的角度。我有一个看似奇怪的结果(result = 2)!

var c = document.getElementById("Mycanvas");
function drawline1() {
    ctx.beginPath();
    ctx.moveTo(5, 300);
    ctx.lineTo(50, 300);
    ctx.stroke();
}

function drawline2() {
    ctx.beginPath();
    ctx.moveTo(5, 300);
    ctx.lineTo(50, 250);
    ctx.stroke();
}

function claculangle () {
    var angle1 = Math.atan2(300 - 250, 5 - 50);
    var angle2 = Math.atan2(300 - 300, 50 - 5);
    var k = angle1 - angle2;
    alert(k);
}

1 个答案:

答案 0 :(得分:0)

如果您有两个由点(x00,y00)-(x01,y01)(x10,y10)-(x11,y11)定义的行,那么您可以通过单个atan2调用角度来利用交叉积和向量的点积

function calcangle (x00,y00,x01,y01,x10,y10,x11,y11) {
    var dx0  = x01 - x00;
    var dy0  = y01 - y00;
    var dx1  = x11 - x10;
    var dy1  = y11 - y10;
    angle = Math.atan2(dx0 * dy1 - dx1 * dy0, dx0 * dx1 + dy0 * dy1);
    writeln(angle);
    writeln(angle*180/3.1415926);
}
calcangle(5, 300, 50, 300, 5, 300, 50, 250);

以弧度和度tested here

给出角度
-0.83798122500839
-48.012788323193206

注意:这是旋转第一个段以使其与第二个段以最短路径共线的角度,这就是值为负的原因。也许您可能需要使用绝对值。