プログラミングのバグ取りが極度に苦手なので、できるだけマクロを避けているのです。
そうすると、クォータニオンの演算体系という「より高度に抽象化したクラス」とかいうのが構築できそうにないため
それじゃあ代わりにパウリ行列を使ってみてはどうか?
と、組んだ3D回転がこれだよ!!!
クォータニオンでは(n1,n2,n3)というベクトルを回転軸に、角度θだけ回転させたい場合
Q=(cos(θ/2);n1sin(θ/2),n2sin(θ/2),n3sin(θ/2))
とその複素共役
Q*=(cos(θ/2);-n1sin(θ/2),-n2sin(θ/2),-n3sin(θ/2))
という、要素が4つある数を2つ用意して
回転させたいベクトルP=(0;x,y,z)に
QPQ*
と、Pを挟むように掛け算すると、回転が行えるわけですが
(a;b,c,d)を、3つの虚数単位I,J,Kを用いて書き換えた
a+bI+cJ+dK
というのが
パウリ行列σ1,σ2,σ3と単位行列σ0の系だと
行列の中にたった1つ、従来の虚数単位を入れるだけで
クォータニオンの代わりが出来てしまうのです。
実部1←→σ0
I←→-iσ1
J←→-iσ2
K←→-iσ3
なので、
aσ0-i(bσ1+cσ2+dσ3)
となります。
3次元の回転行列で生じてしまうジンバルロックという現象を避けるために
クォータニオンが多用されているのですが
「この向きにこれくらい回転」の次に「この向きにこれくらい回転」というのを連鎖させるので、
エクセルでは循環参照を行って反復計算をさせています。
ただ・・・実数の行列の関数は割りとありふれているのですが
複素行列用の関数は「複素数の関数」と「行列の関数」の組み合わせではどうにもならないようでして
とあるサイトからアドインを入手して使っていました。
新しいExcelだとこいつがうまく動かないんですよねええええ><
動くっちゃ動くんですが、閉じるときに必ず「問題が発生しました」って出てもいないようなエラーが出て
再起動させると必ずこのアドインが解除されてしまうのです・・・
不安定すぎて不安で手が出ないんですよ~
2014-11-10 09:42:12 +0000