====== 解答例 ====== ---- ===== 問題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 \] である。 そのため、変換順が - 拡大縮小 - 回転 - 平行移動 なら、 \[ M = S R T \] になる。 ---- ===== よくある間違い ===== 列ベクトル形式の感覚で、 \[ M = T R S \] と書くと、DirectX11形式では変換順が逆になってしまう。 このプリントでは、常に \[ P' = P M \] として計算する。