计算机图形学四连通区域种子填充算法实验上课讲义.docx

计算机图形学四连通区域种子填充算法实验上课讲义.docx

ID:57168112

大小:229.65 KB

页数:10页

时间:2020-08-05

计算机图形学四连通区域种子填充算法实验上课讲义.docx_第1页
计算机图形学四连通区域种子填充算法实验上课讲义.docx_第2页
计算机图形学四连通区域种子填充算法实验上课讲义.docx_第3页
计算机图形学四连通区域种子填充算法实验上课讲义.docx_第4页
计算机图形学四连通区域种子填充算法实验上课讲义.docx_第5页
资源描述:

《计算机图形学四连通区域种子填充算法实验上课讲义.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、计算机图形学四连通区域种子填充算法实验精品文档《计算机图形学实验》报告任课教师:钱文华2016年春季学期实验:四连通区域种子填充算法实验时间:2016年12月8日实验地点:信息学院2204收集于网络,如有侵权请联系管理员删除精品文档实验目的:掌握种子填充算法的原理,并会用种子填充算法和opengl并结合使用c++语言编写程序绘制多边形。实验原理:种子填充算法又称为边界填充算法。其基本思想是:从多边形区域的一个内点开始,由内向外用给定的颜色画点直到边界为止。如果边界是以一种颜色指定的,则种子填充算法可逐个像素地处理直到遇到边界颜色为止。

2、内点的检测条件:if(interiorColor!=borderColor&&interiorColor!=fillColor)。种子填充算法常用四连通域和八连通域技术进行填充操作。从区域内任意一点出发,通过上、下、左、右四个方向到达区域内的任意像素。用这种方法填充的区域就称为四连通域;这种填充方法称为四向连通算法。从区域内任意一点出发,通过上、下、左、右、左上、左下、右上和右下八个方向到达区域内的任意像素。用这种方法填充的区域就称为八连通域;这种填充方法称为八向连通算法。一般来说,八向连通算法可以填充四向连通区域,而四向连通算法有时

3、不能填充八向连通区域。四向连通填充算法:a)种子像素压入栈中;b)如果栈为空,则转e);否则转c);c)弹出一个像素,并将该像素置成填充色;并判断该像素相邻的四连通像素是否为边界色或已经置成多边形的填充色,若不是,则将该像素压入栈;收集于网络,如有侵权请联系管理员删除精品文档d)转b);e)结束。四连通填充算法利用到了递归的思想。本实验只包括四连通填充算法程序代码:#include#include#include#includevoidinit(void){gl

4、ClearColor(1.0,1.0,1.0,0.0);glMatrixMode(GL_PROJECTION);gluOrtho2D(0.0,300.0,0.0,300.0);}voidsetPixel(intx,inty,longfillColor){glColor3f(fillColor<<16,fillColor<<8,fillColor);glBegin(GL_POINTS);glVertex2i(x,y);glEnd();}voidboundaryFill4(intx,inty,longfillColor,longborde

5、rColor){unsignedcharparams[3];longinteriorColor;glReadPixels(x,y,1,1,GL_RGB,GL_UNSIGNED_BYTE,params);收集于网络,如有侵权请联系管理员删除精品文档interiorColor=RGB(params[0],params[1],params[2]);if(interiorColor!=borderColor&&interiorColor!=fillColor){setPixel(x,y,fillColor);boundaryFill4(x+1

6、,y,fillColor,borderColor);boundaryFill4(x-1,y,fillColor,borderColor);boundaryFill4(x,y+1,fillColor,borderColor);boundaryFill4(x,y-1,fillColor,borderColor);}}voidlineSegment(void){longborderColor=RGB(255,0,0);longfillColor=RGB(0,0,255);glClear(GL_COLOR_BUFFER_BIT);glColo

7、r3f(255,0,0);glBegin(GL_LINE_LOOP);glVertex2i(0,40);glVertex2i(20,0);glVertex2i(60,0);glVertex2i(80,40);glVertex2i(60,80);glVertex2i(20,80);glEnd();boundaryFill4(60,60,fillColor,borderColor);glFlush();}voidmain(intargc,char**argv){glutInit(&argc,argv);收集于网络,如有侵权请联系管理员删除

8、精品文档glutInitDisplayMode(GLUT_SINGLE

9、GLUT_RGB);glutInitWindowPosition(150,100);glutInitWindowSize(300,300);glut

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。