MATLAB,Python,Scilab,Julia比較 第3章 その77【アフィン行列の合成①】

MATLAB,Python,Scilab,Julia比較 第3章 その77【アフィン行列の合成①】 数値計算
MATLAB,Python,Scilab,Julia比較 第3章 その77【アフィン行列の合成①】

バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia3-backnumber/

はじめに

アフィン変換のアフィン行列は合成できる。
その理屈の話。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1

エンジニア歴8年の太郎くん

技術者太郎

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1

アフィン行列の合成

太郎くん
太郎くん

前回は、アフィン変換を実際にプログラムしたから、もうばっちりだね。

フクさん
フクさん

あー、まだ入り口に立っただけだな。

太郎くん
太郎くん

まだ入り口かよ・・・。

フクさん
フクさん

実は、アフィン変換のアフィン行列は合成ができる。

太郎くん
太郎くん

合成?

フクさん
フクさん

アフィン変換のシリーズの最初にもちょっと見せたが、
伸縮、移動、回転の組み合わせが可能だ。

犬と自転車-X軸伸縮Y軸伸縮回転アフィン変換
犬と自転車-X軸伸縮Y軸移動回転アフィン変換
太郎くん
太郎くん

これは、それぞれのアフィン変換を順番にやっただけじゃないの?
伸縮したあとに移動させて、そのあとに回転。
って感じで。

フクさん
フクさん

いんや。
変換行列としては1個として処理している。
このアニメーションの1フレームに対しては1回のアフィン変換しかしていない。

太郎くん
太郎くん

まじかよ。
そんなことできんのか。

アフィン行列の合成の具体例

フクさん
フクさん

試しに移動アフィンと回転アフィンを合成してみよう。
まずはそれぞれのアフィン変換の式を見てみよう。

移動アフィン

\(
\begin{bmatrix}
x\prime\\
y\prime\\
1
\end{bmatrix}=
\begin{bmatrix}
1 & 0 & 0.5 \\
0 & 1 & 0 \\
0 & 0 & 1
\end{bmatrix}
\begin{bmatrix}
x\\
y\\
1
\end{bmatrix}
\)

回転アフィン

\(
\begin{bmatrix}
x\prime\\
y\prime\\
1
\end{bmatrix}=
\begin{bmatrix}
\cos(30^\circ) & -\sin(30^\circ) & 0 \\
\sin(30^\circ) & \cos(30^\circ) & 0 \\
0 & 0 & 1
\end{bmatrix}
\begin{bmatrix}
x\\
y\\
1
\end{bmatrix}
\)

フクさん
フクさん

そして、移動したあとに回転させる場合は以下になる。

\(
\begin{bmatrix}
x\prime\\
y\prime\\
1
\end{bmatrix}=
\begin{bmatrix}
\cos(30^\circ) & -\sin(30^\circ) & 0 \\
\sin(30^\circ) & \cos(30^\circ) & 0 \\
0 & 0 & 1
\end{bmatrix}
\begin{bmatrix}
1 & 0 & 0.5 \\
0 & 1 & 0 \\
0 & 0 & 1
\end{bmatrix}
\begin{bmatrix}
x\\
y\\
1
\end{bmatrix}
\)

太郎くん
太郎くん

実施したいアフィン変換の行列を後ろから並べていくのか。
先に移動アフィンの計算をして、その後に回転の計算をするからイメージともあってるな。

太郎くん
太郎くん

あれ?
それだと、行列を合成していることにならないのか?
行列を合成ということは、
回転アフィン行列と、移動アフィン行列を先に計算して、そのあとにアフィン変換をするってことだよね?

フクさん
フクさん

そうそう。

フクさん
フクさん

行列は交換法則は適用できないが、結合法則は適用できる。
この点は次回深堀りしていこう。

まとめ

フクさん
フクさん

まとめだよ。

  • アフィン行列の合成できる。
  • 試しに回転アフィンと移動アフィンの合成の雰囲気。
    • 実施したい行列が後ろから並ぶ感じ。
    • 行列の結合法則を利用して計算自体は前方から実施可能。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました