線形変換を行列形式ではなく、四元数を用いて表現することで、回転をより効率的かつ安定的に扱うことができます。
しかし注意が必要ですが、四元数では回転しか扱えないためその概念の拡張が必要になる。
四元数を用いた回転変換は
q=w+xi+yj+zk
ここで:
- w: スカラー成分
- x,y,z: ベクトル成分
- i,j,k: 四元数の単位ベクトル
- i2=j2=k2=ijk=−1
- ij=+k,jk=+i,ki=+j
- ji=−k,kj=−i,ik=−j
- qの共役は
- qˉとも表記する
- qとも表記する
- q∗とも表記する(デュアルクォータニオンを利用した場合)
- 虚数成分の符号を反転させたもの
- 幾何学的には回転を元に戻すことに相当
qˉ=w−xi−yj−zk
- qのノルムは∥q∥と表記される
∥q∥=w2+x2+y2+z2
- qの逆数(逆元)はq−1と表記される
- お互いをかけると1 (1+0i+0j+0k)になるもの(逆行列みたいなもの)
q−1=∥q∥qˉ
q1⋅q2=q1ˉ⋅q2ˉ
四元数 q=w+xi+yj+zk の逆元 q−1 は、以下の式で計算されます:
q−1=∥q∥2qˉ
ここで:
- qˉ: 共役四元数で、qˉ=w−xi−yj−zk
- ∥q∥2: 四元数のノルムの二乗で、∥q∥2=w2+x2+y2+z2
任意のベクトル v=(x,y,z) に対して、四元数回転を適用する場合:
v′=qvq−1
- q: 回転を表す四元数
- q−1: 四元数 q の逆元
四元数では直接平行移動を表現できないため、回転と平行移動を統合する場合、以下の形式を使用します:
T(v)=qvq−1+t
ここで:
- T: 変換全体
- t: 平行移動ベクトル
対象の図形を以下の要領で移動させることを考える
- 世界座標点 (1,1) を中心に π/2 回転
- ローカル座標での移動ベクトル (2,0)
二次元の時には 四元数は右手系座標系で考えるため、二次元の場合はz軸を除くx、y軸の平面で考えるため、回転軸はz軸方向となる
四元数 q=w+xi+yj+zk でz軸周りにθだけ回転するときはのx,y,zは
回転軸の方向ベクトル u=(ux,uy,uz)を用いて以下のようにあらわされる
- w=cos(θ/2)
- x=sin(θ/2)⋅ux
- y=sin(θ/2)⋅uy
- z=sin(θ/2)⋅uz
回転軸の方向ベクトルは二次元の場合は
- ux=0
- uy=0
- uz=1
z 成分だけに依存し、四元数は
q=cos(θ/2)+sin(θ/2)⋅k
となる。
θ=π/2の場合のqvq−1 の計算を行う。
q=cos(π/4)+sin(π/4)j=22+22j
qˉ=
四元数の逆元 q−1は定義に基づき
q−1=∥q∥2qˉ=122−22j=22−22j
ベクトル v=(2,0,0) を四元数形式に変換
v=0+2i+0j+0k
qv=22+22j=0+2j
次に:
(qv)q−1=(0+2j)(22−22j)
計算結果:
v′=0+0i+2j+0k=(0,2)