下载此文档

计算机图形学区域填充.doc


文档分类:IT计算机 | 页数:约7页 举报非法文档有奖
1/7
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/7 下载此文档
文档列表 文档介绍
地理与生物信息学院
2010 / 2011 学年第二学期
实验报告

课程名称: 计算机图形学
实验名称: 区域填充算法的实现


班级学号 B08021730
学生姓名郭超伟
指导教师曹正林
日期: 2011 年 4 月
一、实验题目:
区域填充算法的实现
二、实验要求:
学****Visual C++ 、图形设备接口和常用图形程序设计、鼠标编程以及菜单设计等基础知识,从而掌握利用Visual C++进行图形程序设计的方法以及简单的图形画法,并编程实现区域填充算法,得出相应的输出图形。
三、实验内容:
1. 掌握Visual C++ 、菜单设计等方法;
2. 编程实现区域填充算法,得出相应的输出图形;
四、实验过程:

给定种子点(x,y),首先填充种子点所在扫描直线上给定区域的一个区段,填充种子所在的尚未填充的一区段,然后确定与这一区段相邻的上下两条扫描线上位于该区段内是否存在需要填充的新区段,如果存在,则依次把每个新区段最右端的象素作为种子放入堆栈。反复这个过程,直到堆栈为空。
扫描线种子填充算法步骤 1、初始化堆栈。 2、种子压入堆栈。 3、While(堆栈非空)从堆栈弹出种子象素。

1)图形的生成(定义坐标点)
struct point
{
int x;
int y;
}p[10]={100,100,200,100,200,200,300,200,400,100,400,400,100,400,100,100,-1};
point stack[1024000];
int top;
void push(int x,int y) //对选择的种子点进出栈
{
if(top>1024000)exit(0);
stack[top].x=x;
stack[top].y=y;
top++;
}
void pop(int &x,int &y)
{
if(top==0)
exit(0);
x=stack[top-1].x;
y=stack[top-1].y;
top--;
}
void gettop(int &x,int &y)
{
if(top==0)
exit(0);
x=stack[top-1].x;
y=stack[top-1].y;
}
2)种子填充算法的主实现代码
void CB08021730View::Ontianchong()
{
// TODO: Add mand handler code here
RedrawWindow();
CClientDC dc(this);
(1,5,"用鼠标在各个区域中选种子点");
CB08021730Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
int i;
for(i=0;p[i+1].x!=-1;i++)
{
(p[i].x,p[i].y);
(p[i+1].x,p[i+1].y);
}

计算机图形学区域填充 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数7
  • 收藏数0 收藏
  • 顶次数0
  • 上传人tfgwvj88
  • 文件大小103 KB
  • 时间2018-02-13
最近更新