スポンサーリンク

三次元の回転行列を分解して3Dプログラムで簡単に扱えるようにしてみた

当サイトではアフィリエイト広告を利用して商品を紹介しています。

Uncategorized

目的

行列は見やすいですが、Scratchなどで行列を扱おうとすると、行列演算ライブラリがないため、基本的な四則演算に分解してからプログラムする必要があるので、x,y,zそれぞれの回転行列で四則演算に分解してみた。

もし間違っている場所などがあれば教えてください🙏

回転行列を使うとこんなことができる!

https://scratch.mit.edu/projec...
https://scratch.mit.edu/projec...

z軸の回転行列

$$R_{z}( \theta ) =\begin{bmatrix}
\cos \theta & \sin \ \theta & 0\\
\sin \theta & \cos \theta & 0\\
0 & 0 & 1
\end{bmatrix}
$$

回転行列をバラす

$$\begin{array}{l} R_{z}( \theta ) =\begin{bmatrix} \cos \theta & \sin \ \theta & 0\\ -\ \sin \theta & \cos \theta & 0\\ 0 & 0 & 1 \end{bmatrix}\begin{bmatrix} x\\ y\\ z \end{bmatrix}\\ =\begin{bmatrix} \cos \theta \cdot x+\sin \ \theta \cdot y+0\cdot z\\ -\sin \theta \cdot x+\cos \theta \cdot y+0\cdot z\\ 0\cdot x+0\cdot y+1\cdot z \end{bmatrix}\\ =\begin{bmatrix} x\cos \theta +y\sin \ \theta \\ -x\sin \theta +y\cos \theta \\ z \end{bmatrix} \end{array}$$

y軸の回転行列

$$R_{y}( \theta ) =\begin{bmatrix}
\cos \theta & 0 & -\ \sin \theta \\
0 & 1 & 0\\
\sin \ \theta & 0 & \cos \theta
\end{bmatrix}
$$

回転行列をバラす

$$ \begin{array}{l} R_{y}( \theta ) =\begin{bmatrix} \cos \theta & 0 & -\ \sin \theta \\ 0 & 1 & 0\\ \sin \ \theta & 0 & \cos \theta \end{bmatrix}\begin{bmatrix} x\\ y\\ z \end{bmatrix}\\ =\begin{bmatrix} \cos \theta \cdot x+0\cdot y+\ ( -\ \sin \theta \cdot z)\\ 0\cdot x+1\cdot y+0\cdot z\\ \sin \ \theta \cdot x+0\cdot y+\cos \theta \cdot z \end{bmatrix}\\ =\begin{bmatrix} x\cos \ -\ z\sin \theta \\ y\\ x\sin \ \theta +z\ \cos \theta \end{bmatrix} \end{array}$$

x軸の回転行列

$$R_{x}( \theta ) =\begin{bmatrix} 1 & 0 & 0\\ 0 & \cos \theta & \sin \ \theta \\ 0 & -\ \sin \theta & \cos \theta \end{bmatrix}$$

回転行列をバラす

$$ \begin{array}{l} R_{x}( \theta ) =\begin{bmatrix} 1 & 0 & 0\\ 0 & \cos \theta & \sin \ \theta \\ 0 & -\ \sin \theta & \cos \theta \end{bmatrix}\begin{bmatrix} x\\ y\\ z \end{bmatrix}\\ =\begin{bmatrix} 1\cdot x+0\cdot y+0\cdot z\\ 0\cdot x+\cos \theta \cdot y+\sin \ \theta \cdot z\\ 0\cdot x+( -\ \sin \theta \cdot y) +\cos \theta \cdot z \end{bmatrix}\\ =\begin{bmatrix} x\\ y\ \cos \theta +z\ \sin \ \theta \\ -y\sin \theta +z\cos \theta \end{bmatrix} \end{array}$$

参考

回転行列 - Wikipedia
3次元CGと...

コメント

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