




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、.實(shí)驗(yàn)一、直線的生成實(shí)驗(yàn)?zāi)康模?、 掌握DDA直線畫(huà)法、中點(diǎn)畫(huà)線法和Bresenham畫(huà)線法2、 掌握VC+簡(jiǎn)單程序設(shè)計(jì)方法實(shí)驗(yàn)內(nèi)容:根據(jù)提供的程序框架,修改部分代碼,完成畫(huà)一條直線的功能(中點(diǎn)畫(huà)線法或者Bresenham畫(huà)線法任選一),只要求實(shí)現(xiàn)在第一象限內(nèi)的直線。實(shí)驗(yàn)步驟和方法:首先啟動(dòng)Visual C+ 6.0(注意,其它版本程序無(wú)法正確編譯),文件(file)打開(kāi)工作空間(open workspace)。打開(kāi) 實(shí)驗(yàn)12用基本圖形生成基本圖形生成.dsw。在fileview窗口,source file下,雙擊 直線生成view.cpp,或者classview窗口下,cmyview類下相應(yīng)
2、的函數(shù),按注釋改寫(xiě)下列函數(shù):void CMyView:OnDdaline() (此為DDA生成直線)void CMyView:OnBresenhamline()(此為Bresenham畫(huà)直線)void CMYView:OnMidPointLine()(此為中點(diǎn)畫(huà)線法)程序代碼說(shuō)明:1、直線的兩個(gè)端點(diǎn),由對(duì)話框輸入,給定程序已經(jīng)完成輸入代碼。2、SetPixel的用法:COLORREF SetPixel(int x, int y, COLORREF crColor);/x,y為坐標(biāo)點(diǎn)。COLORREF SetPixel(POINT point, COLORREF crColor);/point為
3、坐標(biāo)點(diǎn)。3、 本實(shí)驗(yàn)事先提供DDA話直線的函數(shù)示范(紅色部分是重點(diǎn),其它部分可以不看)中點(diǎn)畫(huà)直線函數(shù)和BresenHam畫(huà)直線函數(shù)由同學(xué)們參照dda直線的示例函數(shù)自己完成。/以下為DDA畫(huà)直線的源程序float x,y,dx,dy,k;dx=(float)(xb-xa);dy=(float)(yb-ya);k=dy/dx;x=xa;y=ya;if(abs(k)1)for (x=xa;xSetPixel(x, int(y+0.5),COLOR);y=y+k;if(abs(k)=1)for(y=ya;ySetPixel(int(x+0.5),y,COLOR);x=x+1/k;/DDA畫(huà)直線結(jié)束/以
4、下為中點(diǎn)畫(huà)直線的源程序float a,b,d1,d2,d,x,y; a=ya-yb,b=xb-xa,d=2*a+b; d1=2*a,d2=2*(a+b); x=xa,y=ya; pdc-SetPixel(x,y,COLOR); while(xxb) if(dSetPixel(x,y,COLOR); /中點(diǎn)畫(huà)直線結(jié)束/以下為Bresenham畫(huà)直線的源程序int i,s1,s2,interchange;float f,x,y,deltax,deltay,temp;x=xa;y=ya;deltax=abs(xb-xa);deltay=abs(yb-ya);if(xb-xa=0) s1=1;else
5、 s1=-1;if(yb-ya=0) s2=1;else s2=-1;if(deltaydeltax) temp=deltax;deltax=deltay;deltay=temp;interchange=1;else interchange=0;f=2*deltay-deltax;pdc-SetPixel(x,y,COLOR);for(i=1;i=0)if(interchange=1) x+=s1;else y+=s2;pdc-SetPixel(x,y,COLOR);f=f-2*deltax;else if(interchange=1) y+=s2;else x+=s1;f=f+2*delta
6、y;/Bresenham畫(huà)直線結(jié)束;.實(shí)驗(yàn)二、圓的生成(中點(diǎn)和Bresenham法)實(shí)驗(yàn)?zāi)康模?、 掌握bresenham畫(huà)圓的算法。2、 掌握VC+簡(jiǎn)單程序設(shè)計(jì)方法實(shí)驗(yàn)內(nèi)容:根據(jù)提供的程序框架,修改部分代碼,用Bresenham和中點(diǎn)畫(huà)圓法畫(huà)一段圓弧或者畫(huà)圓。實(shí)驗(yàn)步驟和方法:同實(shí)驗(yàn)一,修改下列函數(shù):void CMyView:OnBresenhamCircle()void CMyView:OnMidpointCircle()程序代碼說(shuō)明:1、圓的圓心為原點(diǎn),半徑為給定參數(shù),由函數(shù)編寫(xiě)時(shí)給定,不要求人機(jī)交換。/以下請(qǐng)同學(xué)們自己編寫(xiě)畫(huà)圓函數(shù)int x,y;int c=0;float d;x=0;y
7、=radius;d=1.25-radius;pdc-SetPixel(x0+x),(y0+y),c);pdc-SetPixel(x0-x),(y0+y),c);pdc-SetPixel(x0+x),(y0-y),c);pdc-SetPixel(x0-x),(y0-y),c);pdc-SetPixel(x0+y),(y0+x),c);pdc-SetPixel(x0-y),(y0+x),c);pdc-SetPixel(x0+y),(y0-x),c);pdc-SetPixel(x0-y),(y0-x),c);while (x=y)if (dSetPixel(x0+x),(y0+y),c);pdc-S
8、etPixel(x0-x),(y0+y),c);pdc-SetPixel(x0+x),(y0-y),c);pdc-SetPixel(x0-x),(y0-y),c);pdc-SetPixel(x0+y),(y0+x),c);pdc-SetPixel(x0-y),(y0+x),c);pdc-SetPixel(x0+y),(y0-x),c);pdc-SetPixel(x0-y),(y0-x),c);/中點(diǎn)畫(huà)圓結(jié)束/以下請(qǐng)同學(xué)們自己編寫(xiě)畫(huà)圓函數(shù)int c=0;int x=0,y=radius,p=3-2*radius;while(xSetPixel(x0+x),(y0+y),c);pdc-SetPix
9、el(x0-x),(y0+y),c);pdc-SetPixel(x0+x),(y0-y),c);pdc-SetPixel(x0-x),(y0-y),c);pdc-SetPixel(x0+y),(y0+x),c);pdc-SetPixel(x0-y),(y0+x),c);pdc-SetPixel(x0+y),(y0-x),c);pdc-SetPixel(x0-y),(y0-x),c);if(pSetPixel(x0+x),(y0+y),c);pdc-SetPixel(x0-x),(y0+y),c);pdc-SetPixel(x0+x),(y0-y),c);pdc-SetPixel(x0-x),(
10、y0-y),c);pdc-SetPixel(x0+y),(y0+x),c);pdc-SetPixel(x0-y),(y0+x),c);pdc-SetPixel(x0+y),(y0-x),c);pdc-SetPixel(x0-y),(y0-x),c);/BresenHam畫(huà)圓結(jié)束實(shí)驗(yàn)三、二維圖形的平移實(shí)驗(yàn)?zāi)康模?、 驗(yàn)證二維圖形的幾何變換矩陣2、 掌握VC+簡(jiǎn)單程序設(shè)計(jì)實(shí)驗(yàn)內(nèi)容:以一條直線段為例,完成目標(biāo)的平移(縮放等其它變換選做)軟件的結(jié)果:點(diǎn)擊平移,首先會(huì)彈出一個(gè)對(duì)話框要求輸入直線的起點(diǎn)和中點(diǎn),以及平移的數(shù)值,確定后,原直線和平移后的直線同時(shí)顯示。實(shí)驗(yàn)步驟和方法:1、 打開(kāi)實(shí)驗(yàn)34用/二維變
11、換.dsw2、 改寫(xiě)二維變換view.cpp里的void CMyView:OnMove()函數(shù)(需要改寫(xiě)的地方已經(jīng)做了說(shuō)明)。3、 生成直線的函數(shù)采用VC里的函數(shù)。4、 函數(shù)的主要任務(wù)是計(jì)算出平移后的坐標(biāo)。程序代碼說(shuō)明:繪制一條直線需要兩個(gè)函數(shù)。pdc-MoveTo(int x, int y); 將當(dāng)前點(diǎn)移動(dòng)至(x ,y)坐標(biāo)pdc-LineTo(int x, int y); 從當(dāng)前點(diǎn)繪制一條直線至(x,y)坐標(biāo),并將當(dāng)前點(diǎn)移動(dòng)至(x,y)。比如,要繪制一條直線,起點(diǎn)(x0, y0),終點(diǎn)(x1, y1):pdc-MoveTo(x0,y0);pdc-LineTo(x1,y1);/此處請(qǐng)同學(xué)們自
12、己編寫(xiě),計(jì)算出直線兩個(gè)端點(diǎn)xa1,ya1,xb1,yb1,直線的平移。xa1=xa+dx;ya1=ya+dy;xb1=xb+dx;yb1=yb+dy;實(shí)驗(yàn)四、二維圖形的旋轉(zhuǎn)實(shí)驗(yàn)?zāi)康模?、 驗(yàn)證二維圖形的幾何變換矩陣2、 掌握VC+簡(jiǎn)單程序設(shè)計(jì)實(shí)驗(yàn)內(nèi)容:以一個(gè)三角形為例,完成二維圖形繞任一點(diǎn)旋轉(zhuǎn)。軟件的結(jié)果:點(diǎn)擊平移,首先會(huì)彈出一個(gè)對(duì)話框要求輸入三角形的三個(gè)頂點(diǎn),以及要繞著旋轉(zhuǎn)的點(diǎn)和旋轉(zhuǎn)角度,確定后,原圖形和變換后的圖形同時(shí)顯示。實(shí)驗(yàn)步驟和方法:1、 打開(kāi)二維變換.dsw2、 改寫(xiě)二維變換view.cpp里的void CMyView:OnRotate()函數(shù)(需要改寫(xiě)的地方我已經(jīng)做了說(shuō)明)。3、
13、 生成直線的函數(shù)采用VC里的函數(shù)。4、 函數(shù)的主要任務(wù)是計(jì)算出變換后的坐標(biāo)。程序代碼說(shuō)明:繪制一條直線需要兩個(gè)函數(shù)。pdc-MoveTo(int x, int y); 將當(dāng)前點(diǎn)移動(dòng)至(x ,y)坐標(biāo)pdc-LineTo(int x, int y); 從當(dāng)前點(diǎn)繪制一條直線至(x,y)坐標(biāo),并將當(dāng)前點(diǎn)移動(dòng)至(x,y)。比如,要繪制一條直線,起點(diǎn)(x0, y0),終點(diǎn)(x1, y1):pdc-MoveTo(x0,y0);pdc-LineTo(x1,y1);/此處請(qǐng)同學(xué)們自己編寫(xiě),計(jì)算出變換后的三角形的三個(gè)端點(diǎn)xa1,ya1,xb1,yb1,xc1,yc1,三角形的旋轉(zhuǎn)。 xa1=(xa-x)*cos
14、(angle)-(ya-y)*sin(angle)+x;ya1=(xa-x)*sin(angle)+(ya-y)*cos(angle)+y;xb1=(xb-x)*cos(angle)-(yb-y)*sin(angle)+x;yb1=(xb-x)*sin(angle)+(yb-y)*cos(angle)+y;xc1=(xc-x)*cos(angle)-(yc-y)*sin(angle)+x;yc1=(xc-x)*sin(angle)+(yc-y)*cos(angle)+y;實(shí)驗(yàn)五、Bezier曲線的生成實(shí)驗(yàn)?zāi)康模?、 掌握曲線的參數(shù)化表示方法2、 掌握Bezier曲線的生成算法實(shí)驗(yàn)內(nèi)容:給定四個(gè)或者四個(gè)以
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度工地施工安全培訓(xùn)責(zé)任免除協(xié)議
- 2025年度城市綠化景觀土地使用權(quán)轉(zhuǎn)讓與維護(hù)合同
- 2025年度大學(xué)實(shí)習(xí)生實(shí)習(xí)期間權(quán)益保護(hù)與職業(yè)規(guī)劃合同
- 2025年度婚嫁婚前財(cái)產(chǎn)繼承與分配協(xié)議
- 健身房裝修合同標(biāo)準(zhǔn)
- 2025年度礦山地質(zhì)災(zāi)害防治投資合作協(xié)議
- 2025年度宅基地使用權(quán)轉(zhuǎn)讓與農(nóng)村旅游基礎(chǔ)設(shè)施建設(shè)合同
- 2025年度山林林業(yè)生態(tài)補(bǔ)償租賃合同
- 2025年度家具加工廠轉(zhuǎn)讓協(xié)議
- 2025年湖北生態(tài)工程職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)及答案1套
- 【高考真題】2024年新課標(biāo)全國(guó)Ⅱ卷高考語(yǔ)文真題試卷(含答案)
- 旅游服務(wù)質(zhì)量評(píng)價(jià)體系
- 義烏市建筑工程質(zhì)量通病防治措施100條(2022版本)
- 蘇教版(SJ)《四年級(jí)下冊(cè)數(shù)學(xué)》補(bǔ)充習(xí)題
- 體育足球籃球排球體操教案
- 統(tǒng)編版高中政治必修3必背主觀題
- 保管錢(qián)財(cái)協(xié)議書(shū)的范本
- 探索2-個(gè)人信息資源的防護(hù)措施-課件-蘇科版(2023)初中信息技術(shù)七年級(jí)下冊(cè)
- 供電所安全第一課培訓(xùn)
- 湖北省武漢市二月調(diào)考讀后續(xù)寫(xiě)解析+課件
- 鄭州鐵路職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試參考試題庫(kù)(含答案)
評(píng)論
0/150
提交評(píng)論