3点の座標からなる角度を求める方法(JavaScript)

JavaScriptで、3点の座標からなる角度を求める方法を書きます。

以下、角度を求める部分のJavaScript。

// plot[0].x、plot[0].yに1つ目のxy座標を代入しておく
// plot[1].x、plot[1].yに2つ目のxy座標を代入しておく
// plot[2].x、plot[2].yに3つ目のxy座標を代入しておく

var ba = new Array(2);
ba[0] = plot[0].x - plot[1].x;
ba[1] = plot[0].y - plot[1].y;
var bc = new Array(2);
bc[0] = plot[2].x - plot[1].x;
bc[1] = plot[2].y - plot[1].y;

var babc = ba[0] * bc[0] + ba[1] * bc[1];
var ban = (ba[0] * ba[0]) + (ba[1] * ba[1]);
var bcn = (bc[0] * bc[0]) + (bc[1] * bc[1]);
var radian = Math.acos(babc / (Math.sqrt(ban * bcn)));
var angle = radian * 180 / Math.PI;  // 結果(ラジアンから角度に変換)

実際の動きは、以下のjsdo.itから見ることができます。

jsdo.it – 3点の座標がなす角を求める(Chrome推奨)

以下のサイトを参考にし、計算して角度を求めています。

画像処理ソリューション(3点からなる角度を求める)

このサイトの式の通りに、そのままプログラムを書いています。

ラジアンが求まるので、最後に、ラジアンから角度に変換しています。

コメント

タイトルとURLをコピーしました