2013-07-20 36 views
12

Ich möchte einen Winkel zwischen 3 Punkten in JavaScript bekommen. Wenn ich die Punkte A (x1, y1), B (x2, y2), C (x3, y3) habe, möchte ich einen Winkel erhalten, der mit den Linien AB und BC gebildet wird.Wie in JavaScript Winkel zwischen 3 Punkten zu berechnen?

Und ich frage mich auch, ob es einen Unterschied im Winkel gibt, wenn diese Punkte geografische Koordinaten sind?

Antwort

23

diese Funktion versuchen:

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

Wie diese Funktion nutzen? Irgendwelche Beispiele? Muss ich Arrays als Parameter übergeben ?! – Black

+1

@EdwardBlack Wenn Sie sich den Code anschauen, werden die Punkte als Objekt mit der Form '{x: 0, y: 0}' übergeben. Ich habe die Antwort bearbeitet, um dies zu reflektieren. –

+2

in Grad umwandeln (find_angle (A, B, C) * 180)/Math.PI' –