ベクトルの長さ
- ベクトル- 矢印付きの文字
- 長さ- ベクトルの大きさ
- 単位ベクトル- 長さ1のベクトル
- 内積- 2つのベクトルから数値を計算
- シータ- 角度を表すギリシャ文字
- 余弦- 角度から比率を求める関数
概要
ベクトルの長さ(大きさ)をピタゴラスの定理を使って計算し、2点間の距離や速度の大きさを求める方法を学びます。
ベクトルの長さとは
ベクトルの長さは、矢印の長さそのものを表します。
前章で学んだように、ベクトル は「横方向に 、縦方向に 移動する」ことを表します。 この長さは、スタート地点から移動先までの直線距離を意味し、実際の移動距離や速度の大きさを表す重要な値です。
実用例:ベクトルの長さはどんな場面で使う?
ベクトルの長さ計算は様々な場面で使われます:
- 2点間の距離計算: キャラクターと敵の距離を測る
- 攻撃範囲判定: 「敵が範囲内にいるか」を判定
- 速度制限: 「最大速度を超えないようにする」制御
ピタゴラスの定理でベクトルの長さを計算する
「東に3歩、北に4歩」進んだ時、スタート地点からの直線距離を求めるには、ピタゴラスの定理を使います。
下の図は、この移動を視覚化したものです。青い矢印が実際に歩いた経路、赤い点線が直線距離を表しています。
この移動を図で見ると、直角三角形ができています。 実際に歩いた経路(東に3歩 + 北に4歩)は合計7歩ですが、直角三角形の斜辺である直線距離は、ピタゴラスの定理で計算できます。
ピタゴラスの定理とは?
直角三角形の3辺の関係を定めた定理
ピタゴラスの定理とは、直角三角形において「2つの短い辺の2乗の和は、斜辺の2乗に等しい」という関係を定めています。
例: 横3、縦4の直角三角形
ベクトル は横 、縦 の直角三角形を作るため、この定理で長さ が求められます。
ベクトルの長さの公式
ベクトル の長さを と表記します。 ピタゴラスの定理から、次のように計算できます。
記号の意味
- : ベクトル(矢印の記号)
- : ベクトルの成分(横、縦)
- : ベクトルの長さ(ノルムや大きさとも呼ぶ)
これらは同じ意味です:
- 「ベクトルの長さ」
- 「ベクトルのノルム」
- 「ベクトルの大きさ」
数学や物理の教科書では「ノルム」という用語がよく使われますが、このチュートリアルでは分かりやすく「長さ」で統一しています。
実際にベクトル の長さを計算してみましょう。
- 答え: 5
√(ルート)って何?
√(ルート) は「平方根(へいほうこん)」とも呼ばれ、「2乗するとこの数になる数」という意味です。
例:
- (なぜなら )
- (なぜなら )
- (なぜなら )
JavaScript実装
ベクトルの長さをJavaScriptで計算してみましょう。
// ベクトルの長さを計算する関数
function getVectorLength(x, y) {
// ステップ1: x と y をそれぞれ2乗
const xSquared = x ** 2; // 例: 3² = 9
const ySquared = y ** 2; // 例: 4² = 16
// ステップ2: 2乗した値を足す
const sum = xSquared + ySquared; // 例: 9 + 16 = 25
// ステップ3: ルート(√)を計算
const length = Math.sqrt(sum); // 例: √25 = 5
return length;
}
// 使用例
const length = getVectorLength(3, 4);
console.log(length); // 5
べき乗(**)とルート(Math.sqrt())とは?
べき乗演算子(**)
x ** 2は「xの2乗」を意味します3 ** 2= 3 × 3 = 94 ** 2= 4 × 4 = 16
ルート(Math.sqrt())
- 2乗した値から元の値を求める関数(平方根を計算)
Math.sqrt(25)= 5(5 × 5 = 25 だから)Math.sqrt(9)= 3(3 × 3 = 9 だから)
ベクトルの長さを求める時は、「2乗して足してルート」の順で計算します。
簡潔な書き方
JavaScriptには Math.hypot() という便利な関数があります。
// Math.sqrt() を使う方法
const length1 = Math.sqrt(x ** 2 + y ** 2);
// Math.hypot() を使う方法(推奨!)
const length2 = Math.hypot(x, y);
// 実際に使ってみよう
const length = Math.hypot(3, 4);
console.log(length); // 5
Math.hypot()のメリット
Math.hypot() は以下の理由で推奨されます:
- 短く読みやすい:
Math.sqrt(x**2 + y**2)より簡潔 - 正確な計算: 非常に大きな数や小さな数でも精度が保たれる
- 複数次元対応: 3次元でも
Math.hypot(x, y, z)と書ける
デモ: 2点間の距離計算を視覚化
下のデモで、2点の位置を変更して距離がどう変わるか観察してみましょう。