ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:234.22KB ,
资源ID:4128325      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-4128325.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计算机图形学四连通区域种子填充算法实验.docx)为本站会员(weiwoduzun)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

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

1、计算机图形学实验报告任课教师:钱文华2016 年春季学期实验: 四连通区域种子填充算法实验时间:2016 年 12 月 8 日实验地点:信息学院 2204实验目的:掌握种子填充算法的原理,并会用种子填充算法和opengl 并结合使用 c+语言编写程序绘制多边形。实验原理:种子填充算法又称为边界填充算法。其基本思想是:从多边形区域的一个内点开始,由内向外用给定的颜色画点直到边界为止。如果边界是以一种颜色指定的,则种子填充算法可逐个像素地处理直到遇到边界颜色为止。内点的检测条件:if(interiorColor!=borderColor glMatrixMode(GL_PROJECTION); g

2、luOrtho2D(0.0,300.0,0.0,300.0); void setPixel(int x,int y,long fillColor) glColor3f(fillColor16,fillColor8,fillColor); glBegin(GL_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,G

3、L_UNSIGNED_BYTE,params); interiorColor=RGB(params0,params1,params2); if(interiorColor!=borderColor 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) lo

4、ng borderColor=RGB(255,0,0);long fillColor=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(

5、); void main(int argc,char* argv) glutInit( glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); glutInitWindowPosition(150,100); glutInitWindowSize(300,300); glutCreateWindow(“种子填充“); init(); glutDisplayFunc(lineSegment); glutMainLoop(); 上实验课时机房的实验结果:后来的实验结果:glVertex2i(0,40); glVertex2i(20,0); glVertex2i(60,

6、0);glVertex2i(80,40); glVertex2i(60,80); glVertex2i(20,80); glEnd(); 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

7、);glVertex2i(120, 100);glVertex2i(90, 160);glVertex2i(60, 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);后的结果如下图:实验总结:通过多组数据的测试,知道了上面算法的正确,普适性。种子填充的递归算法的优点是原理非常简单,容易理解,缺点是由于多次递归,费时,费内存,效率不高,需要大量栈空间来存储相邻的点,太大的区域会由于递归太深而无法运行。为了减少递归次数,可采用扫描线种子算法。扫描线填充算法就是它的改进的方法。它是通过沿扫描线填充水平像素段,来处理四连通或八连通相邻点,这样就仅仅只需要将每个水平像素段的起始位置压入栈,而不需要将当前位置周围尚未处理的相邻像素都压入栈,从而可以节省大量的栈空间。

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报