确定3个坐标之间的角度

时间:2016-03-31 13:33:04

标签: javascript math

正如您在我的屏幕截图中看到的,我尝试计算坐标AB和BC之间的角度,在这种情况下,角度显然是90°。但是如何用javascript代码确定这个角度?

I try to determine the angle between AB and BC

我找到了这个thread并尝试了接受的解决方案,但我总是得到1.57而不是我预期的90。我重写了原始函数,因为我不明白如何将参数传递给它。

请原谅我糟糕的油漆和数学技巧。

	function find_angle(Ax,Ay,Bx,By,Cx,Cy)
	{
		var AB = Math.sqrt(Math.pow(Bx-Ax,2)	+	Math.pow(By-Ay,2));    
		var BC = Math.sqrt(Math.pow(Bx-Cx,2)	+ 	Math.pow(By-Cy,2)); 
		var AC = Math.sqrt(Math.pow(Cx-Ax,2)	+ 	Math.pow(Cy-Ay,2));
		
		return Math.acos((BC*BC+AB*AB-AC*AC)	/	(2*BC*AB));
	}
	var angle = find_angle
				(
					4 ,		//Ax
					3 ,		//Ay
					
					4 ,		//Bx
					2 ,		//By
					
					0 ,		//Cx
					2		//Cy
				)
				
	alert ( angle );

2 个答案:

答案 0 :(得分:6)

答案在该帖子的 radians 中给出。

1.57弧度是90度(pi / 2)。您可以将答案转换为度数,将其乘以180 / pi。



A = { x: 4, y: 3 };
B = { x: 4, y: 2 };
C = { x: 0, y: 2 };

alert(find_angle(A,B,C));

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)) * (180 / Math.PI);   
}




答案 1 :(得分:3)

设置DivisionNamev = A - B。那么w = C - Bv之间的角度是wvx+i*vy之间的角度是wx+i*wy的参数(作为复数),这取决于积极因素

w/v

复数的参数最好使用(wx+i*wy)*(vx-i*vy)=wx*vx+wy*vy+i*(wy*vx-wx*vy). 函数计算,因此

atan2

如前所述,使用的角度为弧度,因此如果需要,您必须转换为度数。