河南工業(yè)大學(xué)-圖形學(xué)實(shí)驗(yàn)四_第1頁
河南工業(yè)大學(xué)-圖形學(xué)實(shí)驗(yàn)四_第2頁
河南工業(yè)大學(xué)-圖形學(xué)實(shí)驗(yàn)四_第3頁
河南工業(yè)大學(xué)-圖形學(xué)實(shí)驗(yàn)四_第4頁
河南工業(yè)大學(xué)-圖形學(xué)實(shí)驗(yàn)四_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

--本頁僅作為文檔封面,使用時(shí)請直接刪除即可--

--內(nèi)頁可以根據(jù)需求調(diào)整合適字體及大小本頁僅作為文檔封面,使用時(shí)請直接刪除即可--

--內(nèi)頁可以根據(jù)需求調(diào)整合適字體及大小--河南工業(yè)大學(xué)-圖形學(xué)實(shí)驗(yàn)四(總9頁)PAGE實(shí)驗(yàn)四:二維變換與裁剪算法的實(shí)現(xiàn)一、實(shí)驗(yàn)?zāi)康?、掌握平移變換、旋轉(zhuǎn)變換和縮放變換方法;2、達(dá)到掌握二維圖形基本幾何變換及運(yùn)用幾何變換快速方便生成圖形的目的;3、掌握圖形裁剪算法。二、實(shí)驗(yàn)要求1.在MFC單文檔應(yīng)用程序中,添加奇次二維坐標(biāo)點(diǎn)類CP2,如圖所示,參考圖部分代碼,分別完成二維圖形的平移、旋轉(zhuǎn)和縮放。(注:變換參數(shù)可在程序內(nèi)直接給出或用對話框等形式輸入,簡單二維圖形經(jīng)二維變換后可生成復(fù)雜圖形。)圖CP2類定義圖部分二維變換參考代碼2.利用Cohen-Sutherland端點(diǎn)編碼算法編程實(shí)現(xiàn)任意線段的裁剪,要求自定義窗口區(qū)域和直線端點(diǎn)。(注:未被裁剪的線段及被裁剪的線段用不同的顏色顯示出來。)三、實(shí)驗(yàn)內(nèi)容二維圖形的變換eq\o\ac(○,1)菜單欄的建立eq\o\ac(○,2)對話框的創(chuàng)建,創(chuàng)建對應(yīng)的類為dialogeq\o\ac(○,3)為編輯框Edit添加成員變量:右鍵,建立類向?qū)?,選擇MemberVariables,雙擊IDC_EDIT1(對應(yīng)編輯框的ID),Membervariablename??m_x1Category?Value?Variabletype??OKeq\o\ac(○,4)新建兩個(gè)類CCP2和TransForm,CCP2類用于將二維點(diǎn)坐標(biāo)轉(zhuǎn)換成齊次坐標(biāo),TransForm類是平移,旋轉(zhuǎn),縮放的具體實(shí)現(xiàn)。代碼如下:.View類中復(fù)制的方法也不一樣,第一種控件變量復(fù)制:x1=,第二種為成員變量:x1=。eq\o\ac(○,2)關(guān)于if()==IDOK){…},當(dāng)()后,顯示一個(gè)模態(tài)對話框,此時(shí)DoModal()函數(shù)并不返回,即并沒有執(zhí)行大括號內(nèi)的內(nèi)容,直到用戶關(guān)閉此對話框時(shí),DoModal才返回。如果用戶點(diǎn)擊了確定按鈕,那么DoModal()函數(shù)就返回IDOK,此時(shí)進(jìn)入if語句。IDOK是一個(gè)宏。當(dāng)你CMyDlgdlg;時(shí),對話框并沒有顯示,只是構(gòu)造了一個(gè)CMyDlg類型的對象而已,直到用戶調(diào)用DoModal(),對話框才會顯示出來。而且有意思的是DoModal()只有兩個(gè)定義好的返回值IDOK和IDCANCLE,其實(shí)對應(yīng)的就是默認(rèn)的確認(rèn)和取消,其他返回值需要自定義。這使我在點(diǎn)擊不同按鈕實(shí)現(xiàn)不同功能時(shí)碰到了困難,因?yàn)橹挥袃蓚€(gè)兩個(gè)返回值,而我需要實(shí)現(xiàn)四個(gè)功能,對此我的解決方案是這樣的,最初,只用一個(gè)IDOK返回值,沒實(shí)現(xiàn)一個(gè)功能就換代碼截完圖,寫完實(shí)驗(yàn)報(bào)告蒙混過關(guān)。接著,既然只用一個(gè)的話,為什么不在一個(gè)if()==IDOK){}里把三個(gè)功能一起實(shí)現(xiàn),在畫布上把平移,旋轉(zhuǎn),縮放一同畫出來。后來,好像全局變量可以解決這個(gè)問題誒,才有了之后的flag。這兒還有一個(gè)未解決的問題就是:不要if,直接()好像也能達(dá)到目的,區(qū)別在哪,尚未明了。eq\o\ac(○,3)Invalidate();把這句代碼刪除之后,就沒法在畫布上畫畫了,而且程序中斷。多次試驗(yàn)個(gè)人總結(jié)出來的結(jié)果是:Invalidate()是強(qiáng)制系統(tǒng)進(jìn)行重畫。點(diǎn)擊對話框上的按鈕后,對話框關(guān)閉,返回IDOK,Invalidate()進(jìn)行重畫,調(diào)用…View中的OnDraw()函數(shù)。由于在對話框傳值,畫布上畫畫上花費(fèi)了大量時(shí)間

溫馨提示

  • 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

提交評論