ScLerpとは
英語で「Screw Linear Interpolation」です。
日本語に無理やり訳すと「ねじ線形補間」とか「らせん線形補間」とかになるんですかね。
本記事では、そのまま ScLerp を書くことにします。
ねじパラメータを二重四元数に変換
本記事は、剛体変換をねじパラメータで表す の続きですので、使用する数をまずは書きだします。
剛体変換を表す行列:
剛体変換の回転を表す行列:
剛体変換の平行移動を表すベクトル:
回転行列 から求めた原点を通る回転軸を表す単位ベクトル:
回転行列 から求めた回転角:
回転軸に沿った平行移動の符号付距離:
原点から回転軸への垂線の足の位置ベクトル:
回転軸のPlucker座標の第二成分:
剛体変換行列 をねじパラメータ にした後の話です。
ねじパラメータを二重四元数に変換します。
まず、あとの式変形のために に関する式を変形しておきます。
は以下のように表されるのでした。
式 の両辺に を掛けて変形します。
やっと準備が整いましたので、やっていきましょう。
回転変換は四元数で と表し、二重四元数で と表します。
平行移動変換は四元数で と表し、二重四元数で と表します。
回転後に平行移動する二重四元数を とすると、以下のように表せます。
の虚部 を計算します。
式 より、 は以下のように書けます。
これまで四元数を(スカラー部、ベクトル部)、二重数を(実部、虚部)という風に丸括弧を使った記法で書いてきましたが
式 をスカラー部とベクトル部に分けて表示したいので、+を使った記法で二重四元数を表示したいと思います。
式 の変形で以下の、 のテイラー展開を利用しました。
式 の導出でここでやるべきことはすでに終わっているんですが、後で使うために、 の累乗を を使って、定義しておきます。
式 の右辺を見てみると、 と のみが 倍されていることがわかります。二重四元数を使ったScLerp
ここでやることは、
剛体変換を表す2つの単位二重四元数 とパラメータ を使って、ねじのように補間した単位二重四元数 を求めることです。
から への変換は と書けます。
よって、求める は以下のようになります。
は剛体変換なので、 は剛体変換を表します。
が表す剛体変換から求めたねじパラメータを として、式 を書き直します。
最後に
四元数を(スカラー部、ベクトル部)、二重数を(実部、虚部)という風に書いていましたが、
本記事の内容ではこの書き方では限界があると感じて、途中から+を使って記法で書きました。
本記事より、はっきり言ってDual Quaternion読んだ方が良いです。
としたけど、 でも同じ結果になると思う。
これ計算して同じになること確認しようと思ったけど、計算量多そうとか色々な理由で諦めました。誰か証明してください。