您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 计算机图形学--区域填充算法的实现
1实验四区域填充算法的实现班级08信计2班学号20080502053姓名杨少卿分数一、实验目的和要求:1、通过构造各种几何图形并填充,掌握图形填充的基本技能,熟悉常用的区域填充类型与表示。2、了解区域填充算法,加深对算法填充的理解。3、掌握二维图形区域填充的原理及生成过程。4、加深对填充算法的理解,分析对比图案区域填充和单色扫描填充的差别。二、实验内容:1、编程实现五角星图案填充。2、实现多边形扫描单色填充的算法,利用填充算法对构造的多边形进行填充。3、通过编程算法实现填充的动态过程。三、实验步骤1、编程实现五角星图案填充。程序代码#includegraphics.h#includeconio.h#includetime.hvoids_f_4(intx,inty,intb_color,intnew_color){if(b_color!=getpixel(x,y)&&new_color!=getpixel(x,y)){putpixel(x,y,new_color);s_f_4(x+1,y,b_color,new_color);s_f_4(x-1,y,b_color,new_color);s_f_4(x,y+1,b_color,new_color);s_f_4(x,y-1,b_color,new_color);}}main(){intgdriver=DETECT,gmode=0;floati,x,y;intxseed=120,yseed=120;initgraph(&gdriver,&gmode,);cleardevice();srand((unsigned)time(NULL));setcolor(RGB(0,255,0));for(i=0;i500;i=i+100){x=xseed+i;y=yseed+i/2;2line(x+0,y-50,x+15,y-20);line(x+15,y-20,x+48,y-15);line(x+48,y-15,x+24,y+8);line(x+24,y+8,x+29,y+40);line(x+29,y+40,x,y+25);line(x,y+25,x-29,y+40);line(x-29,y+40,x-24,y+8);line(x-24,y+8,x-48,y-15);line(x-48,y-15,x-15,y-20);line(x-15,y-20,x,y-50);Sleep(200);s_f_4(x,y,RGB(0,255,0),RGB(rand()%256,rand()%256,rand()%256));Sleep(300);}getch();closegraph();}运行结果:截图2、实现多边形扫描单色填充的算法。程序代码:#includegraphics.h#includeconio.h#includetime.hvoidmain(){3intx,y;//要填充的坐标点floattempy;//用来暂时存放填充区域范围内的最大Y值intcolor=RGB(0,100,200);//填充的颜色initgraph(640,520);for(x=150;x200;x++)//画第一个模块{tempy=-3*x+750;//计算该横坐标位置下所能填充的最大Y值for(y=50;ytempy;y++){putpixel(x,y,color);//画一个像素点}}for(x=200;x300;x++)//画第二个模块{tempy=3.5*x-550;//计算该横坐标位置下所能填充的最大Y值for(y=50;ytempy;y++){putpixel(x,y,color);Sleep(1);}}for(x=300;x400;x++)//画第三个模块{tempy=-3.5*x+1550;//计算该横坐标位置下所能填充的最大Y值for(y=50;ytempy;y++){putpixel(x,y,color);}}for(x=400;x=450;x++)//画第四个模块{tempy=3*x-1050;//计算该横坐标位置下所能填充的最大Y值for(y=50;ytempy;y++){putpixel(x,y,color);}getch();closegraph();}}4运行结果:三、实验结果分析1、了解区域填充算法,加深对算法填充的理解2、运行程序后,通过观察计算机是如何绘制图形的,我们可以看出此实验的结果于理论是一致的,达到了实验的要求。通过本实验了解了基本的区域填充算法,特别是多边形区域扫描填充的算法。3、掌握二维图形区域填充的原理和算法;区域填充算法的递归算法很简单关键是选择扫描线算法来减少递归次数,提高效率。4、区域填充算法有很多种,上述实验第一题中五角星的填充包括通过算法生成封闭多边形,再用随机色完成填充工作;第二题关于多边形的扫描填充,按照扫描线顺序,用蓝色显示多边形区域的像素,完成填充工作。这两种方法都可以实现区域填充,但是前者填充的速度可根据数据进行调节可以提高填充效率。后者扫描像素点的改变则需要变动源程序,比较复杂,但是可以更清楚的观察到其填充的动态过程,都为常用的区域填充算法。
本文标题:计算机图形学--区域填充算法的实现
链接地址:https://www.777doc.com/doc-5570586 .html