- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
4.3区域填充.ppt.Convertor
4.3二维图形的填充
南京农业大学
谢忠红
C语言里的两个函数
(那两个?完整的形式?)
4.3.1种子填充算法
本节内容:
介绍实现图形填充的一些基本算法。
(1) 确定哪些像素位于填充图元的内部;
(2)确定以什么颜色填充这些像素;
(1)矩形的填充方法(规则形状)(fill_rec2)
(应定义一个什么结构体?)
void FillRectangle(Rectangle *rect,int color)
{ int x,y;
for(y = rect-ymin;y = rect-ymax;y++)
for(x = rect-xmin;x = rect-xmax;x++)
PutPixel(x,y,color);
} /*end of FillRectangle() */
(2)逐点判断法
(不规则形状的多边形)
方法:逐个判断绘图窗口中的像素,如果在多边形内,则给予相应的色彩,如果不在多边形内则赋予背景色彩。
#define MAX 100
Typedef struct {
int PolygonNum; // 多边形顶点个数
Point vertexces[MAX] //多边形顶点数组
} Polygon // 多边形结构
定义一个多边形的结构体
逐点判断法
void FillPolygonPbyP( Polygon *P, int Color)
{ int x,y;
for(y = ymin;y = ymax;y++)
for(x = xmin;x = xmax;x++)
if(IsInside(P,x,y)) //在多边形内
PutPixel(x,y,Color);
else //在多边形外
PutPixel(x,y,backgroundColor);
}
引起一个问题,
射线法判断像素点在多边形内还是外
步骤:
从待判别点v发出射线
求交点个数k
K的奇偶性决定了点与多边形的内外关系
(奇数个交点在内部偶数个交点在外面)
逐点判断法的优缺点
优点:程序简单,
缺点:速度太慢
主要原因:计算量太大,费时
由于该算法割断了各象素之间的联系,孤立地考察各象素与多边形的内外关系,使得几十万甚至几百万个象素都要一一判别,每次判别又要多次求交点,需要做大量的乘除运算,花费很多时间。
(3)种子填充法
基本思路:
首先假设在多边形区域的内部,至少有一个像素(称为种子)是已知的。然后算法开始搜索与种子点相邻且位于区域内的其它像素。如果相邻点不在区域内,那么到达区域的边界;如果相邻点位于区域内,那么这一点就成为新的种子点,然后继续递归地搜索下去。
4-连通
8-连通
种子填充算法左上角(left,top)右下角(right,bottom)的矩形
void fill(int x,int y,int newcolor) {
if( ((xleft)(xright))((ytop)(ybottom))){
if ( getpixel(x,y)!=newcolor) {
putpixel(x,y,newcolor) ; //设置(x,y)点为新颜色
}
}
试写出八领域的矩形填充算法?
fill(x,y+1,newcolor) ; //下
fill(x,y-1,newcolor) ; //上
fill(x-1,y,newcolor); //左
fill(x+1,y,newcolor); //右
void fill(int x,int y,int newcolor)
{ if( )
{ if (getpixel(x,y)!=newcolo
您可能关注的文档
最近下载
- 复旦大学介绍-PPT简介(经典版).pptx VIP
- 安徽省马鞍山市2020-2021学年九年级上学期期中物理试卷(word版 含答案).docx VIP
- 2025年儿科三基三严考试题库.doc VIP
- 品管圈PDCA参赛作品-血透中心提升维持性血液透析患者钙磷甲状旁腺激素合格率医院品质管理案例(1).pptx
- 2025耐碳青霉烯类革兰氏阴性杆菌感染的诊治和防控指南推荐意见(全文).pdf VIP
- 二零二三年 优质公开课10的认识.ppt VIP
- 基于统计方法的我国上市公司信用风险评估模型研究.pdf VIP
- 沙场转让合同协议书.docx VIP
- 数字医学专业介绍.pptx VIP
- 中国共产党纪律处分条例.pptx VIP
文档评论(0)