いよいよ四元数による3次元空間の回転です


四元数による回転の表現

直交変換

3次元数ベクトルを3次元数ベクトルに写す一次変換\(f:\mathbb{R}^{3}\rightarrow \mathbb{R}^{3}\)を考えます。\(f\)が一次変換もしくは線型写像であるとは、任意のベクトル\(u,v\)およびスカラー\(a\)について、\begin{eqnarray*} f\left( u+v\right) &=&f\left( u\right) +f\left( v\right) \\ f\left( au\right) &=&af\left( u\right) \end{eqnarray*}が成り立つことをいいます。(この性質を線型性といいます)このとき、3次元数ベクトルを数を縦に3つ並べた3行1列の行列だとみなすと、\(f\)はある3行3列の行列\(A\)を使って\begin{equation*} f\left( \begin{array}{c} x \\ y \\ z\end{array}\right) =A\left( \begin{array}{c} x \\ y \\ z\end{array}\right) \end{equation*}と書くことができます。さて、この行列\(A\)と\(A\)の行と列を入れ替えた転置行列\(A^{T}\)について\begin{equation*} A^{T}A=AA^{T}=E \end{equation*}が成り立つとき、\(A\)を直交行列といい、\(A\)が表す一次変換\(f\)を直交変換といいます。ここで\(E\)は単位行列です。両辺の行列式をとると、\begin{equation*} 1=\det \left( A^{T}A\right) =\det A^{T}\det A=\left( \det A\right) ^{2} \end{equation*}だから、\begin{equation*} \det A=\pm 1 \end{equation*}だということが分かります。ところでこの直交変換\(f\)は内積を変えません。すなわち\begin{equation*} f\left( u\right) \cdot f\left( v\right) =u\cdot v \end{equation*}が成り立ちます。なぜなら、\begin{equation*} u=\begin{pmatrix} x_{1} \\ y_{1} \\ z_{1}\end{pmatrix},v=\begin{pmatrix} x_{2} \\ y_{2} \\ z_{2}\end{pmatrix}\end{equation*}とおくと、\begin{equation*} v^{T}u=\begin{pmatrix} x_{2} & y_{2} & z_{2}\end{pmatrix}\begin{pmatrix} x_{1} \\ y_{1} \\ z_{1}\end{pmatrix}=x_{1}x_{2}+y_{1}y_{2}+z_{1}z_{2}=u\cdot v \end{equation*}だから、同様にして\begin{eqnarray*} Au\cdot Av &=&\left( Av\right) ^{T}Au=v^{T}A^{T}Au \\ &=&v^{T}Eu=v^{T}u=u\cdot v. \end{eqnarray*}また、\(f\)が直交変換であるとき、\begin{equation*} \left\vert f\left( u\right) \right\vert ^{2}=f\left( u\right) \cdot f\left( u\right) =u\cdot u=\left\vert u\right\vert ^{2} \end{equation*}なので\(f\)はベクトルの大きさを変えません。これを\(f\)は等長的であるなどといいます。実は逆も成り立ち、\(f\)が一次変換であるとき\(f\)は直交的であれば等長的、等長的であれば直交的です。

回転

さて、ここで任意の2つのベクトル\(u,v\)について\begin{equation*} f\left( u\times v\right) =f\left( u\right) \times f\left( v\right) \end{equation*}が成り立つ直交変換\(f\)を考えます。ここで\(\times \)は外積を表し、\(u=\left( x,y,z\right) ,v=\left( x^{\prime },y^{\prime },z^{\prime }\right) \)とすると \begin{equation*} u\times v=\left( yz^{\prime }-zy^{\prime },zx^{\prime }-xz^{\prime },xy^{\prime }-yx^{\prime }\right) \end{equation*}互いに直交する長さ1のベクトル(正規直交基底)\(\left( 1,0,0\right) ,\left( 0,1,0\right),\left( 0,0,1\right) \)を考えると、\begin{equation*} \left( 1,0,0\right) \times \left( 0,1,0\right) =\left( 0,0,1\right) \end{equation*}ですからこれらは右手系をつくり、したがって\begin{equation*} f\left( 1,0,0\right) \times f\left( 0,1,0\right) =f\left( \left( 1,0,0\right) \times \left( 0,1,0\right) \right) =f\left( 0,0,1\right) \end{equation*}だから\( f\left( 1,0,0\right) ,f\left( 0,1,0\right) ,f\left(0,0,1\right) \)もまた互いに直交して右手系をなす長さ1のベクトルとなります。したがって、\(f\)は\(\left( 1,0,0\right) ,\left( 0,1,0\right) ,\left(0,0,1\right) \)をその位置関係を保ったまま原点を中心に回転させます。任意の位置ベクトル\(\left( a,b,c\right) \)は\begin{equation*} \left( a,b,c\right) =a\left( 1,0,0\right) +b\left( 0,1,0\right) +c\left( 0,0,1\right) \end{equation*}と一意にかけますから、\(f\)はすべての点\(\left(a,b,c\right) \)を原点中心に回転させる一次変換です。

