2017-07-14 7 views
2

Miegakureのような4D環境を作成しようとしています。4dロータの使い方

ローテーションの表現方法を理解できません。 Miegakureの作成者は、この小さな記事を書いて、4dロータのクラスを作ったことを説明しました。 http://marctenbosch.com/news/2011/05/4d-rotations-and-the-4d-equivalent-of-quaternions/

このクラスの機能を実装するにはどうすればよいですか?特にベクトルや他の回転子を回転させ、その逆数を得る関数は?

擬似コードの例をお読みいただきたいと思います。 回答に迷惑をかける人には、ありがとうございます。

+0

は、彼はすでに実装を提供しませんでしたか? – meowgoesthedog

+0

@spug私は何も見ません...それらはただのヘッダーですが、私はアーカイブをそこに掘るにはあまりにも怠惰です... – Spektre

答えて

1

任意のベクトルの回りに回転を解くと、4Dであなたが狂ってしまいます。はい、そこの方程式はThe Euler–Rodrigues formula for 3D rotations expansion to 4Dのようですが、それらのすべては方程式系を解く必要があり、その使用法は実際にはわかりません4Dです。

Iは、それらの6 XY,YZ,ZX,XW,YW,ZWがある4Dで(3Dにおける主車軸周りの回転と同様に)の代わりに平面に回転平行を使用しているので、ちょうど(3Dと同様に)回転行列を作成します。私は4Dので、回転のための行列変換homogenuous 5×5を使用していますと、次のようになります。

xy: 
(c , s ,0.0,0.0,0.0) 
(-s , c ,0.0,0.0,0.0) 
(0.0,0.0,1.0,0.0,0.0) 
(0.0,0.0,0.0,1.0,0.0) 
(0.0,0.0,0.0,0.0,1.0) 
yz: 
(1.0,0.0,0.0,0.0,0.0) 
(0.0, c , s ,0.0,0.0) 
(0.0,-s , c ,0.0,0.0) 
(0.0,0.0,0.0,1.0,0.0) 
(0.0,0.0,0.0,0.0,1.0) 
zx: 
(c ,0.0,-s ,0.0,0.0) 
(0.0,1.0,0.0,0.0,0.0) 
(s ,0.0, c ,0.0,0.0) 
(0.0,0.0,0.0,1.0,0.0) 
(0.0,0.0,0.0,0.0,1.0) 
xw: 
(c ,0.0,0.0, s ,0.0) 
(0.0,1.0,0.0,0.0,0.0) 
(0.0,0.0,1.0,0.0,0.0) 
(-s ,0.0,0.0, c ,0.0) 
(0.0,0.0,0.0,0.0,1.0) 
yw: 
(1.0,0.0,0.0,0.0,0.0) 
(0.0, c ,0.0,-s ,0.0) 
(0.0,0.0,1.0,0.0,0.0) 
(0.0, s ,0.0, c ,0.0) 
(0.0,0.0,0.0,0.0,1.0) 
zw: 
(1.0,0.0,0.0,0.0,0.0) 
(0.0,1.0,0.0,0.0,0.0) 
(0.0,0.0, c ,-s ,0.0) 
(0.0,0.0, s , c ,0.0) 
(0.0,0.0,0.0,0.0,1.0) 

c=cos(a),s=sin(a)aは、回転角です。回転軸は、座標系の原点(0,0,0,0)を通過します。詳細情報についてはこれらを見て取る:

+0

マイナス記号がどこに来るのか? AB(i、j)(ここで、A、BはXYZWの1つ)の一般式を記述するリンクが良いでしょう。私は、回転の右利きに基づいて徴候が取り上げられるのだろうかと思います。もしそうなら、それは4Dでどのように定義されていますか? – DolphinDream

+0

@DolphinDreamは、 'AB(i、j)'とマイナス記号の意味がわかりません(コメントは両方とも4Dベクトルです)?あなたが 'matrix * vector'を意味するなら、どのマイナス記号に言及していますか? '-s = -sin(dangle)'がyesならば、CW/CCWの回転を決定します。回転しているベクトルと回転していないベクトルのドット積を使用して、どの方向に回転しているかを判断できます。 ** Euler-Rodrigues formula **について書いているのであれば、代わりに直接方程式はありません。代わりに、実行時に回転ごとに方程式系を解く必要があります。そのため、インクリメンタルプレーンローテーションを使用する方が実装が優れています。 – Spektre

0

https://www.youtube.com/watch?v=PNlgMPzj-7Q&list=PLpzmRsG7u_gqaTo_vEseQ7U8KFvtiJY4K

をそれは本当によく説明だと、私はもののこの種をしたい誰にそれをお勧めします。すでに四元数の乗算について知っている場合は

は、ローターの乗算は何が違うのではないだろう、とI、J、四元数のk個の単位は、幾何代数の基本バイベクトルにアナログです:E12、E13、E23

したがって、4Dの回転子は(A + B * e12 + C * e13 + D * e14 + E * e23 + F * e24 + G * e34 + H * e1234)になります。

それらのユニットを乗算する方法を示す表は、このページに記載されています: http://www.euclideanspace.com/maths/algebra/clifford/d4/arithmetic/index.htm

関連する問題