04.補間・スプライン
11.LERPで途中を作ろう

LERP(線形補間)は、開始値 $A$ と終了値 $B$ の間を、補間係数 $t$ を使って求める方法です。
Q48.補間係数 $t$ の意味を確認しよう
$P=(1-t)A+tB$ について対応させてください。
| $t$ | $P$ |
|---|---|
| $t=0$ | ______ |
| $t=0.5$ | ______ |
| $t=1$ | ______ |
選択肢:A・AとBのちょうど中間・B
答え
- $t=0$ → A
- $t=0.5$ → AとBのちょうど中間
- $t=1$ → B
Q49.LERPを計算しよう
開始値 $A=20$、終了値 $B=60$、$t=0.25$ とします。$P=(1-t)A+tB$ で求めた値はいくつですか。
答え:______
答え
$P=0.75\times20+0.25\times60=30$
Q50.LERPが使える場面を選ぼう
LERPを利用しやすい例をすべて選んでください。
- A.キャラクターの位置をA地点からB地点へ補間する
- B.カメラの距離を徐々に変える
- C.値を0から1へ徐々に変える
- D.AABBの最近点を直接求める
答え
A・B・C
LERPは「2つの値の間」を作る処理なので、位置だけでなくさまざまな数値に使えます。
Q51.複数点をLERPだけでつなぐと?
複数の制御点を順番に直線補間してつないだ場合、経路はどのようになりやすいですか。
- A.折れ線になる
- B.必ず円になる
- C.必ず滑らかな曲線になる
- D.すべての点が同じ位置になる
答え
A.折れ線になる
そこで、複数点を滑らかな曲線でつなぎたいときにスプラインを使います。
12.スプラインは種類と使いどころを押さえよう

スプラインでは、長い公式を暗記するより、どんな情報から曲線を作るのか・何に向いているのかを押さえましょう。
Q52.スプラインの種類と使いどころ
次の特徴・使いどころに合う曲線を対応させてください。
| 特徴・主な使いどころ | 曲線 |
|---|---|
| 始点・終点と制御点で形を調整しやすく、UIの軌跡や弾道などで使われる | ______ |
| 始点・終点と、それぞれの接線ベクトルで進行方向を指定する | ______ |
| 制御点を通る滑らかな経路を作りやすく、敵の移動経路やカメラレールに向く | ______ |
| 多数の制御点から滑らかな曲線を作り、道路や長いコースなどに向く | ______ |
| 制御点に重みを持たせられ、CADやモデリングでよく使われる | ______ |
選択肢:ベジェ・エルミート・Catmull-Rom・Bスプライン・NURBS
答え
- UIの軌跡や弾道 → ベジェ
- 接線ベクトルで方向を指定 → エルミート
- 敵の経路やカメラレール → Catmull-Rom
- 道路や長いコース → Bスプライン
- CADやモデリング → NURBS
Q53.XMVectorCatmullRom の引数を確認しよう
DirectXMathでは、Catmull-Romスプライン上の位置を次のように求められます。
XMVECTOR p = XMVectorCatmullRom(P0, P1, P2, P3, t);
穴埋めしてください。
P0~P3:4個の______t:曲線区間上の______を表す値- 通常の
tの範囲:______ ~ ______
答え
P0~P3:4個の制御点t:曲線区間上の位置を表す値t:0 ~ 1
Q54.Catmull-Romで実際に求める区間は?
XMVectorCatmullRom(P0, P1, P2, P3, t) について対応させてください。
| 条件 | 位置・役割 |
|---|---|
t = 0 |
______ |
t = 1 |
______ |
P0 と P3 |
______ |
選択肢:P1・P2・P1へ入る向きとP2から出る向きを決めるために使う
答え
t = 0→ P1t = 1→ P2P0とP3→ P1へ入る向きとP2から出る向きを決めるために使う
つまり、4点を渡して実際に求める曲線区間は P1~P2 です。
Q55.どの曲線ができる?
同じ4点 P0, P1, P2, P3 を XMVectorCatmullRom(P0, P1, P2, P3, t) に渡し、t を0から1まで変化させました。実際に描かれるCatmull-Romの区間をA~Dから選んでください。

- A
- B
- C
- D
答え
C
t=0 でP1から始まり、t=1 でP2へ到達し、P0・P3の影響を受けて滑らかに曲がります。
13.最後に整理しよう
Q56.ゲームでやりたいことと数学を対応させよう
| ゲームでやりたいこと | 使う数学・処理 |
|---|---|
| 敵までの方向を求めたい | ______ |
| 2点間の距離を求めたい | ______ |
| 敵が正面にいるか調べたい | ______ |
| 左右判定や法線を扱いたい | ______ |
| モデルの移動・回転・拡大縮小をまとめたい | ______ |
| フレームレートに依存しない速度で動かしたい | ______ |
| 球からAABB上の最近点を求めたい | ______ |
| 2点の間の値を作りたい | ______ |
| 制御点を通る滑らかな経路を作りたい | ______ |
選択肢:差ベクトル・ベクトルの長さ・内積・外積・行列・DeltaTime・clamp・LERP・Catmull-Rom
答え
- 敵までの方向 → 差ベクトル
- 2点間の距離 → ベクトルの長さ
- 正面にいるか → 内積
- 左右判定や法線 → 外積
- 移動・回転・拡大縮小をまとめる → 行列
- フレームレートに依存しない移動 → DeltaTime
- AABB上の最近点 → clamp
- 2点間の値 → LERP
- 制御点を通る滑らかな経路 → Catmull-Rom
このワークを一通り解いて、間違えた問題の理由まで確認できれば、前期に扱った数学の主要部分を一周したことになります。
No Comments