已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机图形学实验报告2016年春季学期实验四:种子点填充算法 Seed Filling实验时间:2016年9月底实验地点:实验目的:掌握使用opengl 的种子点填充算法,观察改变参数对生成图形的改变(改变点的位置、颜色等)如果要填充的区域是以图像元数据方式给出的,通常使用种子填充算法进行区域填充。种子填充算法的核心是一个递归算法,都是从指定的种子点开始,向各个方向上搜索,逐个像素进行处理,直到遇到边界。种子填充算法常用四连通域和八连通域技术进行填充操作。从区域内任意一点出发,通过上、下、左、右四个方向到达区域内的任意像素。用这种方法填充的区域就称为四连通域;这种填充方法称为四向连通算法。从区域内任意一点出发,通过上、下、左、右、左上、左下、右上和右下八个方向到达区域内的任意像素。用这种方法填充的区域就称为八连通域;这种填充方法称为八向连通算法。算法的优点是非常简单,缺点是需要大量栈空间来存储相邻的点。程序代码:使用的运行环境是vc+6.0#include #include typedef float Color3;/获取像素点的颜色void getpixel(GLint x, GLint y, Color color) glReadPixels(x, y, 1, 1, GL_RGB, GL_FLOAT, color); /OPENGL自带/画点函数void setpixel(GLint x, GLint y) glBegin(GL_POINTS); glVertex2f(x, y); glEnd();/比较颜色是否相等int compareColor(Color color1, Color color2) if (color10 != color20 | color11 != color21 | color12 != color22) return 0; else return 1; void boundaryFill4(int x, int y, Color fillColor, Color boarderColor) Color interiorColor; getpixel(x, y, interiorColor); if (compareColor(interiorColor, fillColor) = 0 & compareColor(interiorColor, boarderColor) = 0) setpixel(x, y); boundaryFill4(x + 1, y, fillColor, boarderColor); boundaryFill4(x - 1, y, fillColor, boarderColor); boundaryFill4(x, y + 1, fillColor, boarderColor); boundaryFill4(x, y - 1, fillColor, boarderColor); void boundaryFill8(int x, int y, Color fillColor, Color boarderColor) Color interiorColor, a, b, c, d; getpixel(x, y, interiorColor); getpixel(x + 1, y, a); getpixel(x, y - 1, b); getpixel(x, y + 1, c); getpixel(x - 1, y, d); int i = 0; if (compareColor(a, boarderColor) = 1) i+; if (compareColor(b, boarderColor) = 1) i+; if (compareColor(c, boarderColor) = 1) i+; if (compareColor(d, boarderColor) = 1) i+; if (i = 1) if (compareColor(interiorColor, fillColor) = 0 & compareColor(interiorColor, boarderColor) = 0) setpixel(x, y);boundaryFill8(x+1,y,fillColor,boarderColor);boundaryFill8(x-1,y,fillColor,boarderColor);boundaryFill8(x,y+1,fillColor,boarderColor);boundaryFill8(x,y-1,fillColor,boarderColor);boundaryFill8(x-1,y+1,fillColor,boarderColor);boundaryFill8(x-1,y-1,fillColor,boarderColor);boundaryFill8(x+1,y+1,fillColor,boarderColor);boundaryFill8(x+1,y-1,fillColor,boarderColor); void polygon() glBegin(GL_LINE_LOOP); glLineWidth(5); /此处修改坐标,绘制多边形 glVertex2f(100, 150); glVertex2f(150, 200); glVertex2f(200, 200); glVertex2f(200, 160); glEnd();void display(void) Color fillColor = 0.0, 1.0, 1.0;/填充颜色 Color boarderColor = 0.0, 1.0, 0.0;/边界颜色 glClear(GL_COLOR_BUFFER_BIT); glViewport(0, 0, 500, 500); glColor3fv(boarderColor); polygon(); glColor3fv(fillColor); /boundaryFill4(150, 150, fillColor, boarderColor);/设置起点坐标及颜色 boundaryFill8(120, 160, fillColor, boarderColor); glFlush();int main(int argc, char *argv) glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RED); glutInitWindowSize(500, 500); glutInitWindowPosition(100, 100); glutCreateWindow(BoundaryFill1); glClearColor(1, 1, 1,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年事业单位工勤技能考试题库及答案
- 企业安全员年终总结范文四篇
- 2025年新《安全生产法》考试题库含答案
- 2025年园林局考试试题及答案
- 2015、2016年四川公务员考试《申论》真题及答案
- 2025年下半年下半年上海市市属部分事业单位招考工作人员易考易错模拟试题(共500题)试卷后附参考答案
- 2025山西太原尖草坪区城建城管应急大队招聘100人易考易错模拟试题(共500题)试卷后附参考答案
- 2025安徽望江宁能热电限公司招聘19人易考易错模拟试题(共500题)试卷后附参考答案
- 2025安徽安庆依江产业限公司招聘10人易考易错模拟试题(共500题)试卷后附参考答案
- 2025国网安徽省电力公司高校毕业生招聘170人(第三批)易考易错模拟试题(共500题)试卷后附参考答案
- 【MOOC】《创业团队建设与管理》(首都经济贸易大学)章节期末慕课答案
- 2023年南通市公务员考试行测试卷历年真题及一套完整答案详解
- 2025年河北沧州银行招聘笔试考试备考题库及答案解析
- 林业技师考试题库及答案2025
- 部队用电安全教育课件
- 2026届上海市普陀区九上物理期中统考试题含解析
- (2025年)食品安全知识竞赛题库及答案
- 2026年初中历史学业水平考试研讨会发言材料
- 江苏省南通市如皋市2026届高三上学期10月考试 语文试卷
- 2025版痛风性关节炎症状分析及护理方案
- 高压系统应急预案
评论
0/150
提交评论