解答例


問題1

\[ T = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 4 & -1 & 1 \end{bmatrix} \]

答え:

\[ (6, 2) \]


問題2

\[ S = \begin{bmatrix} 3 & 0 & 0 \\ 0 & 2 & 0 \\ 0 & 0 & 1 \end{bmatrix} \]

答え:

\[ (6, 6) \]


問題3

\[ R = \begin{bmatrix} 0 & 1 & 0 \\ -1 & 0 & 0 \\ 0 & 0 & 1 \end{bmatrix} \]

答え:

\[ (0, 1) \]


問題4

\[ S = \begin{bmatrix} 2 & 0 & 0 \\ 0 & 3 & 0 \\ 0 & 0 & 1 \end{bmatrix} \]

\[ T = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 5 & -1 & 1 \end{bmatrix} \]

\[ M = S T = \begin{bmatrix} 2 & 0 & 0 \\ 0 & 3 & 0 \\ 5 & -1 & 1 \end{bmatrix} \]

答え:

\[ (7, 5) \]


問題5

Aは、平行移動してから拡大するので、

\[ M_A = T S \]

\[ M_A = \begin{bmatrix} 2 & 0 & 0 \\ 0 & 2 & 0 \\ 6 & 0 & 1 \end{bmatrix} \]

答え:

\[ (8, 2) \]

Bは、拡大してから平行移動するので、

\[ M_B = S T \]

\[ M_B = \begin{bmatrix} 2 & 0 & 0 \\ 0 & 2 & 0 \\ 3 & 0 & 1 \end{bmatrix} \]

答え:

\[ (5, 2) \]

平行移動の前に拡大するか、後に拡大するかで、移動量も拡大されるかどうかが変わる。


問題6

\[ T = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 4 & -2 & 1 & 1 \end{bmatrix} \]

答え:

\[ (5, 0, 4) \]


問題7

\[ S = \begin{bmatrix} 2 & 0 & 0 & 0 \\ 0 & 3 & 0 & 0 \\ 0 & 0 & 4 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} \]

答え:

\[ (2, 6, 12) \]


問題8

\[ R_y = \begin{bmatrix} 0 & 0 & -1 & 0 \\ 0 & 1 & 0 & 0 \\ 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} \]

答え:

\[ (0, 0, -1) \]


問題9

\[ S = \begin{bmatrix} 2 & 0 & 0 & 0 \\ 0 & 2 & 0 & 0 \\ 0 & 0 & 2 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} \]

\[ R_y = \begin{bmatrix} 0 & 0 & -1 & 0 \\ 0 & 1 & 0 & 0 \\ 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} \]

\[ T = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 3 & 1 & 2 & 1 \end{bmatrix} \]

\[ M = S R_y T = \begin{bmatrix} 0 & 0 & -2 & 0 \\ 0 & 2 & 0 & 0 \\ 2 & 0 & 0 & 0 \\ 3 & 1 & 2 & 1 \end{bmatrix} \]

答え:

\[ (9, 5, 0) \]


問題10

Aは、平行移動してから回転するので、

\[ M_A = T R_y \]

\[ M_A = \begin{bmatrix} 0 & 0 & -1 & 0 \\ 0 & 1 & 0 & 0 \\ 1 & 0 & 0 & 0 \\ 0 & 0 & -5 & 1 \end{bmatrix} \]

答え:

\[ (0, 0, -6) \]

Bは、回転してから平行移動するので、

\[ M_B = R_y T \]

\[ M_B = \begin{bmatrix} 0 & 0 & -1 & 0 \\ 0 & 1 & 0 & 0 \\ 1 & 0 & 0 & 0 \\ 5 & 0 & 0 & 1 \end{bmatrix} \]

答え:

\[ (5, 0, -1) \]

平行移動してから回転すると、移動後の位置全体が原点の周りを回転する。 回転してから平行移動すると、向きだけを変えてから指定方向に移動する。


確認ポイント

DirectX11形式の合成順

点を行ベクトルで扱う場合、

\[ P' = P M \]

である。

そのため、変換順が

  1. 拡大縮小
  2. 回転
  3. 平行移動

なら、

\[ M = S R T \]

になる。


よくある間違い

列ベクトル形式の感覚で、

\[ M = T R S \]

と書くと、DirectX11形式では変換順が逆になってしまう。

このプリントでは、常に

\[ P' = P M \]

として計算する。