掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
画像の極座標変換について (ID:4888)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
細かいところをチェックしていませんが、こんな感じでしょう。 procedure TForm1.Button1Click(Sender: TObject); var x, y: integer;//変換先の(x,y) a, b: integer;//変換元の(x,y) dx, dy: double; // 中心を原点としたXY座標(右が+, 上が+) dq, dr: double; // 極座標 begin for y := 0 to Image2.Height - 1 do for x := 0 to Image2.Width - 1 do begin // 極座標変換。 dx := x; dy := y; dx := dx - (Image2.Width div 2); dy := (Image2.Height div 2) - dy; //デカルト座標(dx,dy)から極座標(dq,dr)に変換 dr := sqrt(dx*dx + dy*dy); if dx = 0 then begin if dy > 0 then dq := PI / 2.0 else dq := PI * 3.0 / 2.0; end else begin dq := arctan(dy / dx); end; if dx < 0.0 then dq := dq + PI; //dqは-PI/2...PI/2の間 dq := dq + PI/2; //dqが横方向 dq := (dq * Image2.Width) / (2*PI); Image2.Canvas.Pixels[x, y] := Image1.Canvas.Pixels[ Floor(dq), Floor(dr)] ; end; end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.