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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
MoNoQLoREATOR
記事: 284
登録日時: 14年前
住所: 東京

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

#1

投稿記事 by MoNoQLoREATOR » 12年前

DirectX9のお話です。

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

任意の座標に描画

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

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


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


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

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

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

#2

投稿記事 by みけCAT » 12年前

mie_image_translate.cppの移動行列はmatrixに足すのではなく掛けるべきなのではないですか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
MoNoQLoREATOR
記事: 284
登録日時: 14年前
住所: 東京

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

#3

投稿記事 by MoNoQLoREATOR » 12年前

仰るとおりでした。
今となっては、何故足していたのかわかりませんが、とにかく移動行列を足すのではなく掛けるようにすると期待通りの表示になりました。

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

閉鎖

“C言語何でも質問掲示板” へ戻る