江蘇大學(xué)計(jì)算機(jī)圖形學(xué)第三次試驗(yàn)報(bào)告二維圖形變換_第1頁
江蘇大學(xué)計(jì)算機(jī)圖形學(xué)第三次試驗(yàn)報(bào)告二維圖形變換_第2頁
江蘇大學(xué)計(jì)算機(jī)圖形學(xué)第三次試驗(yàn)報(bào)告二維圖形變換_第3頁
江蘇大學(xué)計(jì)算機(jī)圖形學(xué)第三次試驗(yàn)報(bào)告二維圖形變換_第4頁
江蘇大學(xué)計(jì)算機(jī)圖形學(xué)第三次試驗(yàn)報(bào)告二維圖形變換_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、江彖大季計(jì)算機(jī)科學(xué)與通信工程學(xué)院實(shí)驗(yàn)報(bào)告課程計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)題目二維圖形變換 學(xué)生姓名學(xué)號專業(yè)班級指導(dǎo)教師成績評定表評價(jià)內(nèi)容具體內(nèi)容權(quán)重得分論證分析方案論證與綜合分析的正確、合理性20%算法設(shè)計(jì)算法描述的止確性與可讀性20%編他實(shí)現(xiàn)源代碼正確性與可讀性30%程序書寫規(guī)范標(biāo)識符定義規(guī)范,程序書寫風(fēng)格規(guī)范20%報(bào)告質(zhì)量韭的清晰,提交準(zhǔn)時(shí)總 分10%指導(dǎo)教師簽名二維圖形變換1 .實(shí)驗(yàn)內(nèi)容完成對北極星圖案的縮放、平移、旋轉(zhuǎn)、對稱等二維變換。首先要建好圖示的北極星圖案的數(shù)據(jù)模型(頂點(diǎn)表、邊表)。另外,可重復(fù)調(diào)用“清屏” 和“暫?!钡群瘮?shù),使整個(gè)變換過程具有動態(tài)效果。2 .實(shí)驗(yàn)環(huán)境操作系統(tǒng):Windows

2、 XP開發(fā)工具:visual studio 20083 .問題分析為了建立北極星圖形,首先在二維空間中根據(jù)坐標(biāo)繪制出北極星圖形。并且在此坐標(biāo)系中 確定好走筆順序以便于進(jìn)行連線操作。同時(shí)需要好好的使用清屏函數(shù)以使得顯示正常。1. 放大縮小變換放大縮小變換公式為:x =x.a, y =y.d; 其中a,d分別為x,y方向的放縮比 例系數(shù)??赏ㄟ^不同的比例系數(shù)來顯示程序運(yùn)行結(jié)果。當(dāng)a=d時(shí)為等比例放縮操作。可令變換矩陣為T“00T= o d o,則:0 0 1。0 0X Y 1 o d o =axdy 1 = Xr 10 0 12. 對稱變換包括以x軸對稱、y軸對稱和原點(diǎn)O對稱三種。由于屏幕坐標(biāo)只有

3、第一象限,我們 可以將原點(diǎn)平移到(500, 240)處。在第一象限畫出一個(gè)三角形,然后分別求出三個(gè)對 稱圖形。3. 旋轉(zhuǎn)變換將圖形上的點(diǎn)(x, y)旋轉(zhuǎn)8角度,得到新的坐標(biāo)(x,y)為:x =xcos 0 -ysin 0 , y =xsin 0 +ycos 0 ;cos0sinQ 0J- =- sin0 cos0 0001旋轉(zhuǎn)夕1陣T為,4. 平移變換平移變換矩陣為:p00111=010,則x y 10/1I00 = x+/ y-hn 1 = xf yr 114.算法設(shè)計(jì)開始初鄴七猿制北極星膜型觸沿海平移的d既星繪制沿軸平 移的1匕眼星沿乂=工。00對標(biāo)配撅星低時(shí)針旋轉(zhuǎn)的4瞰星沿=600對稱

