




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí)驗(yàn)二 直線的生成算法的實(shí)現(xiàn)班級(jí) 08信計(jì)2班 學(xué)號(hào) 59 姓名 分?jǐn)?shù) 一、實(shí)驗(yàn)?zāi)康暮鸵?.理解直線生成的基本原理。2.掌握幾種常用的直線生成算法。3.利用Visual C+實(shí)現(xiàn)直線生成的DDA算法。二、實(shí)驗(yàn)內(nèi)容1.了解直線的生成原理,尤其是Bresenham畫線法原理。2.掌握幾種基本的直線生成算法:DDA畫線法、Bresenham畫線法、中點(diǎn)畫線法。3.利用Visual C+實(shí)現(xiàn)直線生成的DDA算法,在屏幕上任意生成一條直線。三、實(shí)驗(yàn)步驟1.直線的生成原理:(1)DDA畫線法也稱數(shù)值微分法,是一種增量算法。是一種基于直線的微分方程來生成直線的方法。(2)中點(diǎn)畫線法原理以下均假定所畫直線的
2、斜率,如果在方向上的增量為1,則方向上的增量只能在之間。中點(diǎn)畫線法的基本原理是:假設(shè)在坐標(biāo)為的各像素點(diǎn)中,與直線最近者已經(jīng)確定為,用小實(shí)心圓表示。那么,下一個(gè)與直線最近的像素只能是正右方的,或右上方的,用小空心圓表示。以為和的中點(diǎn),則的坐標(biāo)為。又假設(shè)是理想直線與垂直線的交點(diǎn)。顯然,若在的下方,則離直線近,應(yīng)取為下一像素點(diǎn);若在的上方,則離直線近,應(yīng)取為下一像素點(diǎn)。(3)Bresenham畫線法原理直線的中點(diǎn)Bresenham算法的原理:每次在主位移方向上走一步,另一個(gè)方向上走不走步取決于中點(diǎn)偏差判別式的值。給定理想直線的起點(diǎn)坐標(biāo)為P0(x0,y0),終點(diǎn)坐標(biāo)為P1(x1,y1),則直線的隱函數(shù)
3、方程為: (3-1) 構(gòu)造中點(diǎn)偏差判別式d。 (1) 當(dāng)d<0時(shí) 當(dāng)d0時(shí) 2.實(shí)現(xiàn)前面所述的各種直線生成算法,包括DDA算法、中點(diǎn)生成算法、Bresenham生成算法等。程序運(yùn)行后的菜單界面如圖2-1所示。圖2-1 直線生成圖形的程序運(yùn)行界面首先創(chuàng)建工程名為“基本圖形的生成與填充”的單文檔應(yīng)用程序框架,操作步驟如下:(1)創(chuàng)建單文檔應(yīng)用程序框架。啟動(dòng)Visual C+,選擇“文件/新建”菜單命令,在彈出的新建對(duì)話框中單擊“工程”標(biāo)簽;選擇.MFC AppWizard(exe),在“工程名稱”編輯框中輸入“基本圖形的生成與填充”(也可以使用英文名稱),選擇所要存放的位置后,單擊“確定”按
4、鈕,出現(xiàn)Stept1對(duì)話框;選擇“單個(gè)文檔”選項(xiàng),單擊“下一步”按鈕,在接著的Stept2Stept5中,均可以直接單擊“下一步”按鈕完成應(yīng)用程序框架的構(gòu)建。也可以在Stept1步選擇“單文檔”(Single document)后,直接單擊“完成”按鈕完成。(2)編輯菜單資源。在工作區(qū)中的Resource View標(biāo)簽中,單擊Menu項(xiàng)左邊的“+”,然后雙擊其子項(xiàng)IDRMAINFRAME,彈出編輯主菜單項(xiàng),根據(jù)表1中定義的菜單項(xiàng)資源來編輯菜單,如圖2-2所示。圖2-2 編輯主菜單項(xiàng)(3)添加消息處理函數(shù)。利用類向?qū)В–lass Wizard)為應(yīng)用程序添加與菜單項(xiàng)相關(guān)的消息處理函數(shù)。右擊菜單項(xiàng)
5、標(biāo)題,選擇“建立類向?qū)А?,在彈出的MFC ClassWizard窗口中,選擇Message Maps標(biāo)簽,在Class Name欄中選擇CMyView,根據(jù)表2建立消息映射函數(shù),如圖2-3所示。MFC ClassWizard會(huì)自動(dòng)完成有關(guān)的函數(shù)聲明。圖2-3 添加消息處理函數(shù)(4)添加程序代碼。在CMyView.cpp文件中相應(yīng)的位置添加各算法的程序代碼,在Visual C+的MFC中繪制圖形,一般可以調(diào)用一個(gè)“CDC”類,從CDC開始,添加代碼。添加代碼如下:/DDA算法生成直線,起點(diǎn)(x0,y0),終點(diǎn)(x1,y1)。void CMyView:OnDdaline() CDC *pDC=Ge
6、tDC(); int x0=100,y0=100,x1=300,y1=200,c=RGB(255,0,0);int x,y,i;float dx,dy,k;dx=(float)(x1-x0);dy=(float)(y1-y0);k=dy/dx;x=x0;y=y0;if(abs(k)<1)for(;y<=y1;y+)pDC->SetPixel(x,int(y+0.5),c);y=y+k;if(abs(k)>=1)for(;y<=y1;y+)pDC->SetPixel(int(x+0.5),y,c);x=x+1/k;ReleaseDC(pDC);/中點(diǎn)算法生成直
7、線void CMyView:OnMidpointline() CDC *pDC=GetDC();int x0=100,y0=100,x1=400,y1=300,c=RGB(0,0,0);float a,b,d1,d2,d,x,y;a=y0-y1;b=x1-x0;d=2*a+b;d1=2*a;d2=2*(a=b);x=x0;y=y0;pDC->SetPixel(x,y,c);while(x<x1)if(d<0) x+;y+;d+=d2;else x+;d+=d1;pDC->SetPixel(x,y,c);ReleaseDC(pDC);/Bresenham算法生成直線voi
8、d CMyView:OnBresenhamline() CDC *pDC=GetDC();int x0=100,y0=100,x1=500,y1=600,color=RGB(0,0,255);int i,x,y,dx,dy;float k,e;dx=x1-x0;dy=y1-y0;e=-dx;x=x0;y=y0;for(i=0;i<=dx;i+)pDC->SetPixel(x,y,color);x+;e+=2*dy;if(e>=0) y+;e=e-2*dx;ReleaseDC(pDC);(5)編譯連接生成可執(zhí)行程序,運(yùn)行該程序。仔細(xì)檢查上述各個(gè)操作步驟,核對(duì)以上信息,點(diǎn)擊調(diào)試按鈕,調(diào)試程序準(zhǔn)確無誤后即可完整運(yùn)行該程序。四、實(shí)驗(yàn)結(jié)果分析運(yùn)行該程序后,運(yùn)行程序后,我們可以得到如圖2-1的界面,分別單擊菜單中的“直線生成”項(xiàng)的“DDA算法生成直線”、“中點(diǎn)算法生成直線”、“Bresenham算法生成直線”,可以得到相應(yīng)的直線:DDA算法得到的是紅色線段,中
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度酒店客房預(yù)訂及售后服務(wù)合同
- 二零二五年度攝影工作室轉(zhuǎn)讓及攝影服務(wù)協(xié)議范本
- 二零二五年度體育產(chǎn)業(yè)招商代理合作協(xié)議
- 2025年度演唱會(huì)票務(wù)代理合同
- 二零二五年度科技創(chuàng)新私人廠房租賃服務(wù)協(xié)議
- 婚禮跟拍合同-2025年度獨(dú)家婚禮影像記錄
- 二零二五年度勞動(dòng)合同解除通知及離職手續(xù)辦理流程優(yōu)化范本
- 2025年度珠寶企業(yè)數(shù)字化轉(zhuǎn)型戰(zhàn)略合作合同
- 2025年度綠茶茶園承包合作種植與加工合同
- 二零二五年度家庭月嫂服務(wù)及培訓(xùn)合同
- 2022年高考(全國(guó)甲卷)語文仿真模擬卷【含答案】
- 腸瘺治療PPT醫(yī)學(xué)課件(PPT 25頁)
- 員工轉(zhuǎn)正評(píng)價(jià)表
- 道路交通事故責(zé)任認(rèn)定行政復(fù)議申請(qǐng)書范例
- 鄭州大學(xué)圖書館平立剖面效果圖
- 高效液相含量測(cè)定計(jì)算公式
- 公安機(jī)關(guān)通用告知書模板
- 《小學(xué)數(shù)學(xué)課程與教學(xué)》教學(xué)大綱
- 《手機(jī)攝影》全套課件(完整版)
- 礦井無計(jì)劃停電停風(fēng)安全技術(shù)措施
- 標(biāo)前合作合同協(xié)議書范本
評(píng)論
0/150
提交評(píng)論