hirokonaBlog

ググる→忘れそう→即時メモ 京都のWebデザイナーの備忘録

JavaScriptで三点が同一直線上を通るか調べる

一般には点ABCがあったとして、ABの直線を示すy=ax+bにACを代入してイコールだったら同一線上にあるってことになるらしい。連立方程式・・・プログラムでどうやるんかわからん。。。ので、まなびーのアドバイスに則り、Aを基準としてAB,ACを結んだ点の角度が同じなら同一線上なんじゃね?というので実装してみる。

↓角度がしきい値内だったらゴニョゴニョする。

var array = [{x:Ax,y:Ay},{x:Bx,y:By},{x:Cx,y:Cy}];
var range = 1; //角度の絶対値のしきい値
var _testAngle1,_testAngle2,_index;

//array[i]を座標の0基準としてarray[i+1]とイベント発生座標の角度を比べる
    // Math.atan2() - JavaScript | MDN
    // https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Math/atan2
    //引数は、y 座標が 一番目、x 座標が 二番目
_testAngle1 = Math.atan2(array[1].y - array[0].y , array[1].x - array[0].x )/(Math.PI / 180); //ABの角度
_testAngle2 = Math.atan2(array[2].y - array[0].y , array[2].x - array[0].x )/(Math.PI / 180); //ACの角度

//角度の差の絶対値がrange以内なら
if(Math.abs(_testAngle1 - _testAngle2) <=range){
    // [do something]
}

それっぽいのでけた!じゃの!

点が直線上にあるかどうか – ある点P(x,y)が、点… – 数学 | Yahoo!知恵袋
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1450966049

3つの点が1直線上にあるとき / 数学II by OKボーイ |マナペディア|
http://manapedia.jp/text/654

2点を通る直線の方程式
http://www.geisya.or.jp/~mwm48961/math3/linear_func1.html


投稿日

カテゴリー:

,

投稿者:

タグ:

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください