Re: [問題] 新手C++ bmp旋轉
我也是個新手村的初心者
回回文 被鞭幾次 應該程式功力會進步吧
就在眾高手前 耍一下菜刀好了~~冏
以一個 5*5 矩陣為例 0 1 2 3 4 旋轉90度應為 20 15 10 5 0
5 6 7 8 9 21 16 11 6 1
10 11 12 13 14 22 17 12 7 2
15 16 17 18 19 23 18 13 8 3
20 21 22 23 24 24 19 14 9 4
你的旋轉公式如下
void rot90(char* in,char* out,unsigned int& rw,unsigned int& rh){
//in 將影像視為一維char值 //out 輸出資料 //rw ,rh 寬高
unsigned int p=0;
for(unsigned int w=0;w<rw;w++){
for(unsigned int h=0;h<rh;h++,p++){
out[p]=in[(h+1)*rw-1-w];
}
}
}
我用筆算 算不出 會旋轉的結果
ex 以5*5矩陣為例 out[0]=in[ (0+1) *5 -1- 0];
out[0]=in[4]; //答案就錯了
旋轉用二維的方式去做會比較好懂也比較好做
ex.
void rot90( int **in_ary,**out_ary, int h,int w){
int p=0;
for(i=h-1;i>=0;i--){
fot(j=0;j<w;j++){
out_ary[j][p]=in_ary[i][j];
}//0->w
p++;
}//從最後一行讀回來
}
拉成一維矩陣感覺沒那麼簡單
不然你就要用旋轉公式
x'= xcos(角度) - ysin(角度)
y'= xsin(角度) + ycos(角度)
旋轉也是有要考慮的問題 例如旋轉後影像大小會改變 還有計算出來位置有負的
那也要經過校正
C++板 解問首PO 歡迎高手指正 希望自己程式功力可以越強
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.23.24.11
→
04/14 20:05, , 1F
04/14 20:05, 1F
→
04/14 20:18, , 2F
04/14 20:18, 2F
→
04/14 20:39, , 3F
04/14 20:39, 3F
推
04/14 20:43, , 4F
04/14 20:43, 4F
→
04/14 20:46, , 5F
04/14 20:46, 5F
感謝大大推一下好了XXXD
這我有自己稍微測試過 應該是OK的
BMP 我是用一個.h檔案(老師寫的) 所以都沒刻意去注意這一塊
最近看到板上有人在寫圖的程式 我才在想說 K一下怎麼做
※ 編輯: ouyang0916 來自: 114.41.227.66 (04/15 11:04)
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
問題
2
11