计算机图形学:VSC++OpenGL四邻接填充实现汉字空心字填充

需积分: 22 8 下载量 156 浏览量 更新于2024-09-11 收藏 91KB DOC 举报
在本次计算机图形学的上机实验中,学生代春宁(专业班级:计算机1502班,学号:150405211)针对多边形填充算法进行了深入实践。实验的主要目的是通过使用OpenGL库,掌握绘制多边形的基本技巧,理解四连通域和八连通域的概念,以及掌握四邻接点区域填充算法。具体任务是设计一个空心汉字并实现填充。 实验内容包括以下几个关键步骤: 1. **实验目的**: - 学习如何使用OpenGL的直线生成函数绘制多边形,如空心汉字。 - 掌握基本的图形绘制原理,例如通过描点连线构建空心汉字。 - 理解并应用四邻接点区域填充算法,确保汉字的内部区域被正确填充。 2. **实验内容与要求**: - 实际操作中,代春宁选择了笔画数不少于5的汉字作为绘制对象,比如选择自己的名字"代春宁"。 - 要求使用指定的算法填充空心汉字,同时允许使用不同的空心字体风格。 - 遇到问题时,例如在初次尝试种子填充算法时遇到栈溢出问题,代春宁通过调整描点范围解决了这一问题。 3. **实验方案**: - 利用OpenGL提供的API绘制空心汉字,首先通过描点连接形成轮廓,然后通过四邻接点遍历判断是否为连通域,进行填充。 - 在填充过程中,使用自定义的`floatColor[3]`类型来存储和传递颜色数据,以便于颜色比较。 4. **问题与解决方法**: - 问题1:遇到栈溢出错误。解决办法是认识到种子填充算法可能导致大量压栈,因此减小描点范围,避免过多的内存占用。 - 问题2:在填充算法中处理颜色参数传递。通过定义`floatColor[3]`结构类型,使颜色数据可以方便地作为形参传递。 5. **程序代码及运行结果**: - 代春宁的实验报告附带了一份包含主要代码的程序,该代码使用了OpenGL库中的`glut.h`和`iostream`,并且定义了一个名为`getpixel`的函数用于读取像素颜色。这部分代码显示了他对OpenGL API的实际运用,以及他在解决问题上的实际操作,如处理颜色和空间效率。 这次实验帮助代春宁巩固了计算机图形学中的基础知识,如OpenGL编程、多边形填充算法以及空间数据结构的管理,同时也锻炼了他的问题解决能力。通过实际操作,他不仅实现了绘制和填充空心汉字,还学习了如何优化代码以提高程序的性能。