收藏 分享(赏)

边相关扫描线多边形填充算法.doc

上传人:yjrm16270 文档编号:6545992 上传时间:2019-04-16 格式:DOC 页数:9 大小:259.50KB
下载 相关 举报
边相关扫描线多边形填充算法.doc_第1页
第1页 / 共9页
边相关扫描线多边形填充算法.doc_第2页
第2页 / 共9页
边相关扫描线多边形填充算法.doc_第3页
第3页 / 共9页
边相关扫描线多边形填充算法.doc_第4页
第4页 / 共9页
边相关扫描线多边形填充算法.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

1、边相关扫描线多边形填充算法M 文件代码:function scanedge(X,Y)s,sY=size(Y);maxY=max(Y);minY=min(Y);%奇异点Y1=Y;if (Y(sY)Y(1)endif (Y(sY-1)Y(sY)endfor i=2:sY-1if (Y(i-1)Y(i)endend%画出多边形hold on;plot(X(1),X(sY),Y(1),Y(sY),r);plot(X,Y,r);axis equal;grid on;%建 ET表Edge=zeros(sY);ET=cell(maxY,1);for i=minY:maxYA=find(Y=i);sA=siz

2、e(A);k=1;for j=1:sA(2)%扫描到 P1点时if A(j)=1if X(sY)AET1,2(1,2)Change=AET1,1;AET1,1=AET1,2;AET1,2=Change;endfor i=ceil(AET1,1(1,2):floor(AET1,2(1,2)plot(i,1,b.,markersize,60);endm=2;for i=minY+1:maxYif isempty(ETi,1)for j=1:m;Change1,j=AETi-1,j;endk=2;while k=mif Change1,k-1(1,2)=Change1,k(1,2)for j=k-1

3、:m-2Change1,j=Change1,j+2;endk=k-2;m=m-2;endk=k+2;endfor j=1:mAETi,j=Change1,j;AETi,j(1,2)=Change1,j(1,2)+Change1,j(1,3);endelseif isempty(ETi,2)if AETi-1,1(1,2)+AETi-1,1(1,3)=ETi,1(1,2)AETi,1=ETi,1;for j=2:mAETi,j=AETi-1,j;AETi,j(1,2)=AETi-1,j(1,2)+AETi-1,j(1,3);endendif AETi-1,m(1,2)+AETi-1,m(1,3)

4、ETi,1(1,2)for j=1:m;Change1,j=AETi-1,j;endk=2;while k=mif Change1,k-1(1,2)=Change1,k(1,2)for j=k-1:m-2Change1,j=Change1,j+2;endk=k-2;m=m-2;endk=k+2;endfor j=1:mAETi,j=Change1,j;AETi,j(1,2)=Change1,j(1,2)+Change1,j(1,3);endendelseif AETi-1,1(1,2)+AETi-1,1(1,3)ETi,2(1,2)if m=2m=4;AETi,1=AETi-1,1;AETi,

5、1(1,2)=AETi-1,1(1,2)+AETi-1,1(1,3);AETi,2=ETi,1;AETi,3=ETi,2;AETi,4=AETi-1,2;AETi,4(1,2)=AETi-1,2(1,2)+AETi-1,2(1,3);elsefor j=2:2:mif AETi-1,j-1(1,2)+AETi-1,j-1(1,3)ETi,2(1,2)m=m+2;for k=1:j-1AETi,k=AETi-1,k;AETi,k(1,2)=AETi-1,k(1,2)+AETi-1,k(1,3);endAETi,j=ETi,1;AETi,j+1=ETi,2;for k=j+2:mAETi,k=AE

6、Ti-1,k-2;AETi,k(1,2)=AETi-1,k-2(1,2)+AETi-1,k-2(1,3);endj=m;endendendendendendfor j=2:2:mfor k=ceil(AETi,j-1(1,2):floor(AETi,j(1,2)plot(k,i,b.,markersize,60);endendend测试代码与输出图像:X=6,8,6,2,2;Y=7,5,1,3,6;scanedge(X,Y)figure 1X=2,6,10,10,4,2;Y=1,1,3,8,5,7;scanedge(X,Y)figure 2X=2,6,10,10,4,2,1;Y=1,1,3,8,5,7,6;scanedge(X,Y)figure 3X=2,6,10,10,8,6,4,2;Y=1,1,3,7,6,7,5,7;scanedge(X,Y)figure 4X=2,6,10,10,8,6,4,2,1;Y=1,1,3,7,6,7,5,7,6;scanedge(X,Y)figure 5结果分析:前四幅图表明程序对于简单的多边形填充是正确的,但由第五幅图可知当 ET 表中有超过 2 列时将无法正确填充,问题出在程序结构的简单,不具有迭代性。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > 数据结构与算法

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报