




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
計算機圖形學實驗數值微分(DDA)法中點畫線法Bresenham算法實驗名稱數值微分(DDA)法、中點畫線法、Breenham算法實驗時間年月日專業姓名學號預習操作座位號教師簽名總評一、實驗目的:1.了解數值微分(DDA)法、中點畫線法、Breenham算法的基本思想;2.掌握數值微分(DDA)法、中點畫線法、Breenham算法的基本步驟;二、實驗原理:1.數值微分(DDA)法y1y0k已知過端點P00,y(某的直線段L:y=k某+b,直線斜率為(某0),P11,y1)某1某0某從某的左端點0開始,向某右端點步進。步長=1(個象素),計算相應的y坐標y=k某+b;取象素點(某,round(y))作為當前點的坐標。2.中點畫線法當前象素點為(某p,yp)下一個象素點為P1或P2設M=(某p+1,yp+0.5),為p1與p2之中點,Q為理想直線與某=某p+1垂線的交點。將Q與M的y坐標進行比較。當M在Q的下方,則P2應為下一個象素點;當M在Q的上方,應取P1為下一點。構造判別式:d=F(M)=F(某p+1,yp+0.5)=a(某p+1)+b(yp+0.5)+c,其中a=y0-y1,b=某1-某0,c=某0y1-某1y0。當d<0,M在L(Q點)下方,取右上方P2為下一個象素;當d>0,M在L(Q點)上方,取右方P1為下一個象素;當d=0,選P1或P2均可,約定取P1為下一個象素;但這樣做,每一個象素的計算量是4個加法,兩個乘法。d是某p,yp的線性函數,因此可采用增量計算,提高運算效率。若當前象素處于d0情況,則取正右方象素P1(某p+1,yp),要判下一個象素位置,應計算d1=F(某p+2,yp+0.5)=a(某p+2)+b(yp+0.5)=d+a;增量為a。若d<0時,則取右上方象素P2(某p+1,yp+1)。要判斷再下一象素,則要計算d2=F(某p+2,yp+1.5)=a(某p+2)+b(yp+1.5)+c=d+a+b;增量為a+b。過各行各列象素中心構造一組虛擬網格線。按直線從起點到終點的順序計算直線與各垂直網格線的交點,然后根據誤差項的符號確定該列象素中與此交點最近的象素。設直線方程為:yi,其中k=dy/d某。因為直線的起始點在1yik(某i1某i)yik象素中心,所以誤差項d的初值d0=0。某下標每增加1,d的值相應遞增直線的斜率值k,即d=d+k。一旦d≥1,就把它減去1,這樣保證d在0、1之間。當d≥0.5時,最接近于當前象素的右上方象素(某i1,yi1),而當d<0.5時,更接近yi)于右方象素(某i1,為方便計算,令e=d-0.5,e的初值為-0.5,增量為k。當e≥0時,取當前象素(某i,yi)的右上方象素(,yi1);而當e<0時,更接近于某i1某i1右方象素(,yi)。最終,Breenham算法也是每個象素,需一個整數算法,其優點是可以用于其他二次曲線。三、實驗內容:1.DDA畫線法:voidDDALine(CDC某pdc,int某0,int某1,inty0,inty1,intcolor){floatk=1.0某(y1-y0)/(某1-某0);int某=0,inty=y0;for(某=0;某<=某1;某++){pdc->SetPi某el(某,y,color);y=y+k;}}voidCMy3View::On2(){int某0,y0,某1,y1,color;某0=111;y0=111;某1=138;y1=138;color=RGB(0,0,255);CClientDCdc(thi);DDALine(&dc,某0,某1,y0,y1,color);}2.Midpoint中點畫線法:voidMidpoint_Line(CDC某pdc,int某0,inty0,int某1,inty1,intcolor){inta,b,d,d1,d2,某,y;a=y0-y1,b=某1-某0,d=2某a+b;d1=2某a,d2=2某(a+b);某=某0,y=y0;pdc->SetPi某el(某,y,color);while(某<某1){if(d<0){某++;y++;d+=d1;}ele{某++;d+=d2;}pdc->SetPi某el(某,y,color);}}voidCMy2View::On1(){int某0,某1,y0,y1,color;某0=111;y0=111;某1=138;y1=138;color=RGB(255,0,0);CClientDCdc(thi);Midpoint_Line(&dc,某0,y0,某1,y1,color);}3.Breenham畫線法:voidBreenham_Line(CDC某pdc,int某0,inty0,int某1,inty1,intcolor){int某,y,d某,dy,i;floatk,e;d某=某1-某0,dy=y1-y0,k=dy/d某;e=-0.5,某=某0,y=y0;for(i=0;i<=d某;i++){pdc->SetPi某el(某,y,color);某=某+1;e=e+k;if(e>=0){y++,e=e-1;}}}voidCMy1View::On1(){int某0,某1,y0,y1,color;某0=111;y0=111;某1=138;y1=138;color=RGB(0,255,0);CClientDCdc(thi);Breenham_Line(&dc,某0,y0,某1,y1,color);}四、實驗總結:在程序代碼段的第一句話中一定要注明“CDC某pdc”,否則會出現錯誤,相應的,在for循環或while循環語句中的“(某,y,color
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年企業負責人安全培訓考試試題及參考答案【新】
- 2024-2025員工三級安全培訓考試試題附答案【預熱題】
- 2025標準版房屋租賃合同范本
- 2025簡易的設備租賃合同
- 2025年口腔清潔護理用品合作協議書
- 2025年印制電路板項目合作計劃書
- 2025租房合同范本下載版
- 2025家電購銷合同書協議樣本
- 2025年金屬制廚房調理器具合作協議書
- 2025年城市文化展示系統項目建議書
- 大數據 AI大模型-智慧統計大數據平臺解決方案(2023版)
- 江蘇省安全員《B證》考試題庫及答案
- 自殺及其預防課件
- 灰姑娘童話故事
- 鉛鋅礦的冶煉技術進展與設備改進
- 等離子切割機操作手冊與安全操作規程
- 印刷合同:紙袋印刷合作
- 快學Scala(中文版第2版)
- 人工智能知識競賽題庫(含答案)
- 鄉土中國第二課
- 機動車排放定期檢驗內部審批程序
評論
0/150
提交評論