「みんな教えて! 選手権!!」開催のお知らせ

こんにちは、私は今DirectXを使って物理シミュレーションを行おうとしております。
そこで物体を任意軸回転させて表示したいのですが、どういった方法を用いれば実現できますか?
http://marupeke296.com/DXGSmp_No10_Quaternion.html
このサイトで解説されているようにクォータニオンを使うのでしょうか?
ただこのサイトで示されているサンプルでは、玉ひとつひとつが回転しているわけではなく、位置がある軸に関して回転させた位置へ「並進させる」ということを行っています。

私は物体を回転させるときに、任意軸回転を使いたいなと思っています。

--
D3DXMatrixRotationX(&Rot_X, angle);
D3DXMatrixMultiply(&World, &World, &Rot_X);
--

以上はX軸回転を行う行列をワールド座標変換行列に掛けるコマンドですが、この勢いで任意軸回転行列を作成・掛けるといったことはできますか?
知識が足りなく稚拙な表現で申し訳ありませんが・・・

任意軸回転をXYZ軸回転の組み合わせに分解できれば
D3DXMatrixRotationX(YやZ)とD3DXMatrixMultiply関数のみを使って簡単にできちゃうのですがそのような数学的手法は存在しますか?

それとも、任意軸回転関数を自前で既に作ってあるので
D3DXMATRIX型の変数にその値を手動で注入(構造体の中身を知る必要あり)、D3DXMatrixMultiply関数で掛けるといった操作でいけちゃうでしょうか?
あとでちょっとやってみます。すみません。しかしD3DX~系の用意された関数の域を出て気持ちよくはないですが。

A 回答 (2件)

D3DXMatrixRotationAxis で任意軸回転できるのでそれでどうでしょうか。

    • good
    • 1
この回答へのお礼

!!!!!!!!!!!!!!
まさにこれです。すばらしい知識をお持ちですね。
qwertfk様、本当にありがとうございました。

お礼日時:2013/06/10 09:15

任意軸回転というのは、任意の方向を向いた軸を中心に回転する、という意味でしょうか?


これをX,Y,Z軸を中心とした回転に分解するには、ベクトルの考え方を使います。
(けっこう難しいので、次のページにふってしまいます。)
http://hooktail.sub.jp/mechanics/infinitesimalRo …
    • good
    • 0
この回答へのお礼

foomufoomu様、ご回答ありがとうございます。
無限小回転でXYZに分解する・・・ですかーーー
チャンスがあれば挑んでみます。ご紹介ありがとうございます。

お礼日時:2013/06/10 09:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報