計算機(jī)圖形學(xué)實驗報告實驗2_第1頁
計算機(jī)圖形學(xué)實驗報告實驗2_第2頁
計算機(jī)圖形學(xué)實驗報告實驗2_第3頁
計算機(jī)圖形學(xué)實驗報告實驗2_第4頁
計算機(jī)圖形學(xué)實驗報告實驗2_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、貴州大學(xué)實驗報告學(xué)院:計算機(jī)科學(xué)與信息 專業(yè):計科 班級:101姓名呂楊學(xué)號1008060040同組成員實驗時間2013-4-7指導(dǎo)教師吳云成績實驗項目名稱圓的生成算法實驗?zāi)康?、通過實驗,進(jìn)一步理解和掌握中點(diǎn)算法、Bresenham算法和二階差分算法;2、掌握以上算法生成圓的基本過程;3、通過編程,學(xué)習(xí) VC及Matlab環(huán)境下完成用中點(diǎn)算法、Bresenham算法和二階差分算法實現(xiàn)圓的繪制。實驗內(nèi)容1、用中點(diǎn)算法、Bresenham算法和二階差分算法實現(xiàn)圓的繪制。2、寫出實驗報告實驗環(huán)境WIN XP、VC+ 6.0及Matlab語言程序設(shè)計環(huán)境實驗環(huán)境操作系統(tǒng):Windows XP SP3

2、編程環(huán)境:Microsoft Visual C+ 6.0計算機(jī)配置:P4 3.0,1G DDR2 160G硬盤 X1300PRO圖形卡實驗主要代碼及運(yùn)行結(jié)果步驟l 圓的生成算法一 Bresenham 算法1. 原理:利用圓的對稱性,只須畫出1/8圓, 就可畫出整個圓。P為當(dāng)前點(diǎn)亮象素,那么,下一個點(diǎn)亮的象素可能是P1(Xp+1,Yp)或P2(Xp +1,Yp +1)。d的初值:d0= F(1, R-0.5)=1.25 R。若d=0, 則P2 為下一個象素,那么再下一個象素的判別式為:d1 = F(xp + 2, yp - 1.5)= d + (2xp + 3)+(-2 yp + 2)即d 的增

3、量為 2 (xp - yp) +5.2.運(yùn)行時主要代碼:void CTestView:Mbline()/Bresenham函數(shù)CClientDC dc(this);COLORREF rgb=RGB(0,0,255);/定義直線顏色為藍(lán)色double x,y,d,k;x=x0;y=y0;k=(y1-y0)/(x1-x0);d=0.5-k; for(x=x0;x=x1;x+) dc.SetPixel(ROUND(x),ROUND(y),rgb); if(d0)y+; d+=1-k;else d-=k; 2. 結(jié)果: 二中點(diǎn)畫圓算法1.原理:構(gòu)造函數(shù):F(X,Y)=X2 + Y2 - R2,則 F(

4、X,Y)= 0:(X,Y)在圓周上; F(X,Y) 0:(X,Y)在圓外。 假設(shè)P是當(dāng)前已確定的光柵點(diǎn)。構(gòu)造判別式:dM= F(M)= F(xp+1,yp-0.5)=(xp+1)2+( yp-05)2-R2(1)如果dM0,表示下一中點(diǎn)M在圓外,選擇B點(diǎn),且: dMB= F(xMB,yMB)= F(xp+2,yp-1.5)=(xp+2)2+( yp-1.5)2-R2 dMB= dMB - dM=2xp-2yp +5 (3)dM0=1.25-R ; 如果dM0,選擇B點(diǎn),且: dM = dM + 2xp-2yp +5 3. 主要代碼:/假設(shè)圓的中心在原點(diǎn) void MidPointCircle

5、(int radius,int value)int x=0; int y= radius; int d=1 - radius;CirclePoints(x, y, value); While (yx) if (dx) if (dSetWindowText(Bressenham算法); RedrawWindow();GetMaxX();GetMaxY();Mbcircle();void CCircleView:OnMENUMid() / TODO: Add your command handler code hereCircleDlg dlg;if(dlg.DoModal()=IDOK) R=d

6、lg.m_R; AfxGetMainWnd()-SetWindowText(中點(diǎn)算法); RedrawWindow();GetMaxX();GetMaxY();MidPoint();void CCircleView:OnMENUEr() / TODO: Add your command handler code here CircleDlg dlg;if(dlg.DoModal()=IDOK) R=dlg.m_R; AfxGetMainWnd()-SetWindowText(二階差分算法); RedrawWindow();GetMaxX();GetMaxY();Erjie();3.運(yùn)行結(jié)果:l

7、 橢圓的生成算法void CMyView:Mbellipse()/橢圓的Bresenham算法double x,y,d1,d2;x=0;y=b;d1=b*b+a*a*(-b+0.25);EllipsePoint(x,y);while(b*b*(x+1)a*a*(y-0.5)/橢圓AC弧段if (d10)if (d20)d2+=b*b*(2*x+2)+a*a*(-2*y+3);x+;elsed2+=a*a*(-2*y+3);y-;EllipsePoint(x,y);void CMyView:EllipsePoint(double x, double y)/四分法畫橢圓 CClientDC dc(this);COLORREF rgb=RGB(0,0,255);/定義橢圓的顏色dc.SetPixel(ROUND(x)+MaxX/2,ROUND(y)+MaxY/2,rgb);dc.SetPixel(ROUND(-x)+MaxX/2,ROUND(y)+MaxY/2,rgb);dc.SetPixel(ROUND(x)+MaxX/2,ROUND(-y)+MaxY/2,rgb);dc.SetPixel(ROUND(-x)+MaxX/2,ROUND(-y)+MaxY/2,rgb); 運(yùn)行結(jié)果如下:實驗總結(jié) 通過這次實驗,利用vc+6

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論