版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、2018.02.制第 頁實(shí)驗(yàn)二:基本圖元掃描轉(zhuǎn)換一、實(shí)驗(yàn)?zāi)康?、掌握?qǐng)D形掃描轉(zhuǎn)換的基本概念;2、掌握直線的繪制算法及程序設(shè)計(jì);3、掌握?qǐng)A弧的繪制算法及程序設(shè)計(jì)。二、實(shí)驗(yàn)要求在MFC單文檔應(yīng)用程序中,利用MFC應(yīng)用程序向?qū)赏暾膽?yīng)用程序基本框架,添加“直線”菜單,在“直線”菜單下添加“DDA畫線”子菜單,如圖1.1所示,對(duì)應(yīng)DDA算法繪制直線,直線端點(diǎn)為(100,100),(300,200),顏色為紅色,如圖1.2所示。85tesl2-MicrosoftVisualC+-1DR_MAINFRAME(Men,.=|ISM)工ST爼建工R翻口呦舉助凹用Id耳/百二”國咅rftUnUraw|CAb
2、aulDlgAllcIIeissmemberst|.CAbouilDIg|T上丈件舊刪舊EiM希曲凹::豆賓曰Qdtest?resources*申匚|feixlcrafor町匚jDialog宙匚jUcon目已Mviu呂innmainfV5Cl.He._5lil.可環(huán)馳&矚試,在宴件1中查菇k在文井2中紗X若果視匚血丘盹出;1“|”1就緒_丿圖1.1菜單示例圖圖1.2DDA畫線在上題基礎(chǔ)上,在“直線”菜單下再添加一個(gè)“中點(diǎn)畫線”子菜單,如圖2.1所示,利用中點(diǎn)畫線算法畫線,實(shí)現(xiàn)鼠標(biāo)按下抬起繪制直線段的功能,顏色為黑色,如圖2.2所示。圖2.1菜單示例圖圖2.1繪制矩形制作動(dòng)畫圖3.在上題基礎(chǔ)上,
3、添加“圓形”菜單,如圖3.1所示,利用Bresenham算法編程實(shí)現(xiàn)圓的掃描轉(zhuǎn)換,繪制半徑為200的黑色圓,如圖3.2所示。圖3.1菜單示例圖圖3.2Bresenham畫圓三、實(shí)驗(yàn)內(nèi)容q“直線”菜單,“DDA畫線”子菜單,“中點(diǎn)畫線”子菜單的構(gòu)建ggraphit.rc-IDRMAINFRAME(Menu)交何E鋸型查看凹幫助凹取圖形iDDAHi:=1卡QDDA畫線voidCMainFrame:OnDda()/獲得設(shè)備指針CDC*pDC=GetDC();/定義直線兩端點(diǎn)和直線顏色(紅色)Q3Untitled-graphic文件舊輪輯幫助團(tuán)慈圓形DQ|X|S|?intx0=100,y0=100,x
4、1=300,y1=200,c=RGB(255,0,0);floatx,y,i;floatdx,dy,k;dx=(float)(x1-x0);dy=(float)(y1-y0);k=dy/dx;y=y0;x=x0;if(abs(k)1)for(;xSetPixel(x,int(y+0.5),c);y=y+k;if(abs(k)=1)for(;ySetPixel(int(x+0.5),y,c);x=x+1/k;ReleaseDC(pDC);釋放設(shè)備指針Q中點(diǎn)畫線OWkWl時(shí)中點(diǎn)畫線算法的算法步驟為:輸入直線的兩端點(diǎn)PO(xO,yO)和pl(xl,yl)。計(jì)算初始值a=yO-y1、b=x1-x0、d
5、=2*a+b、x=xO、y=y0、d1=2*a、d2=2*(a+b)。3繪制點(diǎn)(x,y)。判斷d的符號(hào)。若d0,貝則(x,y)更新為(x+1,y+1),d更新為d+d2;否則(x,y)更新為(x+1,y),d更新為d+d1。4當(dāng)直線沒有畫完時(shí),重復(fù)步驟3。否則結(jié)束。定義二個(gè)全局變量:CPointm_lastEndPoint;CPointm_StartPoint;intflag;voidCTest2_1View:OnLButtonDown(UINTnFlags,CPointpoint)m_StartPoint=point;CView:OnLButtonDown(nFlags,point);voi
6、dCTest2_1View:OnLButtonUp(UINTnFlags,CPointpoint)m_lastEndPoint=point;CDC*pDC=GetDC();if(flag=1)intxO=m_StartPoint.x,yO=m_StartPoint.y,x1=m_lastEndPoint.x,y1=m_lastEndPoint.y,c=RGB(0,0,0);floata,b,d1,d2,d,x,y,m;if(x1SetPixel(x,y,c);if(m=0&m=1)斜率大于0小于1d=2*a+b;d1=2*a,d2=2*(a+b);while(xx1)if(dSetPixel(
7、x,y,c);elseif(m=-1)斜率小于0大于-1d=2*a-b;d1=2*a-2*b,d2=2*a;while(x0)x+,y-,d+=d1;elsex+,d+=d2;pDC-SetPixel(x,y,c);elseif(m1)斜率大于1d=a+2*b;d1=2*(a+b),d2=2*b;while(y0)x+,y+,d+=d1;elsey+,d+=d2;pDC-SetPixel(x,y,c);else斜率小于-1d=a-2*b;d1=-2*b,d2=2*(a-b);while(yy1)if(dSetPixel(x,y,c);ReleaseDC(pDC);CView:OnLButton
8、Up(nFlags,point);voidCTest2_1View:0nMidline()flag=1;QBresenham算法畫圓算法步驟:輸入圓半徑r和圓心(xc,yc),獲得第一個(gè)點(diǎn):(x0,y0)=(0,R)計(jì)算dO=3-2R;根據(jù)公式計(jì)算dk+1,確定下一點(diǎn);如果dk0,選擇(xk+1,yk-1)確定對(duì)稱點(diǎn);重復(fù)步驟3),直至xy酸Jntitlcd-trst2_1刃牛舊歸刁W(V:.巨聶園形voidCTest2_1View:OnBresenham()CDC*pDC=GetDC();intx0=250,y0=250,x,y,r=200,c=0;floate,d;e=3_2*r;x=0;
9、y=r;while(x=y)if(eSetPixel(x+x0,y+y0,c);pDC-SetPixel(-x+x0,y+y0,c);pDC-SetPixel(-x+x0,-y+y0,c);pDC-SetPixel(x+x0,-y+y0,c);pDC-SetPixel(y+x0,x+y0,c);pDC-SetPixel(-y+x0,x+y0,c);pDC-SetPixel(-y+x0,-x+y0,c);pDC-SetPixel(y+x0,-x+y0,c);ReleaseDC(pDC);四、實(shí)驗(yàn)結(jié)果與總結(jié)(列出實(shí)驗(yàn)過程中的收獲和遇到的困難)此次實(shí)驗(yàn)遇到的問題較多。首先就是在MainFrm中建立OnLButtonDown和OnLButtonUp函數(shù)時(shí)會(huì)扌報(bào)以下的錯(cuò)誤:illegalcallofnon-staticmemberfunction和cannotaccessprotectedmemberdeclaredinclassCWnd,在同學(xué)的指導(dǎo)下,在建立類向?qū)У臅r(shí)候,classname選擇CXXXXView,便可以解決問題。本來不需要點(diǎn)擊中點(diǎn)畫線子菜單,就可以
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 虛擬現(xiàn)實(shí)體驗(yàn)館用戶體驗(yàn)免責(zé)合同協(xié)議
- 二零二五年度市政給排水管網(wǎng)維護(hù)保養(yǎng)合同2篇
- 企業(yè)并購及戰(zhàn)略合作協(xié)議
- 2024洗衣店與汽車4S店合作內(nèi)飾清潔保養(yǎng)協(xié)議3篇
- 二零二五年度建筑工程施工合同風(fēng)險(xiǎn)評(píng)估協(xié)議3篇
- 農(nóng)業(yè)種植技術(shù)指導(dǎo)及免責(zé)協(xié)議書
- 2025年度環(huán)保型住宅新風(fēng)系統(tǒng)安裝合同3篇
- 2024年汽車自動(dòng)駕駛技術(shù)研發(fā)與測(cè)試合同
- 2024民間借貸民事上訴狀起草與執(zhí)行服務(wù)及后續(xù)跟進(jìn)合同3篇
- 2025年度災(zāi)害應(yīng)急救援人工施工與物資保障合同3篇
- 光譜報(bào)告格式
- 英法核動(dòng)力裝置
- GB/T 41837-2022溫泉服務(wù)溫泉水質(zhì)要求
- YS/T 79-2006硬質(zhì)合金焊接刀片
- 考研考博-英語-山東師范大學(xué)押題密卷附帶答案詳解篇
- 實(shí)用性閱讀與交流任務(wù)群設(shè)計(jì)思路與教學(xué)建議
- 中醫(yī)診療器具清洗消毒(醫(yī)院感染防控專家課堂培訓(xùn)課件)
- 通風(fēng)設(shè)施標(biāo)準(zhǔn)
- 藥廠生產(chǎn)車間現(xiàn)場(chǎng)管理-PPT課件
- 軸與孔標(biāo)準(zhǔn)公差表
- 防火門施工方案
評(píng)論
0/150
提交評(píng)論