版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、-PAGE . z.計(jì)算機(jī)科學(xué)與通信工程學(xué)院實(shí)驗(yàn)報(bào)告課程計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)題目二維圖形變換學(xué)生*專業(yè)班級(jí)指導(dǎo)教師日期成績(jī)?cè)u(píng)定表評(píng)價(jià)容具體容權(quán)重得分論證分析方案論證與綜合分析的正確、合理性20%算法設(shè)計(jì)算法描述的正確性與可讀性20%編碼實(shí)現(xiàn)源代碼正確性與可讀性30%程序書寫規(guī)標(biāo)識(shí)符定義規(guī),程序書寫風(fēng)格規(guī)20%報(bào)告質(zhì)量報(bào)告清晰,提交準(zhǔn)時(shí)10%總 分指導(dǎo)教師簽名二維圖形變換1. 實(shí)驗(yàn)容 完成對(duì)北極星圖案的縮放、平移、旋轉(zhuǎn)、對(duì)稱等二維變換。 提示:首先要建好圖示的北極星圖案的數(shù)據(jù)模型頂點(diǎn)表、邊表。另外,可重復(fù)調(diào)用清屏和暫停等函數(shù),使整個(gè)變換過(guò)程具有動(dòng)態(tài)效果。2. 實(shí)驗(yàn)環(huán)境軟硬件運(yùn)行環(huán)境:Windows
2、*P開發(fā)工具:visual studio 20083. 問(wèn)題分析 1. 放大縮小變換 放大縮小變換公式為:*=*.S*, y=y.Sy; 其中S*,Sy分別為*,y方向的放縮比例系數(shù)。 變換矩陣表達(dá)式為: * y 1=* y 1 S* 0 0 0 Sy 0 0 0 1 可通過(guò)下面不同的比例系數(shù)來(lái)顯示程序運(yùn)行結(jié)果。 S*=Sy=1.5;等比例放大 2S*=Sy=0.5;等比例縮小 2. 對(duì)稱變換 包括以*軸對(duì)稱、y軸對(duì)稱和原點(diǎn)O對(duì)稱三種。由于屏幕坐標(biāo)只有第一象限,我們可以將原點(diǎn)平移到500,240處。在第一象限畫出一個(gè)三角形,然后分別求出三個(gè)對(duì)稱圖形。 3. 旋轉(zhuǎn)變換 將圖形上的點(diǎn)*,y旋轉(zhuǎn)角度
3、,得到新的坐標(biāo)(*,y)為: *=*cos-ysin, y=*sin+ycos; 變換矩陣表示為: * y 1=* y 1 cos0 sin 0 0 sin0 cos0 0 0 0 14. 算法設(shè)計(jì) 程序框架:/DiamondView.hclass CDiamondView : public CViewpublic:/參數(shù)輸入和提示對(duì)話框 void Polaris();/北極星;/DiamondView.cppvoid CDiamondView:OnMenuDiamond() IsCutting = FALSE;if(dlgDiamond.DoModal()=IDOK) DrawDiamond
4、(dlgDiamond.m_nVerte*,dlgDiamond. m_nRadius,100);/調(diào)用繪制金剛石的函數(shù) /北極星void CDiamondView:Polaris()5. 源代碼/北極星void hzbj*(CDC* pDC,long *18,long y18) CPen newPen1,*oldPen; newPen1.CreatePen(PS_SOLID,2,RGB(255,0,0);oldPen = pDC-SelectObject(&newPen1); POINT verte*111=*1,y1,*2,y2,*3,y3,*4,y4,*5,y5,*3,y3,*1,y1,
5、*6,y6,*3,y3,*7,y7,*5,y5; pDC-Polyline(verte*1, 11); newPen1.DeleteObject(); newPen1.CreatePen(PS_SOLID, 2, RGB(0,255,0); oldPen = pDC-SelectObject(&newPen1); POINT verte*25=*6,y6,*8,y8,*9,y9,*3,y3,*8,y8; pDC-Polyline(verte*2, 5); POINT verte*35=*4,y4,*10,y10,*11,y11,*3,y3,*10,y10; pDC-Polyline(verte
6、*3, 5); newPen1.DeleteObject(); newPen1.CreatePen(PS_SOLID, 2, RGB(255,0,90); oldPen = pDC-SelectObject(&newPen1); POINT verte*411=*12,y12,*13,y13,*3,y3,*9,y9,*14,y14,*15,y15,*3,y3,*11,y11,*12,y12,*3,y3,*14,y14; pDC-Polyline(verte*4, 11); newPen1.DeleteObject(); newPen1.CreatePen(PS_SOLID, 2, RGB(0,
7、100,255); oldPen = pDC-SelectObject(&newPen1); POINT verte*55=*15,y15,*16,y16,*3,y3,*16,y16,*7,y7; pDC-Polyline(verte*5, 5); POINT verte*65=*2,y2,*17,y17,*3,y3,*17,y17,*13,y13; pDC-Polyline(verte*6, 5); pDC-SelectObject(oldPen); Sleep(10); void CDiamondView:Polaris()InvalidateRgn(NULL); UpdateWindow
8、(); CDC *pDC = GetDC(); long *18,y18; *1=553,y1=100; *2=515,y2=251; *3=553,y3=338; *4=516,y4=426; *5=553,y5=551; *6=589,y6=253; *7=591,y7=426; *8=678,y8=212; *9=641,y9=311; *10=454,y10=438; *11=478,y11=364; *12=415,y12=338; *13=466,y13=301; *14=703,y14=338; *15=640,y15=375; *16=665,y16=450; *17=440,
9、y17=226; hzbj*(pDC,*,y); Sleep(500); InvalidateRect(NULL); UpdateWindow(); long *118,y118; /縮小for(double n=1;n=0.5;n-=0.01)for (int i=1;i18;i+) *1i=Round(*i*n); y1i=Round(yi*n); hzbj*(pDC,*1,y1);Sleep(10); InvalidateRect(NULL); UpdateWindow(); InvalidateRect(NULL); UpdateWindow(); long *218,y218; /放
10、大for(double n=1;n=1.5;n+=0.01)for (int i=1;i18;i+) *2i=Round(*1i*n); y2i=Round(y1i*n); hzbj*(pDC,*2,y2);Sleep(10); InvalidateRect(NULL); UpdateWindow(); InvalidateRect(NULL); UpdateWindow(); hzbj*(pDC,*,y); Sleep(500);long *318,y318; /沿*軸平移 for(int n=0;n=300;n+=2)for(int j=1;j18;j+) *3j=*j+n; y3j=yj
11、; hzbj*(pDC,*3,y3);Sleep(1); InvalidateRect(NULL); UpdateWindow(); long *418,y418; /沿Y軸平移 for(int n=0;n=300;n+=2)for(int j=1;j18;j+) *4j=*3j; y4j=y3j+n; hzbj*(pDC,*4,y4);Sleep(1); InvalidateRect(NULL); UpdateWindow(); long *518,y518; /順時(shí)針旋轉(zhuǎn) for (double t=0;t=PI;t+=0.01) for(int k=1;k=0;t-=0.01) for(
12、int k=1;k18;k+) *6k=Round(*k*cos(t)-yk*sin(t)-*3*cos(t)+y3*sin(t)+*3); y6k=Round(*k*sin(t)+yk*cos(t)-*3*sin(t)-y3*cos(t)+y3); hzbj*(pDC,*6,y6); InvalidateRect(NULL); UpdateWindow(); Sleep(500); long *718,y718;/沿*=1000對(duì)稱 for(int l=1;l18;l+) *l=Round(*l*0.5);yl=Round(yl*0.5);*7l=1000-*l; y7l=yl; hzbj*(pDC,*,y);hzbj*(pDC,*7,y7);Sleep(200); long *818,y818;/沿Y=600對(duì)稱 for(int l=1;l18;l+) *8l=*l; y8l=600-yl; hzbj*(pDC,*,y);hzbj*(pDC,*8,y8);Sleep(200); long *918,y918; for(int l=1;l18;l+) *9l=1000-*l; y9l=600-yl; hzbj*(pDC,*,y);hzbj*(pDC,*
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 課題申報(bào)參考:閩派古琴的歷史、現(xiàn)狀及文獻(xiàn)研究
- 課題申報(bào)參考:面向?qū)W生創(chuàng)造力培育的場(chǎng)館學(xué)習(xí)環(huán)境測(cè)評(píng)體系與優(yōu)化機(jī)制研究
- 課題申報(bào)參考:面向產(chǎn)品個(gè)性化定制的共享制造資源協(xié)同調(diào)度優(yōu)化理論研究
- 二零二五年度智能電網(wǎng)信息化系統(tǒng)運(yùn)維與電力市場(chǎng)服務(wù)合同3篇
- 二零二五年度黨政機(jī)關(guān)會(huì)議酒店住宿及會(huì)議場(chǎng)地租賃合同4篇
- 2025年度土地承包經(jīng)營(yíng)權(quán)續(xù)包合同示范文本4篇
- 2025年度個(gè)人個(gè)人房產(chǎn)買賣合同(含裝修及配套設(shè)施)2篇
- 2025年度鋼材行業(yè)投資合作開發(fā)合同
- 2025年個(gè)人購(gòu)房合同(含房屋保險(xiǎn)服務(wù))
- 二零二五版南京房地產(chǎn)抵押物拍賣合同4篇
- 幼兒平衡車訓(xùn)練課程設(shè)計(jì)
- 肩袖損傷的護(hù)理查房課件
- 2023屆北京市順義區(qū)高三二模數(shù)學(xué)試卷
- 公司差旅費(fèi)報(bào)銷單
- 我國(guó)全科醫(yī)生培訓(xùn)模式
- 2021年上海市楊浦區(qū)初三一模語(yǔ)文試卷及參考答案(精校word打印版)
- 八年級(jí)上冊(cè)英語(yǔ)完形填空、閱讀理解100題含參考答案
- 八年級(jí)物理下冊(cè)功率課件
- DBJ51-T 188-2022 預(yù)拌流態(tài)固化土工程應(yīng)用技術(shù)標(biāo)準(zhǔn)
- 《長(zhǎng)津湖》電影賞析PPT
- 銷售禮儀培訓(xùn)PPT
評(píng)論
0/150
提交評(píng)論