JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで2次元平面上の2点間の距離を求める方法


問題

x・yプロパティを持つ2つのオブジェクト(平面上の2点を表す)を受け取り、それらの点間の距離を計算して返すJavaScript関数を作成する必要があります。

距離の計算式

2次元平面上の2点間の距離は、ユークリッド距離の公式を使って求められます。

d = √((x₂ − x₁)² + (y₂ − y₁)²)

つまり、x座標の差の2乗とy座標の差の2乗を足し合わせ、その平方根を取ればよいことになります。JavaScriptでは Math.sqrt() メソッドと指数演算子(**)を組み合わせることで、この計算を簡単に実装できます。

実装例

以下が実際のコードです −

const a = {x: 5, y: -4};
const b = {x: 8, y: 12};

const distanceBetweenPoints = (a = {}, b = {}) => {
    const x1 = a.x,
    x2 = b.x,
    y1 = a.y,
    y2 = b.y;

    const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);

    return distance;
};

console.log(distanceBetweenPoints(a, b));

出力結果

16.278820596099706

コードの解説

このコードでは、まず引数として渡された2つのオブジェクトから各座標値(x1、x2、y1、y2)を取り出しています。デフォルト引数(= {})を指定することで、引数が渡されなかった場合でもエラーが発生しないようにしています。

次に、x座標の差 (x2 - x1) を2乗し、同様にy座標の差 (y2 - y1) を2乗したものを加算します。最後に Math.sqrt() で平方根を求めることで、正確な直線距離が得られます。

今回の例では、点a(5, -4) と点b(8, 12) の間の距離は約 16.28 となります。


  1. JavaScriptで2つの配列の差分(共通しない要素)を見つける方法

    はじめにJavaScriptでは、2つの配列を比較して「片方にしか存在しない要素」を取り出したい場面がよくあります。例えば、以下のような2つの数値配列があったとします。const arr1 = [12, 54, 2, 4, 6, 34, 3]; const arr2 = [54, 2, 5, 12, 4, 1, 3, 34];この2つの配列には、両方に含まれる共通の要素(12、54、2、4、3、34)があります。一方で、arr1 にだけある要素は「6」、arr2 にだけある要素は「5」と「1」です。今回は、2つの配列を受け取って、どちらか一方にのみ存在する要素をすべて返す関数を作成します。実装

  2. Day.jsを使って2つの時刻の差を求める方法【JavaScript】

    日付や時刻を扱う際、軽量で使いやすいJavaScriptライブラリ「Day.js」が便利です。この記事では、Day.jsを使って2つの時刻の差(時間数)を計算する方法を解説します。 時刻データの準備 まず、比較対象となる開始時刻と終了時刻をdayjs()で作成します。ここでは例として、開始時刻を10時、終了時刻を22時に設定します。 var startHour = dayjs().hour(10) var endHour = dayjs().hour(22) diff()メソッドで時刻の差を取得する 2つの時刻の差を求めるには、diff()メソッドを使用します。第1引数に比較対象のDay.js