回答:
あなたはピタゴラスの定理でそれを行うことができます
2つのポイント(x1、y1)と(x2、y2)がある場合、xの差とyの差を計算できます。それらをaとbと呼びます。
var a = x1 - x2;
var b = y1 - y2;
var c = Math.sqrt( a*a + b*b );
// c is the distance
x1 - x2, y1 - y2
か何か違いはありますかx2 - x1, y2 - y1
?
7 - 5 = 2
か5 - 7 = -2
は問題ではありません。-2 * -2 = 4
2 * 2 = 4
http://en.wikipedia.org/wiki/Euclidean_distance
座標がある場合は、数式を使用して距離を計算します。
var dist = Math.sqrt( Math.pow((x1-x2), 2) + Math.pow((y1-y2), 2) );
プラットフォームが**
operatorをサポートしている場合は、代わりにそれを使用できます。
const dist = Math.sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2);
2つの座標xとyの間の距離!x1とy1は最初の点/位置、x2とy2は2番目の点/位置です!
function diff (num1, num2) {
if (num1 > num2) {
return (num1 - num2);
} else {
return (num2 - num1);
}
};
function dist (x1, y1, x2, y2) {
var deltaX = diff(x1, x2);
var deltaY = diff(y1, y2);
var dist = Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));
return (dist);
};
Math.abs
代わりに使用する必要がありますdiff
。
diff
数を二乗すると常に正の数になるので、使用する必要はありません。x1 - y1
が負の場合、(x1 - y1) ^ 2
まだ正です。
私はこの計算を私が作成するもので多く使用する傾向があるので、Mathオブジェクトに追加したいと思います。
Math.dist=function(x1,y1,x2,y2){
if(!x2) x2=0;
if(!y2) y2=0;
return Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
}
Math.dist(0,0, 3,4); //the output will be 5
Math.dist(1,1, 4,5); //the output will be 5
Math.dist(3,4); //the output will be 5
更新:
このアプローチは、これに似た状況に陥ったときに特に喜んでいます(私はしばしばそうします)。
varName.dist=Math.sqrt( ( (varName.paramX-varX)/2-cx )*( (varName.paramX-varX)/2-cx ) + ( (varName.paramY-varY)/2-cy )*( (varName.paramY-varY)/2-cy ) );
その恐ろしいことがはるかに扱いやすくなります:
varName.dist=Math.dist((varName.paramX-varX)/2, (varName.paramY-varY)/2, cx, cy);