4、如戢星5.源代碼/北極星void hzbjx(CDC* pDC,long x18,long y18)(CPen newPen1,*oldPen;newPen1.CreatePen(PS_SOLID,2,RGB(255,0,0);oldPen = pDC-SelectObject(&newPen1);POINTvertex111=x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x3,y3,x1,y1, x6,y6,x3,y3,x7,y7,x5,y5;pDC-Polyline(vertex1, 11);newPen1.DeleteObject();newPen1.CreatePen(P

5、S_SOLID, 2, RGB(0,255,0);oldPen = pDC-SelectObject(&newPen1);POINT vertex25=x6,y6,x8,y8,x9,y9,x3,y3,x8,y8;pDC-Polyline(vertex2, 5);POINT vertex35=x4,y4,x10,y10,x11,y11,x3,y3,x10,y10;pDC-Polyline(vertex3, 5);newPen1.DeleteObject();newPen1.CreatePen(PS_SOLID, 2, RGB(255,0,90);oldPen = pDC-SelectObject

6、(&newPen1);POINTvertex411=x12,y12,x13,y13,x3,y3,x9,y9,x14,y14,x15,y15,x 3,y3,x11,y11,x12,y12,x3,y3,x14,y14;pDC-Polyline(vertex4, 11);newPen1.DeleteObject();newPen1.CreatePen(PS_SOLID, 2, RGB(0,100,255);oldPen = pDC-SelectObject(&newPen1);POINT vertex55=x15,y15,x16,y16,x3,y3,x16,y16,x7,y7;pDC-Polylin

7、e(vertex5, 5);POINT vertex65=x2,y2,x17,y17,x3,y3,x17,y17,x13,y13;pDC-Polyline(vertex6, 5);pDC-SelectObject(oldPen);Sleep(10);void CDiamondView二Polaris() InvalidateRgn(NULL);UpdateWindow();CDC *pDC = GetDC();long x18,y18;x1=553,y1=100;x2=515,y2=251;x3=553,y3=338;x4=516,y4=426;x5=553,y5=551;x6=589,y6=

8、253;x7=591,y7=426;x8=678,y8=212;x9=641,y9=311;x10=454,y10=438;x11=478,y11=364;x12=415,y12=338;x13=466,y13=301;x14=703,y14=338;x15=640,y15=375;x16=665,y16=450;x17=440,y17=226;hzbjx(pDC,x,y);Sleep(500);InvalidateRect(NULL);UpdateWindow();long x118,y118; /縮小for(double n=1;n=0.5;n-=0.01)for (int i=1;i18

9、;i+)x1i=Round(xi*n);y1i=Round(yi*n);hzbjx(pDC,x1,y1);Sleep(10);InvalidateRect(NULL);UpdateWindow();InvalidateRect(NULL);UpdateWindow();long x218,y218; /放大for(double n=1;n=1.5;n+=0.01)for (int i=1;i18;i+)x2i=Round(x1i*n);y2i=Round(y1i*n);hzbjx(pDC,x2,y2);Sleep(10);InvalidateRect(NULL);UpdateWindow();

10、InvalidateRect(NULL);UpdateWindow();hzbjx(pDC,x,y);Sleep(500);long x318,y318; 沿 X 軸平移for(int n=0;n=300;n+=2)for(int j=1;j18;j+)x3j=xj+n;y3j=yj;hzbjx(pDC,x3,y3);Sleep(1);InvalidateRect(NULL);UpdateWindow();long x418,y418; 沿 Y 軸平移for(int n=0;n=300;n+=2)for(int j=1;j18;j+)x4j=x3j;y4j=y3j+n;hzbjx(pDC,x4

11、,y4);Sleep(1);InvalidateRect(NULL);UpdateWindow();long x518,y518; /般時(shí)針旋轉(zhuǎn)for (double t=0;t=PI;t+=0.01) (for(int k=1;k=0;t-=0.01)(for(int k=1;k18;k+)(x6k=Round(xk*cos(t)-yk*sin(t)-x3*cos(t)+y3*sin(t)+x3);y6k=Round(xk*sin(t)+yk*cos(t)-x3*sin(t)-y3*cos(t)+y3);hzbjx(pDC,x6,y6);InvalidateRect(NULL);Update

12、Window();Sleep(500);long x718,y718;/船 X=1000對稱for(int l=1;l18;l+)(xl=Round(xl*0.5);yl=Round(yl*0.5);x7l=1000-xl;y7l=yl;)hzbjx(pDC,x,y);hzbjx(pDC,x7,y7);Sleep(200);long x818,y818;/船 Y=600 對稱 for(int l=1;l18;l+)x8l=xl;y8l=600-yl;)hzbjx(pDC,x,y);hzbjx(pDC,x8,y8);Sleep(200);long x918,y918;for(int l=1;l18;l+)x9l=1000-xl;y9l=600-yl;)hzbjx(pDC,x,y);hzbjx(pDC,x9,y9);)6 .程序運(yùn)行結(jié)果圖1北極星圖案的數(shù)據(jù)模型圖2北極星圖案的縮放

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論