回転とクォータニオン

回転とクォータニオン(2)

3次元回転と生成子  同じことを3次元でやってみましょう。 3次元では回転方向が3通りあります。 x,y,z軸それぞれを中心とした回転の3通りです。  3次元の回転を表す方法には色々な手法がありますが、簡単な方法の一つはx,y,z軸それぞれを中心とした回転を何らか決まった順番で、順に掛け合わせるものです。 この表し方をオイラー角(Euler angles)と呼びます。  今までと同じように、x,y,z軸をそれぞれ1,2,3軸と数字で表します。 2次元の場合は回転変換は $R(\theta)$ の1種類のみですが、3次元の場合は3つの軸どれを中心に回転させるかで3種類の回転変換が必要になります。 ここでは $i$ 軸周りの角度 $\theta_i$ の回転変換を $R_i(\theta_i)$ と書くこととしましょう。  まず3軸周りの回転から考えます。 3軸周りの回転とは、ベクトルの第3成分はそのままで、第1,2成分だけが、2次元回転と同じように回転すれば良いはずです。 (図を書く予定)  ということは、行列で書くと1,2成分は2次元の回転行列と同じで、第3成分はそのままとなるようにすれば良いわけですので、以下のようになります。 $$ R_3(\theta_3)= \left( \begin{array}{ccc} \mathrm{cos}\theta_3 & -\mathrm{sin}\theta_3 & 0\\ \mathrm{sin}\theta_3 & \mathrm{cos}\theta_3 & 0\\ 0 & 0 & 1\\ \end{array} \right) $$  2次元と同じように、生成子も考えましょう。 ベクトル $$ \boldsymbol{v} =\left( \begin{array}{ccc} v_1\\ v_2\\ v_3\\ \end{array} \right) $$ を $i$ 軸周りに無限小 $d\theta_i$ だけ回転させます。 問題は、元のベクトルを $90^\circ$ 回転させたのでは、生成子が得られないということです。 3軸周りの $90^\circ$ 回転行列は

回転とクォータニオン(1)

更新履歴 すみません。 まだ記載途中で、図もないです……。 2017/12/3 諸々整理中 2017/12/2 初稿 はじめに  本稿では、ベクトルは太字イタリックで $\boldsymbol{v}$ のように書きます。 また、成分表示する場合は、縦ベクトル(列ベクトル)で表します。 ですからベクトルを変換する場合、つまり行列をかける場合は以下のように左からかけることになります。 $$ \boldsymbol{v}'=T\boldsymbol{v} $$  また、x,y,z軸は番号で1,2,3軸と呼ぶことがあります。 例えば、2次元のベクトルは $$ \boldsymbol{v}= \left( \begin{array}{ccc} v_1\\ v_2\\ \end{array} \right) $$ のように書きます。 $i$ 番目の基底は $\boldsymbol{e}_i$ です。 つまり、上のベクトルは $$ \boldsymbol{v}= v_1\boldsymbol{e}_1+ v_2\boldsymbol{e}_2 $$ です。 2次元回転行列  2次元ベクトル $$ \boldsymbol{v}= v_1\boldsymbol{e}_1+v_2\boldsymbol{e}_2= \left( \begin{array}{ccc} v_1\\ v_2\\ \end{array} \right) $$ の回転を考えます。 このようなベクトルを角度 $\theta$ だけ回転させる変換 $R(\theta)$ を考えます。 ここでは計算しやすいように数ベクトルとして書きましたが、数ベクトルを行列で回転させると考えるよりは、方向と長さを持つ幾何ベクトルが回転している様子を思い浮かべたほうがわかりやすいと思います。 回転変換は行列で表すことができますが、ここではただの数の計算ではなく、実際に幾何学的にベクトルを他のベクトルに変えてしまうような抽象的な「変換」だと考えてください。  また、 $\boldsymbol{v}$ を角度 $\theta$ だけ回転させたベクトルを $\boldsymbol{v}'$ と書きます。 式にすると