オブジェクトを回転させるのに大変苦労しました。いうのもコード的にはそんなに難しく無いのですが、これが思ったように回転してくれない。なっているのか、詳しく実験しながら整理していきたいです。shop-0761.hatenablog.com実際そこまでわからなくても使えます。(2015/0704)回転といえばそう""quaternion""ですね。quaternion(クォターニオン))は複素数を拡張した数体系である。ことで複素数が絡んでくるやつです。複素数については知ってるものとして進みますね。四元数というくらいだから4つ引数をとるんですよ。Quaternionについてでもなんで4つも引数いるの?と思いました。3次元ならx,y,zの3つで事足りるじゃないかと。思って調べていたら次のようなサイトを発見しました。]という情報が必要になります。回転を表すことが可能です。イメージし難いかもしれませんが、全ての姿勢はこの二つの要素だけで表現できてしまうのです。この二つの要素をいい感じに表せる概念が、他でもないクォータニオンなんですね。いうことは、quaternionは普段捉えている3次元のデータ(x,y,z)のように座標を表すのではなく、回転の基準となる3次元位置ベクトルと回転する角度のデータを持っているって押さえでよさそうです。位置ベクトルというのは原点と指定した任意の点(x,y,z)を結んでできるベクトルで向きは指定した座標の方向が→の頭の方になります。これでテラシュールブログさんのQuaternionは回転情報です。端的におっしゃられていたのがわかった気がしました。次にこのようなサイトを発見しました。回転で一般的に使われる行列手法に代わるものである。空間内の軸と、その軸を中心とする回転を表す。ラジアンの回転を表すことができる。つの処理、合成と補間で発揮される。このサイトは少し古めのDirectXについて書かれてますがquaternionについては変わらないと思います。単体でも十分だけど合成やら補間することがよいらしいです。三次元の位置ベクトル+ラジアンで構成されるそうです。(ラジアンも割愛しますたとえば位置ベクトル(1,2,3)を回転軸にπラジアンだけ回転させるという情報を持っているってことですね。Quaternionのもろもろまたquaternionは以下のように2通り表せます。aは回転角、x,y,zは三次元の位置ベクトルを表すもの、その次の多項式はi,j,kがそれぞれx,y,z方向だよという意味付けの虚数ですね。これらをまとめてベクトル表示にするとすっきりします。このベクトル表示を使うとquaternionの積は内積と外積を用いてスッキリした形で表せます。計算するとが得られるのでその点が移動先の点です。共役四元数は共役複素数と同じかんじです。具体的な成分も細々書くと以下の式になります。(正規化してください具体例ここで簡単に例を挙げて考えてみましょう。設定としては点(1,1,1)をx軸を中心に180度回転させたいとします。