このツールでできること
「2つのベクトルのなす角 計算ツール」は、2次元または3次元空間における2つのベクトルがなす角を求めるツールです。各ベクトルのX成分・Y成分、そして(必要に応じて)Z成分を入力すると、なす角を度(°)とラジアンの両方で表示します。さらに、内積、各ベクトルの大きさ(ノルム)、なす角の余弦(\(\cos\theta\))も同時に計算します。空間内のあらゆる方向に対応しており、物理学、工学、コンピューターグラフィックス、線形代数など幅広い分野で活用できます。
使い方
1行目にベクトルAの成分、2行目にベクトルBの成分を入力します。2次元ベクトルの場合は、Zの欄を空欄にするか0を入力してください。「計算する」をクリックすると、なす角が表示されます。結果は必ず0°〜180°の範囲になります。これは、内積の比から逆余弦(arccos)を求めると、常に0以上の角度が返されるためです。
計算式の解説
2つのベクトルの内積は、それぞれの大きさの積に、なす角の余弦を掛けた値に等しくなります: $$\vec{a}\cdot\vec{b} = \lVert\vec{a}\rVert\,\lVert\vec{b}\rVert\cos\theta$$。これを変形すると、 $$\theta = \arccos\left(\frac{\vec{a}\cdot\vec{b}}{\lVert\vec{a}\rVert\,\lVert\vec{b}\rVert}\right)$$ となります。内積は \(a_x b_x + a_y b_y + a_z b_z\) で求められ、各ベクトルの大きさは成分の2乗和の平方根として計算します。どちらかのベクトルの長さが0の場合、なす角は定義できません。そのため、このツールではゼロ除算が起こらないように対策しています。
計算例
A =(1, 0, 0)、B =(1, 1, 0)としてみましょう。内積は \(1\times 1 + 0\times 1 + 0\times 0 = 1\) です。それぞれの大きさは \(\lVert A\rVert = 1\)、\(\lVert B\rVert = \sqrt{2} \approx 1.4142\) となります。したがって $$\cos\theta = \frac{1}{1.4142} \approx 0.7071$$ となり、$$\theta = \arccos(0.7071) = 45° \;(\text{およそ } 0.7854\ \text{ラジアン})$$ と求められます。
結果の解釈
このカリキュレーターによって返される角度\(\theta\)は\(0^\circ\)から\(180^\circ\)(\(0\)から\(\pi\)ラジアン)の範囲です。大きさ\(\lVert\vec{A}\rVert\)と\(\lVert\vec{B}\rVert\)は常に正であるため、コサインの符号はドット積の符号と一致します。この1つの事実が、幾何学的な関係を一目で示します:
| 角度\(\theta\) | \(\cos\theta\) | ドット積\(\vec{A}\cdot\vec{B}\) | 幾何学的意味 |
|---|---|---|---|
| \(0^\circ\) | \(+1\) | 正(最大) | 同じ方向 — ベクトルは平行 |
| \(0^\circ\)–\(90^\circ\) | \(0\)と\(+1\)の間 | 正 | 鋭角 — ベクトルは同じ一般的な方向を向く |
| \(90^\circ\) | \(0\) | ゼロ | 直交(垂直) |
| \(90^\circ\)–\(180^\circ\) | \(-1\)と\(0\)の間 | 負 | 鈍角 — ベクトルは一般的な方向で対立 |
| \(180^\circ\) | \(-1\) | 負(最小) | 逆方向 — 反平行 |
クイック読み取りルール:正のドット積は鋭角を意味し、ゼロのドット積は直角を意味し、負のドット積は鈍角を意味します。\(\cos\theta\)が\(\pm 1\)に近いほど、ベクトルは同じ線上にある可能性が高くなります。
定義と用語集
- ベクトル
- \(\vec{A}=(A_x, A_y, A_z)\)のような成分の順序付きリストとして書かれた、大きさと方向の両方を持つ量。
- ベクトル成分(x/y/z)
- ベクトルの座標軸への投影。\(A_x\)、\(A_y\)、\(A_z\)は、ベクトルがそれぞれx軸、y軸、z軸に沿って拡張する量です。2Dベクトルの場合は、\(A_z = 0\)に設定してください。
- ドット積(スカラー積)
- 2つのベクトルから形成される単一の数値:\(\vec{A}\cdot\vec{B} = A_xB_x + A_yB_y + A_zB_z\)。これは\(\lVert\vec{A}\rVert\,\lVert\vec{B}\rVert\cos\theta\)に等しいため、その符号は角度が鋭角、直角、または鈍角かどうかを明らかにします。
- 大きさ(ノルム、長さ)
- ベクトルの長さ、\(\lVert\vec{A}\rVert = \sqrt{A_x^2 + A_y^2 + A_z^2}\)。常に非負です。
- コサイン
- ここで正規化されたドット積\(\dfrac{\vec{A}\cdot\vec{B}}{\lVert\vec{A}\rVert\,\lVert\vec{B}\rVert}\)に等しい三角関数比\(\cos\theta\)。\(-1\)(逆方向)から\(0\)(垂直)を経て\(+1\)(同じ方向)までの範囲です。
- アークコス(逆コサイン)
- コサインからこの角度を復元する関数\(\arccos(x)\)。\(0^\circ\)から\(180^\circ\)(\(0\)から\(\pi\)ラジアン)の値を返します。
- 直交/垂直
- \(90^\circ\)で交わるベクトル。それらのドット積は正確にゼロです。
- 平行/反平行
- 平行ベクトルは同じ方向を向いています(\(\theta = 0^\circ\)、\(\cos\theta = +1\));反平行ベクトルは正確に反対の方向を向いています(\(\theta = 180^\circ\)、\(\cos\theta = -1\))。どちらの場合も、ベクトルは同じ線上にあります。
よくある質問
2次元ベクトルにも対応していますか? はい。Z成分を空欄にするか0を入力するだけで計算できます。
なぜ角度が180°を超えないのですか? 逆余弦(arccos)が返す値は0〜180°の範囲だからです。これは、ベクトルの向きに関係なく、2つの方向の間の「最小の角度」を表します。
結果が90°になるのはどういう意味ですか? 2つのベクトルが垂直(直交)していることを意味します。これは内積がちょうど0になるときに必ず起こります。