ページ 11

【DirectX9】任意の点を中心に画像を回転→任意の座標に描画

Posted: 2013年8月05日(月) 22:18
by MoNoQLoREATOR
DirectX9のお話です。

任意の点を中心に画像を回転

任意の座標に描画

ということを実現しようとしたのですが、何故か画像の大きさまで変わってしまいます。
十中八九 行列の計算方法を間違えているはずですが、どこをどう間違えているのかがわかりません。
以下実行結果と主要ソースコードです。

画像
奥が無回転、手前が有回転です。


mie_image_draw.cpp
► スポイラーを表示
mie_image_dC-rotate.cpp
► スポイラーを表示
mie_image_translate.cpp
► スポイラーを表示
念のためプロジェクトフォルダもごっそりアップロードしておきました。
VisualStudio2012用プロジェクト
VisualStudio2010用プロジェクト
VisualStudio2008用プロジェクト
※ DirectX9 SDK は付属しておりません。ライブラリディレクトリへのリンクは適切に修正してください


よろしくお願い致します。

Re: 【DirectX9】任意の点を中心に画像を回転→任意の座標に描画

Posted: 2013年8月05日(月) 22:36
by みけCAT
mie_image_translate.cppの移動行列はmatrixに足すのではなく掛けるべきなのではないですか?

Re: 【DirectX9】任意の点を中心に画像を回転→任意の座標に描画

Posted: 2013年8月07日(水) 01:14
by MoNoQLoREATOR
仰るとおりでした。
今となっては、何故足していたのかわかりませんが、とにかく移動行列を足すのではなく掛けるようにすると期待通りの表示になりました。

念のため修正後のコードを貼っておきます。
mie_image_translate.cpp
► スポイラーを表示
解決しました。
ありがとうございました。