图形学(区域填充)

图形学(区域填充)

ID:14046347

大小:53.00 KB

页数:6页

时间:2018-07-25

图形学(区域填充)_第1页
图形学(区域填充)_第2页
图形学(区域填充)_第3页
图形学(区域填充)_第4页
图形学(区域填充)_第5页
资源描述:

《图形学(区域填充)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、计算机科学与工程学院学生实验报告学号专业计算机科学与技术班级师范一班姓名课程名称图形学课程类型实验名称实验二区域填充实验目的:(1)掌握区域填充的基本算法原理;(2)实践与巩固区域填充的基本生成算法;(3)掌握这些算法的原理及实现;(4)编程实现区域填充算法,得出相应的输出图形。实验内容:一.什么是区域填充?(1)区域填充即给出一个区域的边界,要求对边界范围内的所有像素单元赋予指定的颜色代码;(2)区域填充中最常用的是多边形填色。多边形填色即给出一个多边形的边界,要求对多边形边界范围的所有像素单

2、元赋予指定的色代码;(3)要完成这个任务,一个首要的问题就是判断一个像素是在多边形内还是外。二.扫描线种子填充算法1.基本思想:种子填充算法采用的边界定义是区域边界上所有像素均具有某个特定的颜色值,区域内部所有像素均不取这一特定颜色,而边界外的像素则可具有与边界相同的颜色值。程序从(x,y)开始,先检测该点的颜色,如果它与边界色和填充色均不相同,就用填充色填充该点,然后检测相邻位置,以确定它们是不是边界色和填充色,若不是,就填充该相邻点。从这个过程延续到已检测完区域边界范围内的所有像素为止。2.

3、实现方法:从当前点检测相邻像素有两种方法,四向连通和八向连通。(1)四向连通方法指的是从区域上一点出发,可以通过四个方向,即上、下、左、右移动的组合,在不越出区域的前提下,检测区域内的任意像素;(2)八向连通方法指的是区域内的每一个像素,可以通过左右上下左上右上左下右下这8个方向的移动的组合来检测。3.实现过程:扫描线种子填充算法的基本过程如下:当给定种子点(x,y)时,首先分别向左和向右两个方向填充种子点所在扫描线上的位于给定区域的一个区段,同时记下这个区段的范围[xLeft,xRight],

4、然后确定与这一区段相连通的上、下两条扫描线上位于给定区域内的区段,并依次保存下来。反复这个过程,直到填充结束。扫描线种子填充算法可由下列四个步骤实现:(1)初始化一个空的栈用于存放种子点,将种子点(x,y)入栈;(2)判断栈是否为空,如果栈为空则结束算法,否则取出栈顶元素作为当前扫描线的种子点(x,y),y是当前的扫描线;(3)从种子点(x,y)出发,沿当前扫描线向左、右两个方向填充,直到边界。分别标记区段的左、右端点坐标为xLeft和xRight;(4)分别检查与当前扫描线相邻的y-1和y+1

5、两条扫描线在区间[xLeft,xRight]中的像素,从xLeft开始向xRight方向搜索,若存在非边界且未填充的像素点,则找出这些相邻的像素点中最右边的一个,并将其作为种子点压入栈中,然后返回第(2)步。4.算法特点(1)该算法考虑了扫描线上像素的相关性,种子像素不再代表一个孤立的像素,而是代表一个尚未填充的区段;(2)进栈时,只将每个区段选一个像素进栈(每个区段最右边或最左边的像素),这样解决了堆栈溢出的问题;(3)种子出栈时则填充整个区段;(4)这样有机的结合:以边对尚未填充像素的登记(

6、像素进栈),一边进行填充(像素出栈),既可以节省堆栈空间,又可以实施快速填充。(三)实验代码#include#includeintL=-1;intA[100][2];intfcolor,bcolor;voidpop(int*x,int*y){*x=A[L][0];*y=A[L][1];L--;}voidpush(intA[L][2],intsx,intsy){L++;A[L][0]=sx;A[L][1]=sy;}scanline_seed_fill(int

7、x,inty,intcolor){intx0,xl,xr;push(x,y);while(A[L][2]>=0){pop(pixel(x,y));putpixel(x,y,color):x0=x+1;while(getpixel(x0,y)!=bcolor){putpixel(x0,y,fcolor);x0=x0+1;}xr=x0+1;x0=x-1;while(getpixel(x0,y)!=bcolor){putpixel(x0,y,fcolor);x0=x0-1;}xl=x0+1;y=y+1

8、;while(x0<=xr){flag=0;while((getpixel(x0,y)!=bcolor)&&((getpixel(x0,y)!=fcolor)&&(x0

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

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

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