资源描述:
《实验二:图形填充算法实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、《计算机图形学》实验报告(实验二:图形填充算法)一、实验目的及要求用两种方法做图形的填充算法!二、理论基础1.边填充算法对于每一条扫描线和每条多边形的交点(x1,y1),将该扫描线上的交点右方的所有像素取补。2.种子填充算法利用栈来实现种子填充算法。种子像素入栈,当栈非空时重复执行如下步骤:将栈顶像素出栈,将出栈像素置成多边形色,按左,上,右,下顺序检查与出栈像素相邻的四个像素,若其中某个像素不再边界且未置成多边形,则把该像素入栈!三、算法设计与分析1、边填充算法voidCEdge_mark_fillView::OnDraw(CDC*
2、pDC){CEdge_mark_fillDoc*pDoc=GetDocument();ASSERT_VALID(pDoc);intd[500][500]={0};intinside;intx,y;Bresenham(80,101,100,400,d);Bresenham(100,300,290,400,d);Bresenham(292,400,382,50,d);Bresenham(380,50,202,150,d);Bresenham(200,150,82,101,d);for(y=0;y<500;y++){inside=0;for
3、(x=0;x<500;x++){if(d[x][y]==1)if(d[x+1][y]!=1){inside=!(inside);}if(inside!=0)pDC->SetPixel(x,y,12);}}}2、种子填充intx=299,y=51;COLORREFoldcolor;COLORREFnewcolor;oldcolor=RGB(256,256,256);newcolor=RGB(123,123,123);pDC->MoveTo(40,40);pDC->LineTo(80,40);pDC->LineTo(70,80);pDC-
4、>LineTo(40,40);FloodFill(51,51,RGB(255,255,255),RGB(0,0,255));pDC->LineTo(40,40);voidCMyView::FloodFill(intx,inty,COLORREFoldcolor,COLORREFnewcolor){CDC*pDC;pDC=GetDC();if(pDC->GetPixel(x,y)==oldcolor){pDC->SetPixel(x,y,newcolor);FloodFill(x,y-1,oldcolor,newcolor);Flood
5、Fill(x,y+1,oldcolor,newcolor);FloodFill(x-1,y,oldcolor,newcolor);FloodFill(x+1,y,oldcolor,newcolor);}四、程序调试及结果的分析1、2、一、实验心得及建议由于很多不会,所以这次没能按时当堂完成,下来花了不少时间才弄出来,第二种尤其比较麻烦,在同学的帮助下才做出来了。种子填充算法适用性大,但是运行较慢。没有边填充算法简便!姓名班级学号实验日期指导教师实验成绩评语: