




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机图形学实验报告任课教师:钱文华2016年春季学期实验:四连通区域种子填充算法实验时间:2016年12月8日实验地点:信息学院2204实验目的:掌握种子填充算法的原理,并会用种子填充算法和opengl并结合使用c+语言编写程序绘制多边形。实验原理:种子填充算法又称为边界填充算法。其基本思想是:从多边形区域的一个内点开始,由内向外用给定的颜色画点直到边界为止。如果边界是以一种颜色指定的,则种子填充算法可逐个像素地处理直到遇到边界颜色为止。内点的检测条件:if(interiorColor!=borderColor&interiorColor!=fillColor)。种子填充算法常用四连通域和八
2、连通域技术进行填充操作。从区域内任意一点出发,通过上、下、左、右四个方向到达区域内的任意像素。用这种方法填充的区域就称为四连通域;这种填充方法称为四向连通算法。从区域内任意一点出发,通过上、下、左、右、左上、左下、右上和右下八个方向到达区域内的任意像素。用这种方法填充的区域就称为八连通域;这种填充方法称为八向连通算法。一般来说,八向连通算法可以填充四向连通区域,而四向连通算法有时不能填充八向连通区域。四向连通填充算法:a) 种子像素压入栈中;b) 如果栈为空,则转e);否则转c);c) 弹出一个像素,并将该像素置成填充色;并判断该像素相邻的四连通像素是否为边界色或已经置成多边形的填充色,若不是
3、,则将该像素压入栈;d) 转b);e) 结束。四连通填充算法利用到了递归的思想。本实验只包括四连通填充算法程序代码:#include #include #include #include void init(void) glClearColor(1.0,1.0,1.0,0.0); glMatrixMode(GL_PROJECTION); gluOrtho2D(0.0,300.0,0.0,300.0); void setPixel(int x,int y,long fillColor) glColor3f(fillColor16,fillColor8,fillColor); glBegin(GL
4、_POINTS); glVertex2i(x,y); glEnd(); void boundaryFill4(int x,int y,long fillColor,long borderColor) unsigned char params3; long interiorColor; glReadPixels(x,y,1,1,GL_RGB,GL_UNSIGNED_BYTE,params); interiorColor=RGB(params0,params1,params2); if(interiorColor!=borderColor&interiorColor!=fillColor) set
5、Pixel(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); void lineSegment(void) long borderColor=RGB(255,0,0); long fillColor=RGB(0,0,255); glClear(GL_COLOR_BU
6、FFER_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(); void main(int argc,char* argv) glutInit(&argc,argv); glutInitDisplayMod
7、e(GLUT_SINGLE|GLUT_RGB); glutInitWindowPosition(150,100); glutInitWindowSize(300,300); glutCreateWindow(种子填充); init(); glutDisplayFunc(lineSegment); glutMainLoop(); 上实验课时机房的实验结果:后来的实验结果:glVertex2i(0,40); glVertex2i(20,0); glVertex2i(60,0); glVertex2i(80,40); glVertex2i(60,80); glVertex2i(20,80); glE
8、nd(); boundaryFill4(60,60,fillColor,borderColor);以上这段程序改成如下glVertex2i(90, 40); glVertex2i(120, 100); glVertex2i(90, 160); glVertex2i(60, 160); glVertex2i(60, 40); glEnd(); boundaryFill4(70,60,fillColor,borderColor);改变参数后:再把glVertex2i(90, 40); glVertex2i(120, 100); glVertex2i(90, 160); glVertex2i(60,
9、 160); glVertex2i(60, 40); glEnd(); boundaryFill4(70,60,fillColor,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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023二年级语文上册 第七单元 19 古诗二首教学设计 新人教版
- 12 低碳生活每一天 减少我们的碳排放 教学设计-2024-2025学年道德与法治四年级上册统编版
- 2024-2025学年七年级道德与法治上册 第一单元 成长的节拍 第三课 发现自己 3.1 认识自己教学设计 新人教版
- 2023-2024学年高中英语 Unit 4 History and Traditions Reading for Writing 写作教学设计 新人教版必修第二册
- Module 5单元备课(教学设计)-2024-2025学年外研版(一起)英语六年级上册
- 2018年设计部工作总结及年度工作计划汇报
- Unit 1 Hello!Period 4(教学设计)-2024-2025学年Join in 外研剑桥英语三年级上册
- 9古诗三首暮江吟(教学设计)-2024-2025学年统编版语文四年级上册
- Unit 4 My Favourite Subject教学设计 2024-2025学年人教版(2024)七年级英语上册
- Starter Unit 3 Section B What is fun on a farm?教学设计 2024-2025学年人教版七年级英语上册
- AAO工艺处理图纸
- 第十二讲 建设社会主义生态文明PPT习概论2023优化版教学课件
- 2023年水文化知识竞赛参考题库(含答案)
- 广东省建筑施工安全管理资料统一用表2021年版(原文格式版)
- 平面向量与三角形的四心问题-高三理科数学复习讲义与跟踪训练含解析
- 收获机械-往复式切割器的工作原理
- 河北省唐山市迁安市2021-2022年三年中考二模英语试题分类汇编:语法填空
- 【企业招聘管理研究国内外文献综述】
- 蓄电池单轨吊设计选型方案及技术规格书
- 人文地理学(王恩涌)
- 五年级道德与法治下册作业设计优秀案例
评论
0/150
提交评论