Skip to main content

01.座標・ベクトル

これまでの授業で扱った数学を、ゲームで何に使うのかと結び付けながら振り返ろう!

このワークでは、長い公式を丸暗記することよりも、何を求めたいのか → どの数学を使うのか → 求めた値をゲームのどこで使うのかを確認します。

1.座標とアフィン変換

アフィン変換の板書

ゲームのモデルは頂点の座標からできています。
そのため、「動かす」「回す」「大きくする」といった処理は、どれも座標を別の座標へ変換する処理として考えることができます。

このような座標の変換をまとめて扱うものの1つが、アフィン変換です。

アフィン変換には、代表的なものとして次のような変換があります。

  • 平行移動:位置を移動する
  • 回転:向きを変える
  • 拡大縮小:大きさを変える
  • スキュー(せん断):図形を斜めに変形する
  • 鏡映:図形を反転する

ゲームでは特に、平行移動・回転・拡大縮小を組み合わせて、モデルの位置・向き・大きさを変えることがよくあります。

Q01.どのアフィン変換を使う?

次の操作をするとき、どのアフィン変換を使うか対応させてください。

操作 アフィン変換
キャラクターを右へ移動する ______
キャラクターを90度回す ______
キャラクターを2倍の大きさにする ______
四角形を斜めに変形する ______
左右を反転した形にする ______

選択肢:平行移動・回転・拡大縮小・スキュー・鏡映

答え
  • 右へ移動する → 平行移動
  • 90度回す → 回転
  • 2倍の大きさにする → 拡大縮小
  • 斜めに変形する → スキュー
  • 左右を反転する → 鏡映

Q02.平行移動してみよう

点 $P=(2,-1)$ をX方向へ4、Y方向へ3移動します。移動後の座標 $P'$ を求めてください。

答え:$P'=(___,___)$

答え

$P'=(2+4,-1+3)=(6,2)$

Q03.拡大縮小してみよう

点 $P=(3,-2)$ を、X方向に2倍、Y方向に0.5倍します。変換後の座標を求めてください。

答え:$P'=(___,___)$

答え

$P'=(3\times2,-2\times0.5)=(6,-1)$

Q04.90度回転するとどこへ行く?

原点を中心に点 $P=(2,1)$ を反時計回りに90度回転しました。移動後の座標を選んでください。

  • A.$(1,2)$
  • B.$(-1,2)$
  • C.$(1,-2)$
  • D.$(-2,-1)$
答え

B.$(-1,2)$

90度反時計回りでは $(x,y)\rightarrow(-y,x)$ です。

Q05.アフィン変換でまとめて扱えるものは?

アフィン変換としてまとめて扱えるものをすべて選んでください。

  • A.平行移動
  • B.回転
  • C.拡大縮小
  • D.音量変更
  • E.せん断
答え

A・B・C・E

ゲームでは特に、平行移動・回転・拡大縮小を組み合わせてモデルを配置します。


2.ベクトルで方向と距離を表そう

ベクトルは、ゲームで方向・距離・速度・向きを扱うための基本です。

Q06.敵への方向ベクトルを求めよう

プレイヤーの位置を $P=(1,2)$、敵の位置を $E=(5,5)$ とします。プレイヤーから敵へ向かうベクトル $D=E-P$ を求めてください。

答え:$D=(___,___)$

答え

$D=(5-1,5-2)=(4,3)$

Q07.ベクトルの長さを求めよう

ベクトル $V=(4,3)$ の長さ $|V|$ を求めてください。

答え:______

答え

$$ |V|=\sqrt{4^2+3^2}=5 $$

Q08.2点間の距離を求めよう

3次元空間で $A=(1,2,3)$、$B=(4,6,3)$ とします。まず $B-A$ を求め、続けてAとBの距離を求めてください。

  • $B-A=(___,___,___)$
  • 距離:______
答え

$B-A=(3,4,0)$、距離は $\sqrt{3^2+4^2+0^2}=5$ です。

**2点間の距離は「2点の差ベクトルの長さ」**として求められます。

Q09.単位ベクトルを選ぼう

$V=(4,3)$ を正規化した単位ベクトルを選んでください。

  • A.$(4,3)$
  • B.$(2,1.5)$
  • C.$(0.8,0.6)$
  • D.$(0.4,0.3)$
答え

C.$(0.8,0.6)$

$|V|=5$ なので $(4,3)\div5=(0.8,0.6)$ です。

Q10.正規化すると何が変わる?

0ではないベクトルを正規化したときの説明として正しいものを選んでください。

  • A.向きは変わらず、長さが1になる
  • B.長さは変わらず、向きだけが変わる
  • C.必ずX軸方向を向く
  • D.すべての成分が1になる
答え

A.向きは変わらず、長さが1になる

方向と速さを分けて扱いたいときに正規化が重要になります。

Q11.単位ベクトルに速さを掛けると?

進行方向の単位ベクトルが $F=(0.6,0.8)$、速さが $10\ \mathrm{unit/s}$ です。1秒あたりの移動ベクトル $F\times Speed$ を求めてください。

答え:$(___,___)$

答え

$(0.6,0.8)\times10=(6,8)$

向きは単位ベクトル、移動量は速さとして分けて考えられます。


3.内積と外積は何に使う?

Q12.内積でできることを選ぼう

内積を使ってできることとして正しいものをすべて選んでください。

  • A.2つの方向がどれくらい同じ方向を向いているか調べる
  • B.2つのベクトルが直角かどうか調べる
  • C.視野角の判定に利用する
  • D.面に垂直な法線ベクトルを直接求める
  • E.2本のベクトルに垂直な方向を求める
答え

A・B・C

内積は $A\cdot B=|A||B|\cos\theta$ なので、2つの方向の角度関係を調べるのに向いています。

Q13.内積の値と向きの関係を対応させよう

単位ベクトル同士の内積について対応させてください。

内積 おおよその関係
$1$ に近い ______
$0$ に近い ______
$-1$ に近い ______

選択肢:同じ向き・ほぼ直角・反対向き

答え
  • $1$ に近い → 同じ向き
  • $0$ に近い → ほぼ直角
  • $-1$ に近い → 反対向き

Q14.外積でできることを選ぼう

外積を使ってできることとして正しいものをすべて選んでください。

  • A.ある方向から見て、対象が左右どちら側にいるかを判定する
  • B.面に垂直な法線ベクトルを求める
  • C.2点間の距離を求める
  • D.2つのベクトルのなす角度を直接求める
  • E.2本のベクトルに垂直な方向を求める
答え

A・B・E

外積は2本のベクトルに垂直なベクトルを作れるため、その向きや符号を利用した左右判定、面の法線などに使えます。

Q15.外積の使い方と理由を対応させよう

外積の使い方 理由
① キャラクターから見て敵が左右どちらにいるか判定する ______
② 三角形の面の法線ベクトルを求める ______

理由:

  • A.外積の向きや成分の符号から、2つの方向の位置関係を判定できる
  • B.2本の辺ベクトルに垂直なベクトルを求められる
  • C.ベクトルの長さを1にできる
  • D.2点間の距離を求められる
答え
  • ① → A
  • ② → B

左右判定でどちらの符号を「左」「右」とするかは、座標系と外積を取る順番によって変わります。ここでは「外積を何に使えるか」を押さえておきましょう。