機械学習基礎理論独習

誤りがあればご指摘いただけると幸いです。数式が整うまで少し時間かかります。リンクフリーです。

勉強ログです。リンクフリーです
目次へ戻る

二重四元数による剛体変換

はじめに

剛体変換とは、回転と平行移動を組み合わせた変換です。
変換する位置ベクトルを {\bf p}\in{\mathbb R}^3 とします。
このとき、変換する位置ベクトルは四元数p=(0,{\bf p})\in{\mathbb H} と表せ、二重四元数\hat{p}=(1,p)\in\hat{\mathbb H} と表せます。
回転軸の単位ベクトルを {\bf a}\in{\mathbb R}^3 とし、回転角を \theta\in{\mathbb R} とします。
このとき、回転変換は四元数r=\left(\cos\dfrac{\theta}{2},\sin\dfrac{\theta}{2}{\bf a}\right)\in{\mathbb H} と表せ、二重四元数\hat{r}=(r,0)\in\hat{\mathbb H} と表せます。
平行移動ベクトルを {\bf t}\in{\mathbb R}^3 とします。
このとき、平行移動変換は四元数t=(0,{\bf t})\in{\mathbb H} と表せ、二重四元数\hat{t}=\left(1,\dfrac{1}{2}t\right)\in\hat{\mathbb H} と表せます。

回転後に平行移動する場合

回転後に平行移動する二重四元数\hat{q_{tr}}\in\hat{\mathbb H} とすると、以下のようになります。

\begin{eqnarray}
\hat{q_{tr}}=\hat{t}\hat{r}=\left(1,\dfrac{1}{2}t\right)(r,0)=\left(r,\dfrac{1}{2}tr\right)\tag{1}
\end{eqnarray}

\hat{q_{tr}}\hat{q_{tr}}^* を計算します。

\begin{eqnarray}
\hat{q_{tr}}\hat{q_{tr}}^*&=&\left(r,\dfrac{1}{2}tr\right)\left(r,\dfrac{1}{2}tr\right)^*\\
&=&\left(r,\dfrac{1}{2}tr\right)\left(r^*,\dfrac{1}{2}r^*t^*\right)\\
&=&\left(rr^*,r\left(\dfrac{1}{2}r^*t^*\right)+\left(\dfrac{1}{2}tr\right)r^*\right)\\
&=&\left(1,\dfrac{1}{2}t^*+\dfrac{1}{2}t\right)\\
&=&\left(1,\dfrac{1}{2}\left(t^*+t\right)\right)\\
&=&\left(1,\dfrac{1}{2}\left((0,{\bf t})^*+(0,{\bf t})\right)\right)\\
&=&\left(1,\dfrac{1}{2}\left((0,-{\bf t})+(0,{\bf t})\right)\right)\\
&=&\left(1,\dfrac{1}{2}(0,{\bf 0})\right)\\
&=&\left(1,(0,{\bf 0})\right)\\
&=&(1,0)\\
&=&1\tag{2}
\end{eqnarray}

(2) より、\hat{q_{tr}} は単位四元数であることが分かります。

二重四元数で位置ベクトルを変換します。
\hat{q_{tr}}\hat{p}\overline{\hat{q_{tr}}^*} が求める変換された位置ベクトルを表す二重四元数となります。

\begin{eqnarray}
\hat{q_{tr}}\hat{p}\overline{\hat{q_{tr}}^*}&=&\left(r,\dfrac{1}{2}tr\right)(1,p)\overline{\left(r,\dfrac{1}{2}tr\right)^*}\\
&=&\left(r,\dfrac{1}{2}tr\right)(1,p)\left(r^*,-\dfrac{1}{2}r^*t^*\right)\\
&=&\left(r,rp+\dfrac{1}{2}tr\right)\left(r^*,-\dfrac{1}{2}r^*t^*\right)\\
&=&\left(rr^*,r\left(-\dfrac{1}{2}r^*t^*\right)+\left(rp+\dfrac{1}{2}tr\right)r^*\right)\\
&=&\left(1,-\dfrac{1}{2}t^*+rpr^*+\dfrac{1}{2}t\right)\\
&=&\left(1,rpr^*+\dfrac{1}{2}(-t^*+t)\right)\\
&=&\left(1,rpr^*+\dfrac{1}{2}\left(-(0,{\bf t})^*+(0,{\bf t})\right)\right)\\
&=&\left(1,rpr^*+\dfrac{1}{2}\left(-(0,-{\bf t})+(0,{\bf t})\right)\right)\\
&=&\left(1,rpr^*+\dfrac{1}{2}\left(0,2{\bf t}\right)\right)\\
&=&\left(1,rpr^*+\left(0,{\bf t}\right)\right)\\
&=&(1,rpr^*+t)\tag{3}
\end{eqnarray}
(3) より、回転後に平行移動されていることが分かります。

