版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
計算機圖形學實驗報告(同名22852)《計算機圖形學》實驗報告《計算機圖形學》實驗報告姓名:郭子玉學號:2012211632班級:計算機12-2班實驗地點:逸夫樓507實驗時間:15.04.1015.04.17 intx; floaty; x=(int)X0; y=(float)Y0; while(x<=X1) { DrawPixel(x,round(y)); x++; y=y+k; } } else { if(Y0>Y1) { inttemp=Y0; Y0=Y1; Y1=temp; } floatx; inty; x=(float)X0; y=(int)Y0; while(y<=Y1) { DrawPixel(round(x),y); y++; x=x+1/k; } } return;}Mid_Bresenham算法voidCExperiment_Frame_OneView::Mid_Bresenham(intX0,intY0,intX1,intY1){ //-------請實現(xiàn)Mid_Bresenham算法-------// intD; intdx,dy; intx,y; dx=X1-X0; dy=Y1-Y0; x=X0; y=Y0; if(dx>dy) { D=dx-2*dy; while(x<=X1) { DrawPixel(x,y); if(D<0) { y=y+1; D=D+2*dx-2*dy; } else { D=D-2*dy; } x++; } } else { D=dy-2*dx; while(y<=Y1) { DrawPixel(x,y); if(D<0) { x=x+1; D=D+2*dy-2*dx; } else { D=D-2*dx; } y++; } } return;}運行結果(1)DDA算法(2)Mid_Bresenham算法運行結果分析DDA算法直觀,實現(xiàn)簡單。但是涉及浮點數(shù)運算,不利于硬件實現(xiàn)。Mid_Bresenham算法比DDA算法簡單。兩種算法實現(xiàn)生成的直線也可能會有不同。實驗心得通過實驗,學習掌握了兩種直線的掃描轉換算法。不同方法有不同的優(yōu)點,實現(xiàn)結果也有可能不同。需要通過比較,確定哪種方法更優(yōu),更符合正確結果。實驗二1實驗目的和要求理解多邊形掃描轉換的原理;掌握典型多邊形掃描轉換算法;掌握步處理、分析實驗數(shù)據(jù)的能力;編程實現(xiàn)基本X-掃描線轉換算法(必做);2實驗環(huán)境和工具開發(fā)環(huán)境:VisualC++6.0實驗平臺:Polygon_Conversion(自制平臺)3實驗結果3.1程序流程圖X-掃描線轉換算法開始開始計算xmax,ymax計算xmax,ymax繪點繪點掃描線與各線段是否有交點掃描線與各線段是否有交點xx排序根據(jù)公式求交點,記錄根據(jù)公式求交點,記錄交點是否為線段的第一個頂點是交點是否為線段的第一個頂點判斷不同類型的頂點,記錄交點否判斷不同類型的頂點,記錄交點是3.2程序代碼/*********************************************************************功能:X-掃描線轉換算法參數(shù)說明: vertices[][2]---頂點列表 VertexNum---頂點數(shù)目備注:DrawPixel(intx,inty)--繪制像素點(x,y)**********************************************************************/voidCPolygon_ConversionView::X_Scan_Line_Conersion(intVertices[][2],intVertexNum){ intymax,ymin,count; floatk; ymax=Vertices[0][1]; ymin=Vertices[0][1]; for(intp=0;p<VertexNum;p++){//求y的最高點和最低點 if(Vertices[p][1]>ymax)ymax=Vertices[p][1]; if(Vertices[p][1]<ymin)ymin=Vertices[p][1]; } intXn[100],i,ymax2,ymin2,temp; for(i=ymin;i<=ymax;i++){//求交點 count=0; for(intj=0;j<VertexNum;j++) { if(j==(VertexNum-1)){//最后一個點和第一個點的線段 if(Vertices[j][1]>Vertices[0][1]){//線段的y最大值與最小值 ymax2=Vertices[j][1]; ymin2=Vertices[0][1]; } else{ ymax2=Vertices[0][1]; ymin2=Vertices[j][1]; } if((i<ymax2)&&(i>ymin2)){//判斷交點是否在線段上 k=(float)((float)(Vertices[j][0]-Vertices[0][0])/(float)(Vertices[j][1]-Vertices[0][1])); Xn[count]=(int)((k*(float)i-k*(float)Vertices[0][1]+(float)Vertices[0][0])+0.5); count++; } elseif(i==Vertices[j][1]){//掃描線經(jīng)過線段頂點,只算前一個頂點 if((Vertices[j-1][1]>i)&&(Vertices[0][1]>i)){ Xn[count]=Vertices[j][0]; count++; Xn[count]=Vertices[j][0]; count++; } elseif(((Vertices[j-1][1]<i)&&(Vertices[0][1]>i))||((Vertices[j-1][1]>i)&&(Vertices[0][1]<i))){ Xn[count]=Vertices[j][0]; count++; } } } else{//其他線段交點 if(Vertices[j][1]>Vertices[j+1][1]){ ymax2=Vertices[j][1]; ymin2=Vertices[j+1][1]; } else{ ymax2=Vertices[j+1][1]; ymin2=Vertices[j][1]; } if((i<ymax2)&&(i>ymin2)){ k=(float)((float)(Vertices[j][0]-Vertices[j+1][0])/(float)(Vertices[j][1]-Vertices[j+1][1])); Xn[count]=(int)((k*(float)i-k*(float)Vertices[j+1][1]+Vertices[j+1][0])+0.5); count++; } elseif(i==Vertices[j][1]){//掃描線經(jīng)過線段頂點,只算前一個頂點 if(j!=0){//交點不為第一和最后一點 if((Vertices[j-1][1]>i)&&(Vertices[j+1][1]>i)){ Xn[count]=Vertices[j][0]; count++; Xn[count]=Vertices[j][0]; count++; } elseif(((Vertices[j-1][1]<i)&&(Vertices[j+1][1]>i))||((Vertices[j-1][1]>i)&&(Vertices[j+1][1]<i))){ Xn[count]=Vertices[j][0]; count++; } else{} } else{//交點為第一點 if((Vertices[VertexNum-1][1]>i)&&(Vertices[j+1][1]>i)){ Xn[count]=Vertices[j][0]; count++; Xn[count]=Vertices[j][0]; count++; } elseif(((Vertices[VertexNum-1][1]<i)&&(Vertices[j+1][1]>i))||((Vertices[VertexNum-1][1]>i)&&(Vertices[j+1][1]<i))){ Xn[count]=Vertices[j][0]; count++; } } } } } for(intm=0;m<count-1;m++){//交點x坐標排序 for(intn=m+1;n<count;n++){ if(Xn[m]>Xn[n]){ temp=Xn[m]; Xn[m]=Xn[n]; Xn[n]=temp; } } } for(inta=0;a<count;a+=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 林木育種的抗腳癬適應技術考核試卷
- 智能家居與家庭娛樂的未來發(fā)展趨勢考核試卷
- 《瑤族盤王節(jié)的傳承與保護》
- 《提升碩士畢業(yè)論文質量的路徑研究》
- 《基于語義的SQL注入攻擊智能檢測方法研究》
- 污水處理中的固廢處理與排放技術考核試卷
- 《平臺經(jīng)濟從業(yè)者職業(yè)傷害保障制度研究》
- 《循環(huán)流化床燃煤超低氮排放技術基礎研究》
- 2024至2030年中國精密金屬閥門數(shù)據(jù)監(jiān)測研究報告
- 《風力發(fā)電系統(tǒng)的傳感器故障診斷研究》
- 期中試卷(第1-3單元)(試題)-2024-2025學年三年級上冊數(shù)學滬教版
- 急救小知識科普講座
- 2024年高等教育法學類自考-00262法律文書寫作考試近5年真題附答案
- 北京市人民大學附屬中學2025屆數(shù)學高二上期末統(tǒng)考模擬試題含解析
- 萬達入職在線測評題
- 24年追覓在線測評28題及答案
- 2024統(tǒng)編新版小學五年級語文上冊第六單元:大單元整體教學設計
- 2024年全國職業(yè)院校技能大賽高職組(藥學技能賽項)考試題庫(含答案)
- 2024至2030年中國羽毛球行業(yè)發(fā)展現(xiàn)狀及投資趨勢研究報告
- 2024年公司市場化選聘經(jīng)理層考核管理辦法
- 太陽能光伏電站施工安全標準化建設考核試卷
評論
0/150
提交評論