参考文献によれば、3DCGを利用するアニメーションにおいて、回転操作を行う際に、「四元数を用いれば、アニメーションの作成、とくに補間を行う上ではるかに便利な形で回転を指定できる」と論じている。
物体を何度も回転させるとき、通常の方法で変換を表現すると、多数回の演算による累積誤差のために、どうしても物体の形が歪んでしまうが、四元数を使えばそれを防ぐことができるとのことである。
2021年10月10日のブログ「3Dオブジェクトの回転操作」では、四元数を用いる回転操作について記述したが、3DCGのあるアニメーションの補間のように連続する多数回の回転操作を行う際に、通常の方法と四元数を用いる方法のどちらが便利なのかについて見直したいと考えた。
通常の方法とは、数学の教科書や参考書に出てくる回転操作を意味するのであろう。これらの方法は、数学的な一般性や抽象性を重んじるためであろう、座標軸を回転させるときに任意の同一点Pがどのような操作によって変換されるか、あるいは点Pをx,y,z軸の各々のまわりに指定された角度だけ回転させたときの変換規則について記述する。言い換えれば、特定の回転軸に注目して、点Pの座標値がどのように変換されるかを記述するものではない。
一方、四元数を用いる方法は、特定の回転軸の方向ベクトルと、回転角度を指定することから始める。(x,y,z)座標軸に着目した座標軸や点Pの回転操作とは異なる。
回転軸の正規化された方向ベクトルuの各成分を(ux,uy,uz)とする。ベクトルuの向きに右ねじが進む方向に角度t(シータ)だけ回転させる操作を考える。この回転に対応する四元数を以下のように定める。
q=cos(t/2)+(uxi+uyj+uzk)sin(t/2)
ここでベクトルa=(ax,ay,az)と四元数axi+ayj+azkを同一視する。ベクトルaを、qが定める回転によって回転させると、b=qaq_になる。q_は、qに共役な四元数である。
方向ベクトルuを変えずに、連続して回転操作を行うときには、b=qaq_の計算式が定型となる。ベクトルuと垂直な平面上の(ax,ay)成分=(rcost0,rsint0)を(rcos(t0+t),rsin(t0+t))に更新するだけでよい。az成分は変わらない。
方向ベクトルuを変更するときには、新しい回転軸のまわりの回転が生じるであろうから、新たにb=qaq_の計算を行うことになる。
さて、通常の方法と四元数を用いる方法のどちらが3DCGアニメーションに適しているかについては、実施者がご判断下さい。
参考文献
イアン・スチュアート著「世界を支えるすごい数学」(河出書房新社)
インターネット記事「四元数と三次元空間における回転」
物体を何度も回転させるとき、通常の方法で変換を表現すると、多数回の演算による累積誤差のために、どうしても物体の形が歪んでしまうが、四元数を使えばそれを防ぐことができるとのことである。
2021年10月10日のブログ「3Dオブジェクトの回転操作」では、四元数を用いる回転操作について記述したが、3DCGのあるアニメーションの補間のように連続する多数回の回転操作を行う際に、通常の方法と四元数を用いる方法のどちらが便利なのかについて見直したいと考えた。
通常の方法とは、数学の教科書や参考書に出てくる回転操作を意味するのであろう。これらの方法は、数学的な一般性や抽象性を重んじるためであろう、座標軸を回転させるときに任意の同一点Pがどのような操作によって変換されるか、あるいは点Pをx,y,z軸の各々のまわりに指定された角度だけ回転させたときの変換規則について記述する。言い換えれば、特定の回転軸に注目して、点Pの座標値がどのように変換されるかを記述するものではない。
一方、四元数を用いる方法は、特定の回転軸の方向ベクトルと、回転角度を指定することから始める。(x,y,z)座標軸に着目した座標軸や点Pの回転操作とは異なる。
回転軸の正規化された方向ベクトルuの各成分を(ux,uy,uz)とする。ベクトルuの向きに右ねじが進む方向に角度t(シータ)だけ回転させる操作を考える。この回転に対応する四元数を以下のように定める。
q=cos(t/2)+(uxi+uyj+uzk)sin(t/2)
ここでベクトルa=(ax,ay,az)と四元数axi+ayj+azkを同一視する。ベクトルaを、qが定める回転によって回転させると、b=qaq_になる。q_は、qに共役な四元数である。
方向ベクトルuを変えずに、連続して回転操作を行うときには、b=qaq_の計算式が定型となる。ベクトルuと垂直な平面上の(ax,ay)成分=(rcost0,rsint0)を(rcos(t0+t),rsin(t0+t))に更新するだけでよい。az成分は変わらない。
方向ベクトルuを変更するときには、新しい回転軸のまわりの回転が生じるであろうから、新たにb=qaq_の計算を行うことになる。
さて、通常の方法と四元数を用いる方法のどちらが3DCGアニメーションに適しているかについては、実施者がご判断下さい。
参考文献
イアン・スチュアート著「世界を支えるすごい数学」(河出書房新社)
インターネット記事「四元数と三次元空間における回転」