平行移動後に回転する場合

平行移動後に回転する二重四元数\hat{q_{rt}}\in\hat{\mathbb H} とすると、以下のようになります。

\begin{eqnarray}
\hat{q_{rt}}=\hat{r}\hat{t}=(r,0)\left(1,\dfrac{1}{2}t\right)=\left(r,\dfrac{1}{2}rt\right)\tag{4}
\end{eqnarray}

\hat{q_{rt}}\hat{q_{rt}}^* を計算します。

\begin{eqnarray}
\hat{q_{rt}}\hat{q_{rt}}^*&=&\left(r,\dfrac{1}{2}rt\right)\left(r,\dfrac{1}{2}rt\right)^*\\
&=&\left(r,\dfrac{1}{2}rt\right)\left(r^*,\dfrac{1}{2}t^*r^*\right)\\
&=&\left(rr^*,r\left(\dfrac{1}{2}t^*r^*\right)+\left(\dfrac{1}{2}rt\right)r^*\right)\\
&=&\left(1,\dfrac{1}{2}rt^*r^*+\dfrac{1}{2}rtr^*\right)\\
&=&\left(1,\dfrac{1}{2}r(t^*+t)r^*\right)\\
&=&\left(1,\dfrac{1}{2}r\left( (0,{\bf t})^* + (0,{\bf t}) \right) r^*\right)\\
&=&\left(1,\dfrac{1}{2}r\left( (0,-{\bf t}) + (0,{\bf t}) \right) r^*\right)\\
&=&\left(1,\dfrac{1}{2}r(0,{\bf 0})r^*\right)\\
&=&\left(1,\dfrac{1}{2}(0,{\bf 0})\right)\\
&=&\left(1,(0,{\bf 0})\right)\\
&=&(1,0)\\
&=&1\tag{5}
\end{eqnarray}

(5) より、\hat{q_{rt}} は単位四元数であることが分かります。

二重四元数で位置ベクトルを変換します。
\hat{q_{rt}}\hat{p}\overline{\hat{q_{rt}}^*} が求める変換された位置ベクトルを表す二重四元数となります。

\begin{eqnarray}
\hat{q_{rt}}\hat{p}\overline{\hat{q_{rt}}^*}&=&\left(r,\dfrac{1}{2}rt\right)(1,p)\overline{\left(r,\dfrac{1}{2}rt\right)^*}\\
&=&\left(r,\dfrac{1}{2}rt\right)(1,p)\left(r^*,-\dfrac{1}{2}t^*r^*\right)\\
&=&\left(r,rp+\dfrac{1}{2}rt\right)\left(r^*,-\dfrac{1}{2}t^*r^*\right)\\
&=&\left(rr^*,r\left(-\dfrac{1}{2}t^*r^*\right)+\left(rp+\dfrac{1}{2}rt\right)r^*\right)\\
&=&\left(1,-\dfrac{1}{2}rt^*r^*+rpr^*+\dfrac{1}{2}rtr^*\right)\\
&=&\left(1,r\left(-\dfrac{1}{2}t^*+p+\dfrac{1}{2}t\right)r^*\right)\\
&=&\left(1,r\left(p+\dfrac{1}{2}\left(-t^*+t\right)\right)r^*\right)\\
&=&\left(1,r\left(p+\dfrac{1}{2}\left(-(0,{\bf t})^*+(0,{\bf t})\right)\right)r^*\right)\\
&=&\left(1,r\left(p+\dfrac{1}{2}\left(-(0,-{\bf t})+(0,{\bf t})\right)\right)r^*\right)\\
&=&\left(1,r\left(p+\dfrac{1}{2}(0,2{\bf t})\right)r^*\right)\\
&=&\left(1,r\left(p+(0,{\bf t})\right)r^*\right)\\
&=&(1,r(p+t)r^*)\tag{6}
\end{eqnarray}
(6) より、平行移動後に回転されていることが分かります。

目次へ戻る