JavaScriptで点Qを中心とした点Pの対称点(反射点)を求める方法
点対称とは
「点反射」や「点対称」とは、幾何学における基本的な概念の一つです。中点Qに対して特定の位置にある点Pには、Qから同じ距離にありながら反対方向に位置する対応する点P1が必ず存在します。
問題
ここでは、2次元平面上の2つの点を表すオブジェクトPとQを受け取るJavaScript関数を作成します。この関数は、点Qを中心とした点Pの対称点を計算して返す必要があります。
解法の考え方
対称点を求める数学的なアプローチは非常にシンプルです。点Pと点Qの各座標の差を求め、その差を点Qの座標から引くことで、反対側に位置する対称点の座標が得られます。数式で表すと次のようになります。
P1 = 2Q − P
例
以下が実際のコードです −
const p = {
x: 6, y: -4
};
const q = {
x: 11, y: 5
};
const findReflection = (p = {}, q = {}) => {
const res = {};
const Xdistance = p['x'] - q['x'];
res['x'] = q['x'] - Xdistance;
let Ydistance = p['y'] - q['y'];
res['y'] = q['y'] - Ydistance;
return res;
};
console.log(findReflection(p, q));コードの解説
この関数の処理の流れは以下の通りです。
- まず、点Pと点QのX座標の差(Xdistance)を計算します。
- 次に、点QのX座標からその差を引き、対称点のX座標を求めます。
- Y座標についても同様の手順で、点Pと点QのY座標の差を点QのY座標から引き、対称点のY座標を計算します。
- 最後に、計算結果をオブジェクトとして返します。
出力
以下がコンソールへの出力結果です −
{ x: 16, y: 14 }この結果から、点(6, -4)を点(11, 5)中心に対称移動すると、その対称点は(16, 14)になるとわかります。
-
JavaScriptで別の関数を返す関数の作り方とクロージャの仕組み
JavaScriptで関数を返す関数とは JavaScriptでは、関数の戻り値として別の関数を返すことができます。このテクニックは「クロージャ(closure)」と呼ばれる仕組みと密接に関係しており、返された関数は、外側の関数内で定義された変数にアクセスし続けることができるのが大きな特徴です。 以下は、JavaScriptで関数が別の関数を返すコード例です。 コード例 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <
-
JavaScriptでdivの位置を別のdivを基準に設定する方法|CSS flex-directionの活用
あるdivを基準にして別のdivの位置を設定・入れ替えたい場合は、CSSのFlexboxレイアウトと「flex-direction」プロパティを使うのが最もシンプルな方法です。Flexboxでは、親要素(コンテナー)に対して子要素の並び順や方向を自由に指定できるため、HTMLの記述順序に左右されずに表示位置をコントロールできます。 CSSスタイルの定義 まずは、以下のようなCSSスタイルを用意します。flex-direction に column-reverse を指定すると、子要素が縦方向に逆順で並びます。 <style> .demo{