前提・実現したいこと
C言語でN*Nの画像を回転させるプログラムを書いています。
発生している問題
画像を90度回転させると上手く行くのですが、斜めに回転させると、円、点状に画像に穴が開いてしまいます。 この穴を無くしたいです。
該当のソースコード
for(int i = 0 ; i < N ; i++){ for(int j = 0 ; j < N ; j++){ int srcX = ((i - N/2) * dcos - (j - N/2) * dsin -0.5)+N/2; int srcY = ((i - N/2) * dsin + (j - N/2) * dcos -0.5)+N/2; g[srcX*N+srcY]=f[i*N+j]; } } }
試したこと
int x=i-N/2,y=j-2/N;
int i1=(((x-N/2)/sin(theta))+((y-N/2)/cos(theta)))/(tan(theta)+(1/tan(theta)))+0.5;
int j1=(((x-N/2)/cos(theta))+((y-N/2)/sin(theta)))/(((1/tan(theta))-tan(theta)))-0.5;
などとして回転後の座標から元の画像を回転させると考え、その連立方程式の解が出力要素となるので、このようにも書いてみたりしたのですが、こうすると斜めに回した際に、サイズが変わってしまいまいます。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/16 05:43 編集
2018/05/16 05:41
2018/05/16 07:34
2018/05/16 07:47
2018/05/16 11:26