我想计算用绘制线函数绘制的两条线之间的角度。我有一个看似奇怪的结果(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);
}
答案 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
注意:这是旋转第一个段以使其与第二个段以最短路径共线的角度,这就是值为负的原因。也许您可能需要使用绝对值。