03
1
2
3
4
5
7
8
9
10
11
12
13
14
16
17
18
20
21
22
23
24
27
29
30
   

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Texture回転

とりあえず描画高速化+回転実装(正確にはテストプログラムでテスト完了)

Texture回転出来ました
テクスチャとどっちが引っかかりやすいんだろ?

ちょっとロジック解説

テクスチャは四点の端の座標とテクスチャ(UV)座標を使って描画しているので
回転させるときにテクスチャ座標は回転させる必要はないです。
(回転させると斜めの四角形で切り出されます。)

そして今回はx,y座標の仕様の関係上画像の中心を回転の中心として回転させます。
原点(0,0)中心で点P(x,y)をθ回転させたときの点Q(x',y')の座標は
x'=xcosθ-ysinθ
y'=xsinθ+ycosθ
になります。
これにa,bを平行移動させるとよく言われるアフィン変換(かな?)

行列で表すと
[cosθ,-sinθ,a]
[ sinθ,cosθ ,b]
[0 ,0 ,1]
です。
遷移行列だっけ?

なので元の点P(x,y)をC(a,b)を中心にθ回転させるときの手順。
Q(x-a,y-b,1)を出す(Cを原点とする座標に変換)
その後上の遷移行列を適用する。(その為の1)
実装は違うけどこんな感じ
もっと良い方法あるかなぁ~

多分ほぼ同じソースでManagedDirectX(MDX)とかでも出来ます。
C++でも同じ感じで出来るんじゃない?(やったこと無いから知らない)
(多少クラス名変えたりする必要あるけど)

ソース
DrawTexture.txt

3/30日マス目設定するタイプの描画がおかしかったので修正。
他のバグ(凡ミスとも言う)あったら教えてください。

どうでも良いけど回転は必要な実装だけになってるので注意です。
(主にやる気の問題)
ロジック考えるのは楽しいんだけどなぁこの程度でも
コピペばっかりは流石にね疲れる

あと升目を使って座標の特定を効率的(?)に出来るようにしてます。

IDisposable使ってDispose実装(TextureをDispose)とVertexが0の時Draw()でreturnするのが抜けていました。

ところでfc2ブログってアップロードできる拡張子が決まってまして

jpg/gif/png/mid/swf/ico/mp3/html/txt/css/js/rdf/xml/xsl

だそうです。
画像,html系と音楽(mp3のみ),テキストファイルのファイルだけっぽいです。
だもんでcsファイルのままではアップできないのでtxtに書き換えてます。
csもOKにしてくれればいいのに…(やるとしてもcsの前にcppとかcが先ですかね)

検索フォーム

RSSリンクの表示

リンク

リンクというか個人的によく使うアルゴリズムの解説サイト… C#でなかったりする

ブロとも申請フォーム

この人とブロともになる

QRコード

QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。