-PR-
解決済み

画像回転について

  • 暇なときにでも
  • 質問No.93528
  • 閲覧数502
  • ありがとう数1
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 10% (4/39)

いつもお世話になります。

下記ソースにてビットマップの回転を実現させようとしております。
ソースの一部ですので処理概要を説明すると、
まず、編集用画像領域をimage[][]に格納しておいて、
バッファでデータのやり取りをしており、下記ソースで演算後、
BitBltしております。
そこで、三角関数の処理に公式を利用しているのですが、
どうも左回転してしまいます。右回転したいので
安直に下記RotX・RotYを入れ替えたら右回転したんですけど、
実際の表示位置とは反転してしまいます。
数学的な話だと思うのですが、正常に右回転する方法を
ご存知の方、ご教授よろしくお願い致します。
開発環境はVC++6.0MFCです。


for (y = 0 ; y<Height ; y++) { //オリジナル針のY方向
 for (x=0 ; x<Width ; x++) { //オリジナル針のX方向
  double IncreX=x-2.5;  //針中心からのベクトル
  double IncreY=y-31.5;//針中心からのベクトル
  double RotX= IncreX*::cos(m_dSAngle)-IncreY*::sin(m_dSAngle);
  double RotY= IncreX*::sin(m_dSAngle)+IncreY*::cos(m_dSAngle);
  long Offset = long(50.0+RotY) * 100 + long(50.0+RotX);
  ASSERT(Offset<100*100);
  *(buf+Offset)=image[y][x];
 }
}
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.2
レベル12

ベストアンサー率 47% (330/699)

他のソースが見えないので何とも言えませんが、多分ここのところが問題なんだと思いますのでアドバイスさせて頂きます。

DIBでの画像データは左下がオフセットとなり、右方向へなめて一段上へ・・・このように格納されています。
これを理解せずに回転しようとすると、反対方向へ回転しますので、DIBをバイナリレベルで扱う場合は注意してください。
image[0][0]は画像左下の座標なので、y座標の考え方を根本から反転してください。表示位置に影響が出たのはそのためだと思われます。
*DDサーフェイスはちゃんと左上が頂点ですが、過去の解答を見る限りDIBですよね?

また、オリジナル側の画像を参照して回転すると、斜線がガタガタになったり、画像に穴ができたりします。
根本的な対策は、ここで言うところのbuf側から全部の座標を埋めていく事です。
※ここで複数の座標を参照すれば綺麗な中間色が出せます。が、重い・・・

ソースは御自身で作成できると思いますので、頑張ってください。このままでよろしければ、yのあたりをチョコッと直せば済む筈です。
*私はWin32ベース(というか、こういう細かい部分はasm)で作るので、MFCベースのソースはちょっと・・なので。投げやりでごめんなさい。

また、回転拡大縮小はAPIに任せた方が楽だと思いますよ?
結局キャッシュミスが起こるので、アセンブラで作成しても大差ないです。

尚、参照URLの方が的確なアドバイスが選られると思います。
ご参考まで。
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル13

ベストアンサー率 24% (357/1463)

角度の測り方は反時計回りが標準ですから、普通にやったのでは左回転
するでしょうね。
で、時計回りにするには、簡単です。角度をマイナスにすれば良いのです。
ご質問の例ではm_dsAngleを(-m_dsAngle)で入れ替えればよいことになります。


このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


専門家があなたの悩みに回答!

-PR-

ピックアップ

-PR-
ページ先頭へ