2009年10月16日 星期五

hw2

首先先放出這次作業的執行結果

這次的作業
主要是要讓圖片旋轉
乍看之下很簡單
可是實際上他的程式碼要不是網路上有滿多可以參考的程式
單靠自己想破頭也是想不出來的

x = (int)( ( i - xcenter )*cos(1.05) - ( j - ycenter )*sin(1.05) + xcenter ) ;
y = (int)( ( i - xcenter )*sin(1.05) + ( j - ycenter )*cos(1.05) + ycenter ) ;

這是從網路上得到的程式碼




首先遇到的問題是....




這是第一次旋轉後的結果
顯然圖片的左邊被蓋掉了
問了同學才知道
這是位移的問題








for(i=0;i+150;i++)
{
for(j=0;j+150;j++)
{
int x=0,y=0;

x=(int)((i*cosine-j*sine)+200);
y=(int)((i*sine+j*cosine)-100);

Image2->Canvas->Pixels[j][i]=Image1->Canvas->Pixels[y][x];

首先紅色字部分的是讓陣列擴大
因為圖旋轉後
他的長寬會不一樣
所以陣列值要把他放大

再來
藍色字的部分
x=(int)((i*cosine-j*sine)+200);
這是讓X座標的圖點旋轉兼位移
y=(int)((i*sine+j*cosine)-100);
這是讓Y座標的圖點旋轉兼位移

只要從以上這些值修改 就可以讓旋轉後的圖片
可以顯示出完整的圖片

for(i=0;i
{
for(j=0;j
{
int x=0,y=0;

x=(int)((i*cosine-j*sine)+300);
y=(int)((i*sine+j*cosine)-200);

Image2->Canvas->Pixels[j][i]=Image1->Canvas->Pixels[y][x];

}
}
這是修改後的值 可以讓圖片完整顯示出來

THE END

沒有留言:

張貼留言