忍者ブログ
20080511~ 13と7と11の倍数の論理積は13と7と11の積の倍数である。 和ァ・・・
[1995] [1994] [1993] [1992] [1991] [1990] [1989] [1988] [1987] [1986] [1985]
なんとか、クォータニオンによる回転の、1つの点の処理を1行に収めることができました~

前半
クォータニオンによる回転(前半)


後半
四元数による回転(後半)


全然コンパクトじゃないですね、はい。
それもこれも僕のバグ発見能力の皆無さゆえにプログラムが組めず、エクセルで処理しているのが原因ですorz
四元数のみなさんすみましぇーんTAT


このエクセルファイルでは
多数の点を、1つの回転ルールに従って回転させることが出来ます。
下側の表の1行が1つの点に対応します。

上の表は回転のためのクォータニオン「左からかけるやつ(図1)」と「右からかけるやつ(図2)」と
回転軸・角度設定の表です。

回転のルールは1つのシートに1つといった風にしか押し込めなかったので
順次シートを替えて次の回転の指示をさせます。
(sheet1のピンク色の結果をsheet2の黄色の入力欄に代入する感じ)


クォータニオン(四元数)はx,y,zの3次元の点の位置を3つの虚数単位i、j、kを用いて表現し
付随する情報を実数tを用いて表現します。
その場合、1つの点はクォータニオンAを用いて
A(t;x,y,z)=t+ix+jy+kz
などと表現します。
3次元空間を扱うので、実数部分tは通常ゼロです。


A1(t1;x1,y1,z1)とA2(t2;x2,y2,z2)を掛け算する場合は
複素数的に多項式として展開しても構いませんし

(t1+ix1+jy1+kz1)(t2+ix2+jy2+kz2)

(i^2=j^2=k^2=-1や、ij=-ji=k、jk=-kj=i、ki=-ik=jを使って項をまとめます)

A1A2(t1t2-V1・V2;t1V2+t2V1+V1×V2)

という公式(というか解釈)も存在します。
(たぶん複素数との相性が悪い)エクセルファイルではこちらを用いて計算しています。
符号や添字が対称的なので覚えやすいですね!

Vは空間x,y,zをまとめて表現したもので
実数部分(セミコロンの左)と純虚数部分(セミコロンの右)にある・と×はそれぞれ
内積(スカラー積)と外積(ベクトル積)です。


クォータニオンで表現した3次元のベクトルAを回転させるためには

回転軸のベクトルを(0;a,b,c)であらわし
(ただし、長さは規格化しておく:a^2+b^2+c^2=1)

回転角度をθとすると

ベクトルAに左から

p(cos(θ/2);asin(θ/2),bsin(θ/2),csin(θ/2))

をかけ、さらに右からpの複素共役

q(cos(θ/2);-asin(θ/2),-bsin(θ/2),-csin(θ/2))

をかければ回転が表現されます。

pAqです。四元数では掛け算の交換法則が一般に成り立ちませんので、順番に注意してください。

p1であらわした回転のあとにp2であらわす回転を行いたい場合は

p2p1Aq1q2
といった感じで両側にどんどん追加していってOKです。


回転行列と違って任意の軸での回転ができます。
また、ジンバルロックがないのも魅力です。シンバルではないですジンバルですよ。


そんなこんなで出来上がったのがこれ。
みそすり

ジャイロっぽいのが味噌擂り運動してるっぽいgif動画です。
方針としては
1.xy平面でコマを回し(1シート目)
2.y軸を中心に45度回転させ(2シート目)
3.z軸を中心に1.の1/5の速度で回転(歳差運動:3シート目)
4.簡単な1点透視型遠近描写(奥行きyに比例してxとzを小さくする)



とりあえず最初のなんでこんな出来です。
今後もっと複雑なものを表現してみたいですねえ。飽きてなければね・・・

今回はnow()-today()に100万くらいをかけた式を使ってミリ秒を取得しdel押しっぱでヌルヌル再計算で動かしていましたが
循環参照でも同様のヌルヌルができそうですね。
少ないセル数で色々できるのはいいのですが、可視化が悪くなるのがちょっとまだ慣れません><

循環参照と100万なう-きょう関数は相性が悪いのでどちらか一方を一貫して使う必要がありそうです。



ところで自分、パウリ行列のwikiを読んでたらクォータニオンに漂着したんすけど・・・関係性がわかりません><
ブログランキング・にほんブログ村へ
にほんブログ村

拍手[0回]

PR

コメント


コメントフォーム
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字


忍者ブログ [PR]
カレンダー
10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
ブログランキング
ブログランキング参戦中
にほんブログ村 アニメブログ 深夜アニメへ
にほんブログ村 漫画ブログ SF・ファンタジー漫画へ
にほんブログ村 科学ブログ 自然科学へ
よかったらポチッとお願いします^^
最新CM
[12/30 buy steroids credit card]
[09/26 Rositawok]
[03/24 hydraTep]
[03/18 Thomaniveigo]
[03/17 Robertaverm]
最新TB
プロフィール
HN:
量子きのこ
年齢:
43
性別:
男性
誕生日:
1981/04/04
職業:
WinDOS.N臣T
趣味:
妄想・計算・測定・アニメ
自己紹介:
日記タイトルの頭についてるアルファベットは日記の番号です
26進数を右から読みます
例:H→7番目、XP→15(P)×26+23(X)=413番目。
A=0とする仕様につき一番右の桁はAにできませんのでご了承くださいズコー
バーコード
ブログ内検索
アクセス解析