ゲーム開発に必要な基本数学入門
2025.08.15
どもです。
ゲーム開発では、見た目の派手さやストーリーも大事ですが、裏側では数学が多くの表現や挙動を支えています。この記事では、特にゲームの基礎を形作る「線形補間」「三角関数」「行列」「回転」の基本と活用をまとめます。
1. 線形補間(Linear Interpolation)
概要
2つの値の間を一定割合で補う計算。Lerp
(Linear Interpolation)とも呼ばれます。
数式
-
a
… 開始値 -
b
… 終了値 -
t
… 0.0~1.0 の割合
活用例
-
物体の位置を滑らかに移動
-
アニメーションの中間フレーム生成
-
色のフェードイン・フェードアウト
2. 三角関数(Trigonometry)
Angles(角度)
-
度(degrees):0°〜360°
-
ラジアン(radians):0〜2π
多くのゲームエンジンはラジアンを使用
変換式:
radians = degrees × π / 180 degrees = radians × 180 / π
Vectors(ベクトル)
ベクトルは位置や方向を表す基本要素。
2Dなら (x, y)
、3Dなら (x, y, z)
で表現。
-
正規化(normalize):長さを1にすることで方向だけを保持
-
内積(dot):角度や向きの類似度を求める
-
外積(cross):3Dで垂直方向のベクトルを求める
活用例
-
弾丸の進行方向計算
-
キャラクターが向く方向の計算
-
カメラの回転制御
3. 行列(Matrices)
概要
行列は位置・回転・拡縮をひとまとめに変換する数学的ツール。
ゲームでは特に「変換行列(Transformation Matrix)」がよく使われます。
代表的な行列
-
平行移動行列:オブジェクトを移動
-
回転行列:オブジェクトを回転
-
スケーリング行列:拡大・縮小
活用例
-
モデルの座標変換(ローカル座標→ワールド座標)
-
カメラ視点の変換
-
スプライトの回転やズーム
4. 回転(Rotations)
回転の表現方法は複数あり、それぞれ一長一短があります。
ジンバルロック(Gimbal Lock)
-
原因:3軸のうち2軸が同じ方向を向き、自由度が失われる
-
発生例:Euler角での回転中に特定の角度になると、回転が思った通りにならない
Euler Angles(オイラー角)
-
XYZ軸の回転を順番に適用
-
人間に分かりやすい
-
ジンバルロックの影響を受けやすい
Matrices(行列による回転)
-
安定している
-
他の変換(移動・拡縮)とまとめて扱える
-
直感的な編集はやや難しい
Quaternions(クォータニオン)
-
構成:1つのスカラー値 + 3つの虚数成分(x, y, z)
-
ジンバルロックが起きない
-
回転の補間(Slerp)が滑らか
-
数式は複雑だが、ゲームエンジン側でサポートされていることが多い
活用例
-
3Dキャラクターやカメラの回転
-
なめらかな方向転換
-
物理シミュレーションの回転制御
まとめ
-
線形補間:数値や位置をスムーズに変化させる
-
三角関数:角度・方向・距離の計算
-
行列:移動・回転・拡縮をまとめて処理
-
回転の表現:Euler角・行列・クォータニオンの使い分けが重要
ゲーム開発では、これらの数学が組み合わさって自然で魅力的な動きを作り出します。
それでは、これらをRustで実装していきましょう。