四元数の積とベクトルの外積

さて、四元数全体の集合を\(\mathbb{H}\)とし、実数部が\(0\)である四元数全体の集合を\(\mathrm{Im}\ \mathbb{H}\)とします。これは\begin{equation*} \mathrm{Im}\ \mathbb{H}=\left\{ xi+yj+zk;\left( x,y,z\right) \in \mathbb{R} ^{3}\right\} \end{equation*}とかけますから、\(\mathrm{Im}\ \mathbb{H}\)は\(\mathbb{R}^{3}\)と同一視することができます。そこで、\( q=w+ix+jy+kz \)を\( (x,y,z)\in \mathbb{R}^{3}\)に写す写像\(\varphi : \mathbb{H}\rightarrow \mathbb{R}^{3}\)を定義しておきます:\begin{equation*}\varphi :w+ix+jy+kz \mapsto (x,y,z)\end{equation*}

ここで、\(q,q^{\prime }\in \mathrm{Im}\ \mathbb{H}\)として\(q=xi+yj+zk,q^{\prime }=x^{\prime }i+y^{\prime }j+z^{\prime }k\)とおくと、\begin{eqnarray*} qq^{\prime }&=&-\left( xx^{\prime}+yy^{\prime}+zz^{\prime}\right)\\&+&\left( yz^{\prime }-zy^{\prime }\right) i+\left( zx^{\prime }-xz^{\prime }\right) j+\left( xy^{\prime }-yx^{\prime }\right) k. \end{eqnarray*}かつ\begin{equation*} \left( x,y,z\right) \times \left( x^{\prime },y^{\prime },z^{\prime }\right) =\left( yz^{\prime }-zy^{\prime },zx^{\prime }-xz^{\prime },xy^{\prime }-yx^{\prime }\right) \end{equation*}ですから、\(\mathrm{Im}\ \mathbb{H}\)における四元数の積の虚数部は3次元ベクトルの外積と完全に一致します。先ほど定義した写像\( \varphi\)を用いれば、\begin{equation*}\varphi\left( qq^{\prime} \right)=\varphi (q)\times \varphi(q^{\prime})\end{equation*}

と書くことができます。

四元数による回転の表現

\(\left\vert q\right\vert =1\)であるような\( q\in \mathbb{H}, u \in \mathrm{Im}\ \mathbb{H}\)に対して \begin{equation*} f_{q}\left( u\right) =qu\bar{q} \end{equation*} という写像を考えます。このとき\(f_{q}\)は\begin{equation*} f_{q}:\mathrm{Im}\ \mathbb{H}\rightarrow \mathrm{Im}\ \mathbb{H} \end{equation*}であって、\begin{equation*} f_{q}\left( u\right) f_{q}\left( v\right) =f_{q}\left( uv\right) \end{equation*}をみたす直交的一次変換となります。

これを示します。まず、\(u\in \mathrm{Im}\ \mathbb{H}\)のとき\(\bar{u}=-u\)ですから、\begin{equation*} \overline{f_{q}\left( u\right) }=\overline{qu\bar{q}}=q\bar{u}\bar{q}=-qu\bar{q}. \end{equation*}したがって\(f_{q}\left( u\right) \in \mathrm{Im}\ \mathbb{H}\)。また、\begin{eqnarray*} f_{q}\left( u+v\right) &=&q\left( u+v\right) \bar{q}=qu\bar{q}+qv\bar{q} \\ &=&f_{q}\left( u\right) +f_{q}\left( v\right) , \end{eqnarray*}\begin{equation*} f_{q}\left( au\right) =q\left( au\right) \bar{q}=a\left( qu\bar{q}\right) =af\left( u\right) \end{equation*}であるから\(f_{q}\)は\(f_{q}:\mathrm{Im}\ \mathbb{H}\rightarrow \mathrm{Im}\ \mathbb{H}\)である一次変換です。また、\(\left\vert q\right\vert =1\)より\begin{equation*} \left\vert f\left( u\right) \right\vert =\left\vert qu\bar{q}\right\vert =\left\vert q\right\vert \left\vert u\right\vert \left\vert \bar{q}\right\vert =\left\vert u\right\vert \end{equation*}だから\(f_{q}\)は直交的です。さらに\(u,v\in \mathrm{Im}\ \mathbb{H}\)について、\begin{equation*} f_{q}\left( u\right) f_{q}\left( v\right) =qu\bar{q}qv\bar{q}=qu\left\vert q\right\vert ^{2}v\bar{q}=quv\bar{q}=f_{q}\left( uv\right) . \end{equation*}

