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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

2、編程環(huán)境:Microsoft Visual C+ 6.0計算機配置:P4 3.0,1G DDR2 160G硬盤 X1300PRO圖形卡實驗主要代碼及運行結果步驟l 圓的生成算法一 Bresenham 算法1. 原理:利用圓的對稱性,只須畫出1/8圓, 就可畫出整個圓。P為當前點亮象素,那么,下一個點亮的象素可能是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.運行時主要代碼:void CTestView:Mbline()/Bresenham函數CClientDC dc(this);COLORREF rgb=RGB(0,0,255);/定義直線顏色為藍色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. 結果: 二中點畫圓算法1.原理:構造函數:F(X,Y)=X2 + Y2 - R2,則 F(

4、X,Y)= 0:(X,Y)在圓周上; F(X,Y) 0:(X,Y)在圓外。 假設P是當前已確定的光柵點。構造判別式:dM= F(M)= F(xp+1,yp-0.5)=(xp+1)2+( yp-05)2-R2(1)如果dM0,表示下一中點M在圓外,選擇B點,且: 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點,且: dM = dM + 2xp-2yp +5 3. 主要代碼:/假設圓的中心在原點 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(中點算法); 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.運行結果: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); 運行結果如下:實驗總結 通過這次實驗,利用vc+6

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論