计算机图形学--区域填充算法的实现94649

计算机图形学--区域填充算法的实现94649

ID:33605355

大小:66.00 KB

页数:7页

时间:2019-02-27

计算机图形学--区域填充算法的实现94649_第1页
计算机图形学--区域填充算法的实现94649_第2页
计算机图形学--区域填充算法的实现94649_第3页
计算机图形学--区域填充算法的实现94649_第4页
计算机图形学--区域填充算法的实现94649_第5页
资源描述:

《计算机图形学--区域填充算法的实现94649》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验四区域填充算法的实现班级信计2班学号20080502090姓名张进分数一、实验目的和要求:1、理解区域的表示和类型,能正确区分四连通和八连通的区域2、了解区域填充的实现原理3、利用TurboC实现区域填充的递归算法二、实验内容:当给定种子点(x,y)时,首先填充种子点所在的扫描线上的位于给定区域的一个区段,然后确定与这一区段连通的上下两条扫描线上位于给定区域的区段依次保存下来。反复这个过程,直到填充结束.三、实验结果分析1、种子填充算法假设在多边内有一像素已知,由此出发利用连通性找到区域内的所有像素2、设(x,y)

2、为内点表示的四连通区域内的一点,oldcolor为区域的原色。现取(x,y)为种子点,要将整个区域填充为显得颜色newcolor,递归填充过程如下:先判别像素(x,y)的颜色,若它的值不等于oldcolor,说明该像素或者位于区域之外或者已经被置于newcolor,不需要填充,算法结束,否则置该像素的颜色为newcolor,再对与其相邻上、下、左、右四个相邻像素分别作递归填充。1、程序代码:#include"Conio.h"#include"graphics.h"  /*forinitgr()*/#include"st

3、dio.h"     /*forNULL   */#defineclosegrclosegraphvoidinitgr(void)/*BGI初始化*/{intgd=DETECT,gm=0;/*和gd=VGA,gm=VGAHI是同样效果*/registerbgidriver(EGAVGA_driver);/*注册BGI驱动后可以不需要.BGI文件的支持运行*/initgraph(&gd,&gm,"");}enumBOOL{FALSE=0,TRUE=1};typedefstruct{   inty;   int7xLeft

4、;   intxRight;}Span;/*区段*/typedefstructstacknode{Spanspan;structstacknode*next;}stacknode;typedefstruct{stacknode*top;}linkstack;/*-----------------进栈操作----------------------------------------*/voidPushStack(linkstack*s,Span*span){stacknode*p=(stacknode*)malloc(

5、sizeof(stacknode));p->span.y=span->y;p->span.xLeft=span->xLeft;p->span.xRight=span->xRight;p->next=s->top;s->top=p;}/*-----------------出栈操作------------------------------------------*/voidPopStack(linkstack*s,Span*span){intx;stacknode*p=s->top;span->y=p->span.y;s

6、pan->xLeft=p->span.xLeft;span->xRight=p->span.xRight;s->top=p->next;free(p);}/*-----------------将栈清空------------------------------------------*/voidSetStackEmpty(linkstack*s){   stacknode*p=s->top;   while(s->top!=NULL)   {       free(p);       s->top=p->next;  

7、 7}}/*--------------判断栈是否为空----------------------------------------*/intIsStackEmpty(linkstack*s){   if(s->top==NULL)       return1;   else       return0;}/*----------------核心程序开始----------------------------------------*/voidScanLineFill4(intx,inty,intoldColor,i

8、ntnewColor){   intxLeft,xRight;   inti;   enumBOOLisLeftEndSet,spanNeedFill;   Spanspan;   linkstack*s=(linkstack*)malloc(sizeof(linkstack));   s->top=NULL;   /*填充并确定

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。