Teachers open the door but You must enter by yourself.

PRIVATE

Open Media Lab.
オープンメディアラボ

$$ \newcommand\Vec[1]{\overrightarrow{\rm{#1}}} $$

座標変換
Coordinate Transformation

本章では行列による座標変換について学ぶ。

一次変換

変換後の値が変換前の値の重み付き和となっている。原点を中心とする拡大縮小、座標軸対称、原点対象、原点周りの回転などの変換を表すことができる。原点を一次変換した結果は必ず原点となる。

\( \begin{eqnarray} \left\{ \begin{array}{l} x'=a x + b y\\ y' = c x + d y \end{array} \right. \end{eqnarray} \)
 
\(\begin{pmatrix}x'\\y'\end{pmatrix}=\begin{pmatrix}a &b\\c &d\end{pmatrix}\begin{pmatrix}x\\y\end{pmatrix}\)

※ \((1,0)\) が \((a,c)\) に、\((0,1)\) が \((b,d)\) に写像される。
行列の変換式では2次元ベクトルをすべて縦に見る。

X方向に2倍拡大

\( \begin{eqnarray} \left\{ \begin{array}{l} x'=2 x\\ y' = y \end{array} \right. \end{eqnarray} \)
 
\( \begin{eqnarray} \left\{ \begin{array}{l} x'=2x +0y\\ y'=0x +1y \end{array} \right. \end{eqnarray} \)
 
\(\begin{pmatrix}x'\\y'\end{pmatrix}=\begin{pmatrix}2 &0\\0 &1\end{pmatrix}\begin{pmatrix}x\\y\end{pmatrix}\)

※ \((1,0)\) が \((2,0)\) に、\((0,1)\) が \((0,1)\) に写像される。

Y軸対称

\( \begin{eqnarray} \left\{ \begin{array}{l} x'=-x\\ y' = y \end{array} \right. \end{eqnarray} \)
 
\(\begin{pmatrix}x'\\y'\end{pmatrix}=\begin{pmatrix}-1 &0\\0 &1\end{pmatrix}\begin{pmatrix}x\\y\end{pmatrix}\)

※ \((1,0)\) が \((-1,0)\) に、\((0,1)\) が \((0,1)\) に写像される。

回転(反時計回り方向が正)

\( \begin{eqnarray} \left\{ \begin{array}{l} x'=\cos\theta x - \sin\theta y\\ y' = \sin\theta x + \cos\theta y \end{array} \right. \end{eqnarray} \)
 
\(\begin{pmatrix}x'\\y'\end{pmatrix}=\begin{pmatrix}\cos\theta &-\sin\theta\\\sin\theta &\cos\theta\end{pmatrix}\begin{pmatrix}x\\y\end{pmatrix}\)

※ \((1,0)\) が \((\cos\theta,\sin\theta\ )\) に、\((0,1)\) が \((-\sin\theta,\cos\theta\ )\) に写像される。

アフィン変換

一次変換に平行移動 \((e,f)\) を加えたもの。これにより原点が固定される一次変換以外の変換が実現できるようになる。

\( \begin{eqnarray} \left\{ \begin{array}{l} x'=a x + b y+e\\ y' = c x + d y+f \end{array} \right. \end{eqnarray} \)
 
\(\begin{pmatrix}x'\\y'\end{pmatrix}=\begin{pmatrix}a &b\\c &d\end{pmatrix}\begin{pmatrix}x\\y\end{pmatrix}+\begin{pmatrix}e\\f\end{pmatrix}\)

アフィン変換の同次座標表現

複数のアフィン変換の合成を行列の積で表せるようにしたもの

\(\begin{pmatrix}x'\\y'\\1\end{pmatrix}=\begin{pmatrix}a &b &e\\c &d &f\\0 &0 &1\end{pmatrix}\begin{pmatrix}x\\y\\1\end{pmatrix}\)

ベーシック24年前期27問の変換式
Transformation Equation in Basic Question

a.のアフィン変換

\( \begin{eqnarray} \left\{ \begin{array}{l} x'=x+5\\ y'=y-4 \end{array} \right. \end{eqnarray} \)   \( \begin{eqnarray} \left\{ \begin{array}{l} x'=1x +0y +5\\ y'=0x +1y -4 \end{array} \right. \end{eqnarray} \)
 
\(\begin{pmatrix}x'\\y'\end{pmatrix}=\begin{pmatrix}1 &0\\0 &1\end{pmatrix}\begin{pmatrix}x\\y\end{pmatrix}+\begin{pmatrix}5\\-4\end{pmatrix}\)

同次座標表現

\(\begin{pmatrix}x'\\y'\\1\end{pmatrix}=\begin{pmatrix}1 &0 &5\\0 &1 &-4\\0 &0 &1\end{pmatrix}\begin{pmatrix}x\\y\\1\end{pmatrix}\)

b.のアフィン変換

\( \begin{eqnarray} \left\{ \begin{array}{l} x'=\frac{1}{2}x\\ y'=\frac{1}{2}y \end{array} \right. \end{eqnarray} \)   \( \begin{eqnarray} \left\{ \begin{array}{l} x'=\frac{1}{2}x +0y +0\\ y'= 0x +\frac{1}{2}y +0 \end{array} \right. \end{eqnarray} \)
 
\(\begin{pmatrix}x'\\y'\end{pmatrix}=\begin{pmatrix}\frac{1}{2} &0\\0 &\frac{1}{2}\end{pmatrix}\begin{pmatrix}x\\y\end{pmatrix}+\begin{pmatrix}0\\0\end{pmatrix}\)

同次座標表現

\(\begin{pmatrix}x'\\y'\\1\end{pmatrix}=\begin{pmatrix}\frac{1}{2} &0 &0\\0 &\frac{1}{2} &0\\0 &0 &1\end{pmatrix}\begin{pmatrix}x\\y\\1\end{pmatrix}\)

c.アのアフィン変換

\( \begin{eqnarray} \left\{ \begin{array}{l} x'=x\\ y'=-y+6 \end{array} \right. \end{eqnarray} \)   \( \begin{eqnarray} \left\{ \begin{array}{l} x'=1x +0y+0\\ y'=0x -1y+6 \end{array} \right. \end{eqnarray} \)
 
\(\begin{pmatrix}x'\\y'\end{pmatrix}=\begin{pmatrix}1 &0\\0 &-1\end{pmatrix}\begin{pmatrix}x\\y\end{pmatrix}+\begin{pmatrix}0\\6\end{pmatrix}\)

同次座標表現

\(\begin{pmatrix}x'\\y'\\1\end{pmatrix}=\begin{pmatrix}1 &0 &0\\0 &-1 &6\\0 &0 &1\end{pmatrix}\begin{pmatrix}x\\y\\1\end{pmatrix}\)

c.イのアフィン変換

\( \begin{eqnarray} \left\{ \begin{array}{l} x'=-x+6\\ y'=y \end{array} \right. \end{eqnarray} \)   \( \begin{eqnarray} \left\{ \begin{array}{l} x'=-1x +0y +6\\ y'= 0x +1y +0 \end{array} \right. \end{eqnarray} \)
 
\(\begin{pmatrix}x'\\y'\end{pmatrix}=\begin{pmatrix}-1 &0\\0 &1\end{pmatrix}\begin{pmatrix}x\\y\end{pmatrix}+\begin{pmatrix}6\\0\end{pmatrix}\)

同次座標表現

\(\begin{pmatrix}x'\\y'\\1\end{pmatrix}=\begin{pmatrix}-1 &0 &6\\0 &1 &0\\0 &0 &1\end{pmatrix}\begin{pmatrix}x\\y\\1\end{pmatrix}\)

エキスパート24年前期1問の行列表現
Matrix Explanation

a.

Y方向の正の方向に平行移動 → \(c=0, f=\)正の数
変形がない → 3×3行列の要素のうち \(abde=1001\)(単位行列)
答えは\(M_2\)(イ)

b.

Yの正の方向への平行移動と\(-45^\circ\)回転の合成
平行移動と回転はどっちが先か?
回転は原点中心なので、平行移動→\(-45^\circ\)回転 だとオブジェクトの中心はY軸から外れるので誤り
正解は \(-45^\circ\)回転→平行移動
\(-45^\circ\)は一見して \(M_4\)または\(M_5\)、負の回転(時計回り)なので3×3行列の\(d=-\sin\theta<0\)となっている \(M_5\)
つまり \(M_5\)→\(M_2\)
ただし変換行列は \(P'=M_2 M_5 P\) というように右から順にかかっていく
よって合成変換は \(M_2 M_5\) (ウ)

c.

Yの正の方向への平行移動と\(+45^\circ\)回転の合成
ただし今度は、平行移動→\(+45^\circ\)回転
\(+45^\circ\)回転は \(M_4\)
つまり \(M_2\)→\(M_4\)
ただし変換行列は \(P'=M_4 M_2 P\) というように右から順にかかっていく
よって合成変換は \(M_4 M_2\) (オ)

d.

Y軸対称、Yの正の方向への平行移動、\(+45^\circ\)回転の合成
つまり \(M_3\)→\(M_2\)→\(M_5\)
よって合成変換は\(M_3\)→\(M_2\)→\(M_5\)(イ)
(図3を更にY軸対称しても得られるが \(M_5\)→\(M_2\)→\(M_3\) は回答群にない。)

CGエンジニア検定公式問題集
CG Engineer Official Book

エキスパート第1問(p.10)

a.

X方向の正の方向に平行移動 → \(c=正の数, f=0\)
変形がない → 3×3行列の要素のうち \(abde=1001\)(単位行列)
答えは\(M_1\)(ア)

b.

Xの正の方向への平行移動と\(+45^\circ\)回転の合成
平行移動と回転はどっちが先か?
回転は原点中心なので、平行移動→\(+45^\circ\) だとリンゴの中心はX軸から外れるので誤り
正解は \(+45^\circ\)回転→平行移動
\(+45^\circ\)回転は一見して \(M_5\)または\(M_6\)、正の回転(反時計回り)なので3×3行列の\(b=-\sin\theta<0\)となっている \(M_5\)
つまり \(M_5\)→\(M_1\)
ただし変換行列は \(P'=M_1 M_5 P\) というように右から順にかかっていく
よって合成変換は \(M_1 M_5\) (ア)

c.

X方向への平行移動→\(+90^\circ\)回転 または \(+90^\circ\)回転→Y方向への平行移動
回答群にあるのはX方向への平行移動→\(+90^\circ\)回転 つまり \(M_1\)→\(M_4\)
ただし変換行列は \(P'=M_4 M_1 P\) というように右から順にかかっていく
よって合成変換は \(M_4 M_1\) (オ)

d.

Y軸対称、Yの正の方向への平行移動、\(+90^\circ\)回転の合成
c.を更にY軸対称して得られるのでM\(M_3\)→\(M_4\)→\(M_1\)(ウ)

ベーシック第1問(p.82)

a.

座標変換式に代入して\((x,y)=(2,0)\)→\((x',y')=(2,0)\)、\((x,y)=(0,2)\)→\((x',y')=(2,2)\)\((x,y)=(2,2)\)→\((x',y')=(4,2)\)となるものを見つける。

変換式を見れば、どういった図形変換かわかるようにしておく。X方向へのせん断(スキュー)なのでy座標は不変なアだとわかる。

アフィン変換

\( \begin{eqnarray} \left\{ \begin{array}{l} x'=x+y\\ y'=y \end{array} \right. \end{eqnarray} \)   \( \begin{eqnarray} \left\{ \begin{array}{l} x'=1x +1y +0\\ y'=0x +1y +0 \end{array} \right. \end{eqnarray} \)

 

\(\begin{pmatrix}x'\\y'\end{pmatrix}=\begin{pmatrix}1 &1\\0 &1\end{pmatrix}\begin{pmatrix}x\\y\end{pmatrix}+\begin{pmatrix}0\\0\end{pmatrix}\)

アフィン変換の同次座標表現

\(\begin{pmatrix}x'\\y'\\1\end{pmatrix}=\begin{pmatrix}1 &1 &0\\0 &1 &0\\0 &0 &1\end{pmatrix}\begin{pmatrix}x\\y\\1\end{pmatrix}\)

b.

X方向に1/3、Y方向に1/3拡大縮小して、Y方向に-1平行移動。座標変換式に代入して\((x,y)=(3,3)\)→\((x',y')=(1,0)\)となるものなどを絞っていく。

アフィン変換

\( \begin{eqnarray} \left\{ \begin{array}{l} x'=\frac{1}{3}x\\ y'=\frac{1}{3}y-1 \end{array} \right. \end{eqnarray} \)   \( \begin{eqnarray} \left\{ \begin{array}{l} x'=\frac{1}{3}x +0y +0\\ y'=0x +\frac{1}{3}y -1 \end{array} \right. \end{eqnarray} \)

 

\(\begin{pmatrix}x'\\y'\end{pmatrix}=\begin{pmatrix}\frac{1}{3} &0\\0 &\frac{1}{3}\end{pmatrix}\begin{pmatrix}x\\y\end{pmatrix}+\begin{pmatrix}0\\-1\end{pmatrix}\)

アフィン変換の同次座標表現

\(\begin{pmatrix}x'\\y'\\1\end{pmatrix}=\begin{pmatrix}\frac{1}{3} &0 &0\\0 &\frac{1}{3} &-1\\0 &0 &1\end{pmatrix}\begin{pmatrix}x\\y\\1\end{pmatrix}\)

c.

軸対称と平行移動だけでは、赤と白の位置が入れ替わらない。

エ.のアフィン変換の同次座標表現

\(\begin{pmatrix}x'\\y'\\1\end{pmatrix}=\begin{pmatrix}1 &0 &5\\0 &1 &0\\0 &0 &1\end{pmatrix}\begin{pmatrix}0 &-1 &0\\1 &0 &0\\0 &0 &1\end{pmatrix}\begin{pmatrix}x\\y\\1\end{pmatrix}\)

\(\begin{pmatrix}x'\\y'\\1\end{pmatrix}=\begin{pmatrix}0 &-1 &5\\1 &0 &0\\0 &0 &1\end{pmatrix}\begin{pmatrix}x\\y\\1\end{pmatrix}\)

【宿題】公式問題集のエキスパート、ベーシック共に各回の第1問は座標変換の問題です。これらの問題を全て解けるようになってください。

Lesson

  1. 平面上の任意の点を \(x\) 軸方向に2倍する一次変換行列を示せ。
  2. 平面上の任意の点を \(x\) 軸方向に2倍、\(y\) 軸方向に3倍する一次変換行列を示せ。
  3. 平面上の任意の点を \(x\) 軸に対して対称となる点に写像する一次変換行列を示せ。
  4. 平面上の任意の点を原点に対して対称となる点に写像する一次変換行列を示せ。
  5. 平面上の任意の点を直線 \(y=x\) に対して対称となる点に写像する一次変換行列を示せ。
  6. ベクトル \(\vec a = (-2, 1)\) を原点 \(\rm{O}\) の周り正の向きに \(60^\circ\) だけ回転して得られるベクトルを求めよ。
  7. 平面上の任意の点を原点を中心に反時計回り方向に \(30^\circ\) 回転した点に写像する一次変換行列を示せ。
  8. 平面上の任意の点を原点を中心に反時計回り方向に \(45^\circ\) 回転した後、\(y\) 軸に対して対称となる点に写像する一次変換行列を示せ。*
  9. 平面上の任意の点を直線 \(y=2x\) に対して対称となる点に写像する一次変換行列を示せ。
  10. 平面上の任意の点を直線 \(y=kx\) に対して対称となる点に写像する一次変換行列を示せ。
  11. 平面上の任意の点を、点 \((2, 3)\) を中心に反時計回り方向に \(45^\circ\) 回転した点に写像する同次座標表現の変換行列を示せ。

Answer

  1. \(\begin{pmatrix}x'\\y'\end{pmatrix}=\begin{pmatrix}2 &0\\0 &1\end{pmatrix}\begin{pmatrix}x\\y\end{pmatrix}\)
  2. \(\begin{pmatrix}x'\\y'\end{pmatrix}=\begin{pmatrix}2 &0\\0 &3\end{pmatrix}\begin{pmatrix}x\\y\end{pmatrix}\)
  3. \(\begin{pmatrix}x'\\y'\end{pmatrix}=\begin{pmatrix}1 &0\\0 &-1\end{pmatrix}\begin{pmatrix}x\\y\end{pmatrix}\)
  4. \(\begin{pmatrix}x'\\y'\end{pmatrix}=\begin{pmatrix}-1 &0\\0 &-1\end{pmatrix}\begin{pmatrix}x\\y\end{pmatrix}\)
  5. \(\begin{pmatrix}x'\\y'\end{pmatrix}=\begin{pmatrix}0 &1\\1 &0\end{pmatrix}\begin{pmatrix}x\\y\end{pmatrix}\)
  6. \((\frac{-2-\sqrt 3}{2},\frac{1-2\sqrt 3}{2})\ \leftarrow \begin{pmatrix}\cos60^\circ &-\sin60^\circ\\\sin60^\circ &\cos60^\circ\end{pmatrix}\begin{pmatrix}-2\\1\end{pmatrix}\)
  7. \(\begin{pmatrix}x'\\y'\end{pmatrix}=\begin{pmatrix}\frac{\sqrt 3}{2} &-\frac{1}{2}\\\frac{1}{2} &\frac{\sqrt 3}{2}\end{pmatrix}\begin{pmatrix}x\\y\end{pmatrix}\)
  8. \(\begin{pmatrix}x'\\y'\end{pmatrix}=\begin{pmatrix}-\frac{\sqrt 2}{2} & \frac{\sqrt 2}{2}\\\frac{\sqrt 2}{2} &\frac{\sqrt 2}{2}\end{pmatrix}\begin{pmatrix}x\\y\end{pmatrix}\)
  9. \(\begin{pmatrix}x'\\y'\end{pmatrix}=\begin{pmatrix}-\frac{3}{5} &\frac{4}{5}\\\frac{4}{5} &-\frac{3}{5}\end{pmatrix}\begin{pmatrix}x\\y\end{pmatrix}\)
  10. \(\begin{pmatrix}x'\\y'\end{pmatrix}=\begin{pmatrix}\frac{1-k^2}{1+k^2} &\frac{2k}{1+k^2}\\\frac{2k}{1+k^2} &-\frac{1-k^2}{1+k^2}\end{pmatrix}\begin{pmatrix}x\\y\end{pmatrix}\)
  11. \(\begin{pmatrix}x'\\y'\\1\end{pmatrix}=\frac{1}{\sqrt 2}\begin{pmatrix}1&-1&1+2\sqrt 2\\1&1&-5+3\sqrt 2\\0&0&\sqrt 2\end{pmatrix}\begin{pmatrix}x\\y\\1\end{pmatrix}\)

Lesson(3D)

  1. 空間の任意の点 \((x, y, z)\) を \((2x, 3y, -4z)\) に写像する一次変換行列を示せ。
  2. 空間の任意の点を \(x\) 軸に対して対称となる点に写像する一次変換行列を示せ。
  3. 空間の任意の点を \(xz\) 平面に対して対称となる点に写像する一次変換行列を示せ。
  4. 空間の任意の点を原点に対して対称となる点に写像する一次変換行列を示せ。
  5. 空間の任意の点を平面 \(y=x\) に対して対称となる点に写像する一次変換行列を示せ。
  6. 空間の任意の点を \(x\) 軸まわりに右ねじの進む方向に \(30^\circ\) 回転した点に写像する一次変換行列を示せ。
  7. 空間の任意の点を \(y\) 軸まわりに右ねじの進む方向に \(45^\circ\) 回転した後、\(x\) 軸に対して対称となる点に写像する一次変換行列を示せ。

Answer

  1. \(\begin{pmatrix}x'\\y'\\z'\end{pmatrix}=\begin{pmatrix}2 &0 &0\\0 &3 &0\\0 &0 &-4\end{pmatrix}\begin{pmatrix}x\\y\\z\end{pmatrix}\)
  2. \(\begin{pmatrix}x'\\y'\\z'\end{pmatrix}=\begin{pmatrix}1 &0 &0\\0 &-1 &0\\0 &0 &-1\end{pmatrix}\begin{pmatrix}x\\y\\z\end{pmatrix}\)
  3. \(\begin{pmatrix}x'\\y'\\z'\end{pmatrix}=\begin{pmatrix}1 &0 &0\\0 &-1 &0\\0 &0 &1\end{pmatrix}\begin{pmatrix}x\\y\\z\end{pmatrix}\)
  4. \(\begin{pmatrix}x'\\y'\\z'\end{pmatrix}=\begin{pmatrix}-1 &0 &0\\0 &-1 &0\\0 &0 &-1\end{pmatrix}\begin{pmatrix}x\\y\\z\end{pmatrix}\)
  5. \(\begin{pmatrix}x'\\y'\\z'\end{pmatrix}=\begin{pmatrix}0 &1 &0\\1 &0 &0\\0 &0 &1\end{pmatrix}\begin{pmatrix}x\\y\\z\end{pmatrix}\)
  6. \(\begin{pmatrix}x'\\y'\\z'\end{pmatrix}=\begin{pmatrix}1 &0 &0\\0 &\frac{\sqrt 3}{2} &-\frac{1}{2}\\0 &\frac{1}{2} &\frac{\sqrt 3}{2}\end{pmatrix}\begin{pmatrix}x\\y\\z\end{pmatrix}\)
  7. \(\begin{pmatrix}x'\\y'\\z'\end{pmatrix}=\begin{pmatrix}\frac{1}{\sqrt 2} &0 &\frac{1}{\sqrt 2}\\0 &-1 &0\\\frac{1}{\sqrt 2} &0 &-\frac{1}{\sqrt 2}\end{pmatrix}\begin{pmatrix}x\\y\\z\end{pmatrix}\)

This site is powered by Powered by MathJax