回転とクォータニオン(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 初稿 はじめに  本稿ではクォータニオンを扱います。 クォータニオンには色々な導入方法がありますが、ここでは3次元回転行列を4x4行列に拡張することで導入を行います。 幾何学的な説明より計算が多くなってしまいますが、これはゲーム数学では回転行列は比較的親しまれているものの、クォータニオンへは少しハードルを感じている人がいるように思われるためです。 先に2次元、3次元回転行列がなぜ知られている形で書かれるのかを説明したのちにクォータニオンを導入します。  前提知識としては、通常の行列、ベクトルの計算はできることを期待しています。 回転行列やクォータニオンの知識は前提としていません。 ただ、意図的に計算の多い導入を行なっているため、完全に初学だと難しく感じてしまう可能性もあります。 なんとなく回転行列やクォータニオンに触れたことがあった方が理解しやすいと思います。  本稿では、ベクトルは太字イタリックで $\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)$ を考えます。 ここでは計算しやすいように数ベクトルとして書きましたが、数ベクトルを行列で回転させると考えるよりは、方向と長さを持つ幾何ベクトルが回転している様子を思い浮かべたほうがわかりやすいと思います。 回転変換は行列で表すことができますが、ここではただの数の計算ではなく、実際に幾何学的にベクトルを他のベクトルに変えてしまうような抽象的な「変換」だと考えてください。

bash設定メモ

lsに色をつける 案外Macのデフォルト設定は気が利いていないのよねー。 プロファイルは「Pro」にしておいて、~/.bash_profileに export CLICOLOR=1 export LSCOLORS=gxBxhxDxfxhxhxhxhxcxcx ちなみに http://apple.stackexchange.com/questions/33677/how-can-i-configure-mac-terminal-to-have-color-ls-output の you can use this if you are using a black background: の設定そのままですが。 プロンプトに色をつける プロンプトも見づらいので… ~/.bash_profile に export PS1="\[\033[0;32m\]\u@\h:\[\033[0;36m\]\w\[\033[00m\]\$ " 参考: http://babyp.blog55.fc2.com/blog-entry-663.html