2013-07-20 33 views
12

Voglio ottenere l'angolo tra 3 punti in JavaScript. Se ho punti A (x1, y1), B (x2, y2), C (x3, y3) voglio ottenere l'angolo che si forma con le linee AB e BC.Come calcolare in JavaScript l'angolo tra 3 punti?

E inoltre mi chiedo, se c'è una differenza di angolo se questi punti sono le coordinate geografiche?

risposta

23

Prova questa funzione:

/* 
* 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

Come utilizzare questa funzione? Qualche esempio? Devo passare Array come parametro ?! – Black

+1

@EdwardBlack se si guarda il codice, i punti vengono passati come un oggetto con la forma '{x: 0, y: 0}'. Ho modificato la risposta per riflettere questo. –

+2

per convertire in gradi '(find_angle (A, B, C) * 180)/Math.PI' –