ベクトルの長さ

記号の意味
ベクトル- 矢印付きの文字
長さ- ベクトルの大きさ
単位ベクトル- 長さ1のベクトル
内積- 2つのベクトルから数値を計算
シータ- 角度を表すギリシャ文字
余弦- 角度から比率を求める関数

概要

ベクトルの長さ(大きさ)をピタゴラスの定理を使って計算し、2点間の距離や速度の大きさを求める方法を学びます。

ベクトルの長さとは

ベクトルの長さは、矢印の長さそのものを表します。

前章で学んだように、ベクトル (x,y)(x, y) は「横方向に xx、縦方向に yy 移動する」ことを表します。 この長さは、スタート地点から移動先までの直線距離を意味し、実際の移動距離や速度の大きさを表す重要な値です。

実用例:ベクトルの長さはどんな場面で使う?

ベクトルの長さ計算は様々な場面で使われます:

  • 2点間の距離計算: キャラクターと敵の距離を測る
  • 攻撃範囲判定: 「敵が範囲内にいるか」を判定
  • 速度制限: 「最大速度を超えないようにする」制御

ピタゴラスの定理でベクトルの長さを計算する

「東に3歩、北に4歩」進んだ時、スタート地点からの直線距離を求めるには、ピタゴラスの定理を使います。

下の図は、この移動を視覚化したものです。青い矢印が実際に歩いた経路、赤い点線が直線距離を表しています。

スタート東に3歩北に4歩ゴール直線距離 = ?

この移動を図で見ると、直角三角形ができています。 実際に歩いた経路(東に3歩 + 北に4歩)は合計7歩ですが、直角三角形の斜辺である直線距離は、ピタゴラスの定理で計算できます。

ピタゴラスの定理とは?

直角三角形の3辺の関係を定めた定理

ピタゴラスの定理とは、直角三角形において「2つの短い辺の2乗の和は、斜辺の2乗に等しい」という関係を定めています。

a2+b2=c2a^2 + b^2 = c^2

a = 3b = 4c = 5.0

: 横3、縦4の直角三角形

  • 32+42=c23^2 + 4^2 = c^2
  • 9+16=259 + 16 = 25
  • c=25=5c = \sqrt{25} = 5

ベクトル (x,y)(x, y) は横 xx、縦 yy の直角三角形を作るため、この定理で長さ x2+y2\sqrt{x^2 + y^2} が求められます。

ベクトルの長さの公式

ベクトル v=(x,y)\vec{v} = (x, y) の長さを v\|\vec{v}\| と表記します。 ピタゴラスの定理から、次のように計算できます。

v=x2+y2\|\vec{v}\| = \sqrt{x^2 + y^2}

記号の意味
  • v\vec{v}: ベクトル(矢印の記号)
  • (x,y)(x, y): ベクトルの成分(横、縦)
  • v\|\vec{v}\|: ベクトルの長さ(ノルム大きさとも呼ぶ)

これらは同じ意味です:

  • 「ベクトルの長さ」
  • 「ベクトルのノルム」
  • 「ベクトルの大きさ」

数学や物理の教科書では「ノルム」という用語がよく使われますが、このチュートリアルでは分かりやすく「長さ」で統一しています。

実際にベクトル (3,4)(3, 4) の長さを計算してみましょう。

1横と縦をそれぞれ2乗
  • x2=32=9x^2 = 3^2 = 9
  • y2=42=16y^2 = 4^2 = 16
22つを足す
  • x2+y2=9+16=25x^2 + y^2 = 9 + 16 = 25
3√(ルート)を計算
  • x2+y2=25=5\sqrt{x^2 + y^2} = \sqrt{25} = 5
  • 答え: 5
√(ルート)って何?

√(ルート) は「平方根(へいほうこん)」とも呼ばれ、「2乗するとこの数になる数」という意味です。

例:

  • 25=5\sqrt{25} = 5 (なぜなら 5×5=255 \times 5 = 25
  • 16=4\sqrt{16} = 4 (なぜなら 4×4=164 \times 4 = 16
  • 9=3\sqrt{9} = 3 (なぜなら 3×3=93 \times 3 = 9

JavaScript実装

ベクトルの長さを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 = 9
  • 4 ** 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() という便利な関数があります。

JavaScript
// 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点の位置を変更して距離がどう変わるか観察してみましょう。

点1(赤)

点2(緑)

ベクトル
解説
ベクトルの長さ
解説