MATLAB,Python,Scilab,Julia比較 第3章 その70【アフィン変換⑭】

MATLAB,Python,Scilab,Julia比較 第3章 その70【アフィン変換⑭】 数値計算
MATLAB,Python,Scilab,Julia比較 第3章 その70【アフィン変換⑭】

バックナンバーはこちら。
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

回転行列概要

太郎くん
太郎くん

今回は、回転行列って謎の行列の話か・・・。

フクさん
フクさん

まずはWikipediaから引用。

線型代数において、回転行列(かいてんぎょうれつ、英: rotation matrix)とは、ユークリッド空間内における原点中心の回転変換の表現行列のことである。
2次元や3次元の回転は、幾何学、物理学、コンピュータグラフィックスの分野での計算に非常によく使われている。大半の応用で扱うのはこのふたつの場合だが、一般の次元でも回転行列を定義することができる。

Wikiepdiaより(https://ja.wikipedia.org/wiki/%E5%9B%9E%E8%BB%A2%E8%A1%8C%E5%88%97)
太郎くん
太郎くん

もうユークリッド空間とかが意味不明なんだけど。

フクさん
フクさん

ユークリッド空間は定義としてはいろいろあるのだが、
ここでは、我々が普通に認識できる2次元平面や3次元空間を指していると思って良いだろう。
まぁ、4次元以上のユークリッド空間も定義上は存在はするけどね。

太郎くん
太郎くん

普通の2次元平面や3次元空間って思っておく!

動く点P

フクさん
フクさん

で、回転行列の具体的な話に突入するが、
ここでは2次元の回転行列について説明する。
3次元以上については割愛だ。

太郎くん
太郎くん

まぁ今回やるアフィン変換自体が2次元平面だもんねー。

フクさん
フクさん

まず、とある平面上に点\(P\)が居るとする。

太郎くん
太郎くん

出たな!
動く点P!

フクさん
フクさん

これを原点から見て回転角\(\theta\)分移動させる。
移動した先を点\(P\prime\)とする。
画像で示すと以下だ。

動く点P、P´、回転角θ
太郎くん
太郎くん

まぁ、ここは分かる。

回転を直交座標系で捉える

フクさん
フクさん

で、問題は、この点\(P\)と点\(P\prime\)はどのくらい動いたか。

太郎くん
太郎くん

え、回転角\(\theta\)分動いたんじゃないの?

フクさん
フクさん

それは極座標系の表現だな。
直交座標系の表現が欲しい。

太郎くん
太郎くん

そんなのわからんでしょ。

フクさん
フクさん

それを解決してくれるのが回転行列。

太郎くん
太郎くん

ほう?

フクさん
フクさん

まず、回転角\(\theta\)の移動を直交座標系に直すには
\(\sin\)、\(\cos\)が使える。
画像で示すと以下になる。

sin、cosによる極座標から直交座標へ、回転角θ、cosθ、sinθ、-sinθ、cosθ
太郎くん
太郎くん

なんかわかるようなわからんよな・・・。

フクさん
フクさん

原点を中心にx軸、y軸ごと移動したイメージだな。
基本ベクトルで表現すると分かるかも。
関数\(\rm{R}\)が回転を示す関数とする。

x軸方向に1の基本ベクトルを回転角\(\theta\)分移動

\(
\rm{R}(\theta,
\begin{bmatrix}
1 \\
0
\end{bmatrix}
)=
\begin{bmatrix}
\cos\theta \\
\sin\theta
\end{bmatrix}
\)

y軸方向に1の基本ベクトルを回転角\(\theta\)分移動

\(
\rm{R}(\theta,
\begin{bmatrix}
0 \\
1
\end{bmatrix}
)=
\begin{bmatrix}
-\sin\theta \\
\cos\theta
\end{bmatrix}
\)

太郎くん
太郎くん

まぁ、確かに図の通りの結果な気はする。

回転行列

フクさん
フクさん

そして、これらを合体支えて行列にしたものが回転行列になる。
点\(P\)の座標を\(P_x,P_y\)
点\(P\prime\)の座標を\(P\prime_x,P\prime_y\)
とした場合、以下がその関係性になる。

\(
\begin{bmatrix}
P\prime_x \\
P\prime_y
\end{bmatrix}=
\begin{bmatrix}
\cos\theta & -\sin\theta \\
\sin\theta & \cos\theta
\end{bmatrix}
\begin{bmatrix}
P_x \\
P_y
\end{bmatrix}
\)

太郎くん
太郎くん

そっか。
x軸とy軸を一括にやるから、
行列にまとめてしまえば良いのか。

フクさん
フクさん

そうそう。
で、この座標の回転移動で使用される回転行列が
前回のアフィン変換の回転時のアフィン行列に組み込まれてるわけだ。

太郎くん
太郎くん

前回の回転時のアフィン行列を見ると確かにそうなってるね。

アフィン変換回転
フクさん
フクさん

というわけで、回転行列の説明終了!

まとめ

フクさん
フクさん

まとめだよ。

  • 回転行列概要をWikipediaより引用。
  • 動く点Pで回転移動の雰囲気を察する。
  • cos,sinを使って直交座標へ。
  • 基本ベクトルの変化を元に回転のイメージを得る。
  • x軸、y軸の回転を合わせて行列へ。
    • これが回転行列。

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

コメント

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