デュアルクォータニオンの2つの形式の対応関係


ここまで2つのまったく異なる方法でデュアルクォータニオンを導出してきました。しかし、得られた2つの形式のデュアルクォータニオンの関係は明らかではありません。このページではこれらの形式を相互に変換して、同じものになることを示したいと思います。

そこでまず、前のページで得られた
$$ d(\vec{a},\ \theta,\ \vec{c},\ l) = \left(\cos\frac{\theta + \epsilon l}{2},\ \sin\frac{\theta + \epsilon l}{2}\,( \vec{a}\ – \epsilon\,\vec{a}\times\vec{c})\right) $$
を、2ページ目の形式
$$ d = r + \frac{\epsilon}{2} tr $$
に書き換えてみたいと思います。

そのためには、二重数の関数になっている \(\cos\frac{\theta + \epsilon l}{2}\) や \(\sin\frac{\theta + \epsilon l}{2}\) を普通の二重数に書き換える必要があります。そこでまず、二重数の関数 \(f(x + \epsilon y)\) が次の関係を満たすことを示しておきます。
$$ f(x + \epsilon y) = f(x) + \epsilon y\, f'(x) $$
ただし、\(f\) はテイラー展開可能な(何回でも微分できる)関数とします。また、\(f'(x)\) は \(f(x)\) の導関数 (\(f(x)\) を1回微分したもの) です。

この式を示すために、\(f(x + \epsilon y)\) をゼロのまわりでテイラー展開します。
$$ f(x + \epsilon y) = f(0) + (x + \epsilon y)\, f'(0) + \cdots + \frac{1}{n!}(x + \epsilon y)^n f^{(n)}(0) + \cdots $$
ここで、\(f^{(n)}\) は \(f(x)\) の n 次導関数 (\(f(x)\) を n 回微分したもの) です。

\(\epsilon^2 = 0\) なので、
$$ (x + \epsilon y)^n = x^n + \epsilon\, n\,y\,x^{n-1} $$
となり、上のテイラー展開の式は
\begin{eqnarray*}
f(x + \epsilon y) & = & f(0) + x\,f'(0) + \cdots + \frac{x^n}{n!}\,f^{(n)}(0) + \cdots \\
& & + \epsilon y\left(f'(0) + \cdots + \frac{x^{(n-1)}}{(n – 1)!}\,f^{(n)}(0) + \cdots\right) \\
& = & f(x) + \epsilon y\, f'(x)
\end{eqnarray*}
と変形でき、上の関係式が示されました。

このことから、
\begin{eqnarray*}
\cos\frac{\theta + \epsilon l}{2} & = & \cos\frac{\theta}{2}\ – \epsilon \frac{l}{2} \sin\frac{\theta}{2}, \\
\sin\frac{\theta + \epsilon l}{2} & = & \sin\frac{\theta}{2} + \epsilon \frac{l}{2} \cos\frac{\theta}{2}, \\
\end{eqnarray*}
となるので、

\begin{eqnarray*}
d & = & \left(\cos\frac{\theta + \epsilon l}{2},\ \sin\frac{\theta + \epsilon l}{2}\,(\vec{a}\ – \epsilon\,\vec{a}\times\vec{c})\right) \\
& = & \left(\cos\frac{\theta}{2}\ – \epsilon \frac{l}{2} \sin\frac{\theta}{2},\ \sin\frac{\theta}{2}\,(\vec{a}\ – \epsilon\,\vec{a}\times\vec{c}) + \epsilon \frac{l}{2} \cos\frac{\theta}{2}\,\vec{a}\right) \\
& = & \left(\cos\frac{\theta}{2},\ \sin\frac{\theta}{2}\vec{a}\right) + \epsilon \left(-\frac{l}{2} \sin\frac{\theta}{2},\ \frac{l}{2} \cos\frac{\theta}{2}\,\vec{a}\ – \sin\frac{\theta}{2}\,\vec{a}\times\vec{c}\right)
\end{eqnarray*}
のように書き換えることができます。これをもうひとつの形式、
$$ d = r + \frac{\epsilon}{2} tr $$
と比べれば、
\begin{eqnarray*}
r & = & \left(\cos\frac{\theta}{2},\ \sin\frac{\theta}{2}\vec{a}\right), \\
tr & = & \left(-l \sin\frac{\theta}{2},\ l \cos\frac{\theta}{2} \vec{a}\ – 2 \sin\frac{\theta}{2}\,\vec{a}\times\vec{c}\right)
\end{eqnarray*}
であることがわかります。

\(t\) を
$$ t = \left(0,\ \vec{t}\right) $$
と書くことにすれば、
\begin{eqnarray*}
tr & = & \left(0,\ \vec{t}\right) \left(\cos\frac{\theta}{2},\ \sin\frac{\theta}{2}\,\vec{a}\right) \\
& = & \left(-(\vec{t} \cdot \vec{a}) \sin\frac{\theta}{2},\ \cos\frac{\theta}{2}\,\vec{t}\ – \sin\frac{\theta}{2}\,\vec{a}\times\vec{t}\right)
\end{eqnarray*}
となるので、
$$ \vec{t} \cdot \vec{a} = l, \\
\cos\frac{\theta}{2}\,\vec{t}\ – \sin\frac{\theta}{2}\vec{a}\times\vec{t} = l \cos\frac{\theta}{2} \vec{a}\ – 2 \sin\frac{\theta}{2}\,\vec{a}\times\vec{c} $$
を満たす必要があります。\(\vec{t}\) の \(\vec{a}\) 軸成分が \(l\) になることから、\(\vec{t}\) を次のように \(\vec{a}\) に平行な成分と垂直な成分に分けることができます。
$$ \vec{t} = l\,\vec{a}\ – \vec{t_\perp} $$
\(\vec{t_\perp}\) は \(\vec{a}\) と直交するので、
$$ \vec{t_\perp} = x\,\vec{a}\times\vec{c} + y\,\vec{a}\times(\vec{a}\times\vec{c}) $$
の形で書くことができ、\(x,\ y\) は次の式を満たさなければなりません。
$$ (\cos\frac{\theta}{2}x + \sin\frac{\theta}{2}y)\,\vec{a}\times\vec{c}\ – (\sin\frac{\theta}{2}x\ – \cos\frac{\theta}{2}y)\,\vec{a}\times(\vec{a}\times\vec{c}) = -2 \sin\frac{\theta}{2}\,\vec{a}\times\vec{c} $$
ここで、\(\vec{a}\) が単位ベクトルなので、\(\vec{a}\times(\vec{a}\times(\vec{a}\times\vec{c})) = -\vec{a}\times\vec{c}\) となることを使いました。

\(\vec{a}\times\vec{c}\) と \(\vec{a}\times(\vec{a}\times\vec{c})\) のそれぞれの係数が両辺で一致することから、
\begin{eqnarray*}
\cos\frac{\theta}{2}x + \sin\frac{\theta}{2}y & = & -2 \sin\frac{\theta}{2},\\
\sin\frac{\theta}{2}x\ – \cos\frac{\theta}{2}y & = & 0
\end{eqnarray*}
が得られ、この連立方程式を解けば、
\begin{eqnarray*}
x & = & -2 \sin\frac{\theta}{2} \cos\frac{\theta}{2} = -\sin \theta,\\
y & = & -2 \sin^2 \frac{\theta}{2} = \cos\theta\ – 1
\end{eqnarray*}
となります。

まとめると、
$$ d(\vec{a},\ \theta,\ \vec{c},\ l) = \left(\cos\frac{\theta + \epsilon l}{2},\ \sin\frac{\theta + \epsilon l}{2}\,( \vec{a}\ – \epsilon\,\vec{a}\times\vec{c})\right) $$
で表現されるデュアルクォータニオンは、
$$ r = \left(\cos\frac{\theta}{2},\ \sin\frac{\theta}{2}\,\vec{a}\right) $$
であらわされる回転の後に、
$$ \vec{t} = l\,\vec{a}\ – \vec{a}\times(\vec{a}\times\vec{c})\ + \cos\theta\,\vec{a}\times(\vec{a}\times\vec{c})\ – \sin \theta\,\vec{a}\times\vec{c} $$
だけ移動した状態をあらわすことになります。

ここで、
$$ \vec{c_\perp} \equiv -\vec{a}\times(\vec{a}\times\vec{c}) = \vec{c}\ – (\vec{a}\cdot\vec{c})\,\vec{a} $$
と置くと、\(\vec{c_\perp}\) は \(\vec{c}\) を通る回転軸と原点を含む回転軸に直交する平面との交点であり、
$$ \vec{t} = l\,\vec{a}\ + \vec{c_\perp}\ – \cos\theta\,\vec{c_\perp}\ – \sin \theta\,\vec{a}\times\vec{c_\perp} $$
は点 \(\vec{c}\) を通る回転軸まわりに原点を \(\theta\) だけ回転して、さらに回転軸方向に \(l\) だけ移動した点になっているのがわかります。これで2つの形式のデュアルクォータニオンが同じものであることがはっきりしました。

逆の変換もやっておきましょう。
$$ d = r + \frac{\epsilon}{2} tr $$
であらわされるデュアルクォータニオンの \(r,\ t\) を
\begin{eqnarray*}
r & = & \left(\cos\frac{\theta}{2},\ \sin\frac{\theta}{2}\,\vec{a}\right), \\
t & = & \left(0,\ \vec{t}\right)
\end{eqnarray*}
と書くことにすれば、\(\vec{a}\) や \(\theta\) はもう一方の表現 \(d(\vec{a},\ \theta,\ \vec{c},\ l)\) のものと共通です。残りの \(\vec{c},\ l\) を \(\vec{a},\ \theta,\ \vec{t}\) であらわすと、
\begin{eqnarray*}
l & = & \vec{a}\cdot\vec{t} \\
\vec{c} & = & \frac{1}{2}\left(\vec{t} + \cot\frac{\theta}{2}\,\vec{a}\times\vec{t}\right), ~~~\cot\frac{\theta}{2} \equiv \frac{\cos\frac{\theta}{2}}{\sin\frac{\theta}{2}}
\end{eqnarray*}
となります。ただし、\(\vec{c}\) には
$$ \vec{c} \rightarrow \vec{c} + \lambda\,\vec{a} $$
とする自由度が残っていることに注意してください。そして、\(\lambda = -\frac{l}{2}\) とすれば、\(\vec{c}\) を \(\vec{a}\) が直交するように選ぶことができます。

4 thoughts on “デュアルクォータニオン徹底解説

  • 2018/09/13 at 2:03 PM
    Permalink

    大変すばらしい解説、ありがとうございました。
    ロボット工学で良く出てくるので、すごい参考になりました。

    Reply
    • 2018/09/17 at 10:43 AM
      Permalink

      ロボット工学では良く使われるのですね。知りませんでした! コメントありがとうございます。

      Reply
  • 2018/11/12 at 5:39 AM
    Permalink

    いつも大変お世話になっております。
    3ページ目の
    回転と移動をあらわした行列 A は Z の指数関数で表現できます。
    A=eZ

    そして、この行列 A に対応したデュアルクォータニオン d は
    d=e^θ(axi+ayj+azk)+ϵ(vxi+vyj+vzk)

    で計算できます。
    の部分の質問なんですがこの文が書かれていたところの前に書かれていた文書のi,j,kとX,Y,Zの対応関係で出てきた1/2はどこに消えたのですか?

    Reply
    • 2018/11/12 at 11:48 AM
      Permalink

      ご指摘の通り、1/2が抜けていましたので修正いたしました。
      ありがとうございます!

      Reply

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Anti Spam Code *