これで\(f_{q}\left( u\right) =qu\bar{q}\)という写像で3次元空間の回転が表されることが分かりました。少し記号的ですが、上で定義した\(\varphi \)と\begin{equation*}\psi : (x,y,z)\mapsto ix+jy+kz \end{equation*}であるような写像\(\psi: \mathbb{R}^{3}\rightarrow \mathrm{Im}\ \mathbb{H}\)を用いると、\(\varphi \circ f_{q} \circ \psi:\mathbb{R}^{3}\rightarrow \mathbb{R}^{3}\)という外積を保存する直交一次変換、すなわち回転を明示的に作ることができます。実際、任意の\(U,V\in \mathbb{R}^{3}\)について\begin{eqnarray*}\varphi \circ f_{q} \circ \psi(U)\times \varphi \circ f_{q} \circ \psi(V)&=&\varphi \left( f_{q}\left( \psi (U) \right) f_{q}\left( \psi (V) \right)\right)\\ &=&\varphi \left( f_{q}\left( \psi (U) \psi(V)\right)\right)\\&=&\varphi \left( f_{q}\left( \psi (U \times V)\right)\right)\\&=&\varphi \circ f_{q} \circ \psi(U\times V)\end{eqnarray*}が成り立ちます。

具体例

さらに深く理解するためには、ある与えられた四元数\(q(\left\vert q\right\vert =1)\)に対して\(f_{q}\)がどのような回転を表すのかを調べなければなりませんが、ここでは基本的な回転を作る四元数を与えるに止めます。
\(x\)軸を軸として角\(\theta \)回転:\begin{equation*} q=\cos \theta +i\sin \theta , \end{equation*}\(y\)軸を軸として角\(\theta \)回転: \begin{equation*} q=\cos \theta +j\sin \theta , \end{equation*} \(z\)軸を軸として角\(\theta \)回転: \begin{equation*} q=\cos \theta +k\sin \theta . \end{equation*}より一般に、単位ベクトル\(\left( a,b,c\right) \)を軸として角\(\theta \)だけ回転する変換を作る四元数は\begin{equation*} q=\cos \theta +ia\sin \theta +jb\sin \theta +kb\sin \theta \end{equation*}です。(ただし\(a^{2}+b^{2}+c^{2}=1\))

 


コメント (3)

  1. Atsushi:
    Sep 01, 2014 at 03:26 PM

    初めまして。
    趣味でkinectをいじってあそんでおります.

    v2 の orientationについて調べておりましたら、こちらの記事に出会いました。

    本記事について質問がございます。

    > q=xi+yj+zk,q′=x′i+y′j+z′kとおくと、
    > qq′=(yz′−zy′)i+(zx′−xz′)j+(xy′−yx′)k.

    というところで、普通に積を求めると -(xx'+yy'+zz') という値も含まれて居るとおもいます。

    > 実数部が0である四元数全体の集合をIm Hとします
    ということなので、実部がなくなっているものと思いますが、ここでこの実部はどのようにとらえておけば良いのでしょうか?

    ※ イメージとしては、「本計算では回転だけを考えており、並進要素については常にキャンセルする(勘)」 などと言った物ですがいかがでしょうか

    お手すきでしたら、よろしくお願いいたします。

  2. takata:
    Sep 01, 2014 at 08:45 PM

    Atsushi様
    コメントありがとうございます。

    >> q=xi+yj+zk,q′=x′i+y′j+z′kとおくと、
    >> qq′=(yz′−zy′)i+(zx′−xz′)j+(xy′−yx′)k.

    >というところで、普通に積を求めると -(xx'+yy'+zz') という値も含まれて居るとおもいます。

    ありがとうございます。仰るとおりです。訂正しました。
    「四元数による回転の表現」の節にも追記しましたのでそちらも読んでいただければ幸いです。

    >> 実数部が0である四元数全体の集合をIm Hとします
    >ということなので、実部がなくなっているものと思いますが、ここでこの実部はどのようにとらえておけば良いのでしょうか?

    >※ イメージとしては、「本計算では回転だけを考えており、並進要素については常にキャンセルする(勘)」 などと言った物ですがいかがでしょうか

    四元数のあくまで虚部の方を通常の3次元空間と対応付けているので、実部を並進要素だと思うという解釈は難しそうです。
    その1のときにも少し触れましたが、結局実数を0に保ったままでは「まともなかけ算」はできないのです。
    ですからこの場合、実部は計算の都合で3次元空間からはみ出してしまった部分くらいに思っておけばよいと思います。

    ただ、計算していただいたように-(xx'+yy'+zz') は(x,y,z)と(x',y',z')との内積にマイナスをつけたものとなっているので、
    実部を内積と関連づけることはあります。また、本文では使いませんでしたが、
    1/2(qq'-q'q)=(yz′−zy′)i+(zx′−xz′)j+(xy′−yx′)k
    と実部が消える形に持っていった方が見通しがよいかもしれません。

  3. Atsushi:
    Sep 02, 2014 at 02:34 PM

    takata様

    早速のお返事ありがとうございました。

    > 実部は計算の都合で3次元空間からはみ出してしまった
    というところでとりあえずとらえておこうと思います。

    φ と ψ のおかげで、回転を表す道具としての四元数もイメージしやすくなりました。

    ありがとうございます!


Add a Comment





使用可能なタグ: <b><i><br>新規コメントを追加: