版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、?计算机图形学实验?报告任课教师:钱文华2021年春季学期实验:四连通区域种子填充算法实验时间:2021年12月8日实验地点:信息学院2204实验目的:掌握种子填充算法的原理,并会用种子填充算法和opengl并结合使用C+语言编写程序绘制多边形实验原理:种子填充算法又称为边界填充算法.其根本思想是:从多边形区域的一个内点开始,由内向外用给定的颜色画点直到边界为止.如果边界是以一种颜色指定的,那么种子填充算法可逐个像素地处理直到遇到边界颜色为止.内点的检测条件:if(interiorColor!=borderColor&&interiorColor!=fillColor).种子填
2、充算法常用四连通域和八连通域技术进行填充操作.从区域内任意一点出发,通过上、下、左、右四个方向到达区域内的任意像素.用这种方法填充的区域就称为四连通域;这种填充方法称为四向连通算法.从区域内任意一点出发,通过上、下、左、右、左上、左下、右上和右下八个方向到达区域内的任意像素.用这种方法填充的区域就称为八连通域;这种填充方法称为八向连通算法.一般来说,八向连通算法可以填充四向连通区域,而四向连通算法有时不能填充八向连通区域.四向连通填充算法:a)种子像素压入栈中;b)如果栈为空,那么转e);否那么转c);c)弹出一个像素,并将该像素置成填充色;并判断该像素相邻的四连通像素是否为边界色或已经置成多
3、边形的填充色,假设不是,那么将该像素压入栈;d)转b);e)结束.四连通填充算法利用到了递归的思想.本实验只包括四连通填充算法程序代码:#include<glut.h>#include<stdlib.h>#include<math.h>#include<windows.h>voidinit(void)glClearC010r(1.0,1.0,1.0,0.0);glMatrixMode(GL_PROJECTION);gluOrtho2D(0.0,300.0,0.0,300.0);y,longvoidsetPixel(intx,intfillColo
4、r)glColor3f(fillC010r<<16,fillC010r<<8,fillColor);glBegin(GL_POINTS);glVertex2i(x,y);glEnd();voidboundaryFill4(intx,inty,longfillColor,longborderColor)unsignedcharparams3;longinteriorColor;glReadPixels(x,y,1,1,GL_RGB,GL_UNSIGNED_BYTE,params);interiorColor=RGB(params0,params1,params2);if(
5、interiorColor!=borderColor&&interiorColor!=fillColor)setPixel(x,y,fillColor);boundaryFill4(x+1,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(25
6、5,0,0);longfillColor=RGB(0,0,255);glClear(GL_COLOR_BUFFER_BIT);glColor3f(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)glu
7、tInit(&argc,argv);glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);glutInitWindowPosition(150,100);glutInitWindowSize(300,300);glutCreateWindow("种子填充");init();glutDisplayFunc(lineSegment);glutMainLoop();上实验课时机房的实验结果他疆克M刊j中咽亡恬,/司发|Fh:、此E2密曜*左±31nJoKnii<£twaMnpli腌国外箝乘;弭TWd:i,U卓尔如1a
8、卢rtrS?招后来的实验结果:glVertex2i(0,40);glVertex2i(20,0);glVertex2i(60,0);glVertex2i(80,40);glVertex2i(60,80);glVertex2i(20,80);glEnd();boundaryFill4(60,60,f川Color,borderColor);以上这段程序改成如下glVertex2i(90,40);glVertex2i(120,100);glVertex2i(90,160);glVertex2i(60,160);glVertex2i(60,40);glEnd();boundaryFill4(70,60
9、,f川Color,borderColor);改变参数后:再把glVertex2i(90,40);glVertex2i(120,100);glVertex2i(90,160);glVertex2i(60,160);glVertex2i(60,40);glEnd();boundaryFill4(70,60,f川Color,borderColor);改成glVertex2i(100,100);glVertex2i(200,100);glVertex2i(150,150);/glVertex2i(60,160);/glVertex2i(60,40);glEnd();boundaryFill4(150,120,fillColor,borderColor);后的结果如下列图:实验总结:通过多组数据的测试,知道了上面算法的正确,普适性.种子填充的递归算法的优点是原理非常简单,容易理解,缺点是由于屡次递归,费时,费内存,效率不高,需要大量栈空间来存储相邻的点,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 合肥发电风机吊装施工方案
- 《无功调压》课件
- 城区管理五月份个人工作计划
- 学生会文艺部招新计划书
- 交通局农村公路建设计划
- 2021学校教学德育工作计划例文
- 2024年城南村团支部工作计划行政工作计划
- 《永拓资产管理系统》课件
- 工厂计划年终总结
- 《谁要在黑暗中哭泣》课件
- 上海交响乐团招考聘用工作人员笔试历年高频考点-难、易错点荟萃-附带答案详解
- 消防专业职业生涯规划书
- 《系统解剖学》课程考试复习题库大全-4感受器部分
- 福建省宁德市普通高中2023-2024学年高三上数学期末联考试题含解析
- 律师为什么替“坏人”辩护
- 7-中文标点输入妙公开课
- 肾内科利用品管圈PDCA循环降低血液透析患者体外循环凝血发生率
- 提升内驱力-高中主题班会优质课件
- 重庆市部分学校(九校联盟)2023-2024学年高二上学期12月月考语文试题
- 老舍读书分享名著导读《龙须沟》
- 高教社新国规中职教材《英语1基础模块》英语1-U8
评论
0/150
提交评论