2013-07-20 162 views
12

我想在JavaScript中获得3个点之间的角度。如果我有点A(x1,y1),B(x2,y2),C(x3,y3),我想获得由AB和BC线组成的角度。如何用JavaScript角度计算3点?

而且我想知道,如果这些点是地理坐标,是否存在角度差异?

回答

23

试试这个功能:

/* 
* Calculates the angle ABC (in radians) 
* 
* A first point, ex: {x: 0, y: 0} 
* C second point 
* B center point 
*/ 
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)); 
} 
+0

如何使用这个功能呢?任何例子?我必须传递数组作为参数吗?! – Black

+1

@EdwardBlack如果你看看代码,点将作为一个形式为'{x:0,y:0}'的对象传入。我编辑了答案来反映这一点。 –

+2

以转换为度数'(find_angle(A,B,C)* 180)/ Math.PI' –