- 3
- 0
- 约4.73千字
- 约 13页
- 2017-05-18 发布于湖北
- 举报
计算机图形学区域填充的扫描线算法
计算机图形学——区域填充的扫描线算法
实验名称:
区域填充的扫描线算法
实验目的:
1、理解区域填充扫描线算法的原理;
2、实现区域填充的扫描线算法并测试;
算法原理:
算法基本思想: 首先填充种子点所在扫描线上位于区域内的区段,然后确定与该区段相邻的上下两条扫描线上位于区域内的区段,并依次将各区段的起始位置保存, 这些区段分别被用区域边界色显示的像素点所包围。随后,逐步取出一开始点并重复上述过程,直到所保存各区段都填充完毕为止。
借助于栈结构,区域填充的扫描线算法之步骤如下:
Step 1. 初始化种子点栈:置种子点栈为空栈,并将给定的种子点入栈;
Step 2. 出栈:若种子点栈为空,算法结束;否则,取栈顶元素(x,y)为种子点;
Step 3. 区段填充:从种子点 (x, y) 开始沿纵坐标为 y 的当前扫描线向左右两个方向逐像素点进行填色,其颜色值置为newcolor
直至到达区域边界。分别以 xl 和 xr 表示该填充区段两端点的横坐标;
Step 4. 新种子点入栈: 分别确定当前扫描线上、下相邻的两条扫描线上位于区段 [xl, xr] 内的区域内的区段。若这些区段内的像素点颜色值为 newolor ,则转至 Step 2;否则以区段的右端点为种子点入种子点栈,再转至 Step 2。
原程序代码:
/*****************************************/
/*4-ScanLineFill 区域填充的扫描线算法实现*/
/*****************************************/
#include stdio.h
#include conio.h
#include graphics.h
#include malloc.h
#define Stack_Size 100 //栈的大小常量
//定义结构体,记录种子点
typedef struct{
int x;
int y;
}Seed;
//定义顺序栈(种子点)
typedef struct
{
Seed Point[Stack_Size];
int top;
}SeqStack;
//初始化栈操作
void InitStack(SeqStack *S)
{
S=(SeqStack *)malloc(sizeof(SeqStack));
S-top=-1;
}
//种子点栈置空;
void setstackempty (SeqStack *S)
{
S-top==-1;
}
//种子点栈状态检测函数
int isstackempty (SeqStack *S)
{
if(S-top==-1)
return true; //空栈返回true
else
return false; //非空栈返回false
}
//种子点入栈;
int stackpush (SeqStack *S,Seed point)
{
if(S-top==Stack_Size-1)//栈已满,返回false
return false;
S-top++;//栈未满,栈顶元素加1
S-Point[S-top]= point;
return true;
}
//取栈顶元素;
int stackpop (SeqStack *S,Seed point)
{
if(S-top==-1)//栈为空,返回false
return false;
point=S-Point[S-top];
S-top --;//栈未空,top减1
return true;
}
//画圆
void CirclePoints (int xc, int yc, int x, int y, int Color)
{
putpixel (xc + x, yc + y, Color);
putpixel (xc + x, yc - y, Color);
putpixel (xc - x, yc + y, Color);
putpixel (xc - x, yc - y, Color);
putpixel (xc + y, yc + x, Color);
putpixel (xc + y, yc - x, Color);
putpixel (xc - y, yc + x, Color);
putpixel (xc - y
您可能关注的文档
- 西电柴油发电机组培训.doc
- 花儿美,育花人心里更美.pptx
- 见证取样、送检记录(套筒连接)1.doc
- 要骨干还是要心腹中华讲师网.doc
- 西安主要有10个旅游景点.docx
- 规范二:企业系统接入省平台工作规范.doc
- 西黄村项目5楼4层样板施工方案09.01.docx
- 解决润滑油带水可行性研究报告.doc
- 解剖银行不良新趋势:压力缓释中西部风险开始暴露.pptx
- 解放战争时.doc
- 广东省广州省实验中学教育集团2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州大学附属中学2025-2026学年八年级上学期奥班期中物理试题(解析版).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(含答案).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(解析版).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 2026《中国人寿上海分公司营销员培训体系优化研究》18000字.docx
- 《生物探究性实验教学》中小学教师资格模拟试题.docx
最近下载
- 2025年省考超大杯刷题-申论套卷四.pdf VIP
- 小学学校总务处的工作计划.pptx VIP
- 大学毕业论文__小型液压挖掘机的设计.doc VIP
- 食材配送人员配置与资质要求.docx VIP
- 2025年山东省济南市中考英语试卷试题真题(精校打印版).pdf VIP
- 一种能够在太阳光下快速固化的可剥离去污复合膜及制备方法.pdf VIP
- 骨科临床诊疗指南及操作规范(2025版).docx
- 2025-2026学年小学信息技术(信息科技)四年级下册浙教版(2023)教学设计合集.docx
- 沪科版九年级(上) 中考题同步试卷:22.5 二次函数的应用(18).doc VIP
- 中国的刺腹牙甲属、脊胸牙甲属和凹基牙甲属昆虫鞘翅目牙甲科牙甲族研究.pdf VIP
原创力文档

文档评论(0)