图形学多边形区域填充

图形学多边形区域填充

ID:13797826

大小:46.00 KB

页数:6页

时间:2018-07-24

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

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

1、实验二:多边形的区域填充一、实验目的与要求1.通过实验,进一步理解和掌握几种常用多边形填充算法的基本原理2.掌握多边形区域填充算法的基本过程3.掌握在C/C++环境下用多边形填充算法编程实现指定多边形的填充。二、实验内容#include#include#include"stdio.h"#includetypedeffloatColor[3];rgbColorEqual(Colorc1,Colorc2){if(abs(c1[1]-c2[1])<0.001&&abs(c1[2]-c

2、2[2])<0.001&&abs(c1[0]-c2[0])<0.001)returntrue;elsereturnfalse;}voidsetPixel(GLintx,GLinty){glBegin(GL_POINTS);glVertex2i(x,y);glEnd();}voidgetPixel(GLintx,GLinty,Colorc){glReadPixels(x,y,1,1,GL_RGB,GL_FLOAT,c);}voidBoundaryFill(intx,inty,ColorfillColor,ColorborderCol

3、or){ColorcurrentColor;getPixel(x,y,currentColor);if((!rgbColorEqual(currentColor,fillColor))&&(!rgbColorEqual(currentColor,borderColor))){//setColor(fillColor);GLintx1;GLintx2;setPixel(x,y);getPixel(x,y+1,currentColor);if((!rgbColorEqual(currentColor,fillColor))&&(!rg

4、bColorEqual(currentColor,borderColor))){getPixel(x+1,y+1,currentColor);if(rgbColorEqual(currentColor,borderColor)){BoundaryFill(x,(y+1),fillColor,borderColor);}}getPixel(x,y-1,currentColor);if((!rgbColorEqual(currentColor,fillColor))&&(!rgbColorEqual(currentColor,bord

5、erColor))){getPixel(x+1,y-1,currentColor);if(rgbColorEqual(currentColor,borderColor)){BoundaryFill(x,y-1,fillColor,borderColor);}}x1=x+1;getPixel(x1,y+1,currentColor);if((!rgbColorEqual(currentColor,fillColor))&&(!rgbColorEqual(currentColor,borderColor)))//x的上面那个点是内点,

6、且未被填充{getPixel(x1+1,y+1,currentColor);if(rgbColorEqual(currentColor,borderColor))//x的上面那个点的右边是边界点,那么说明这个点是需要填充的最右边的点{BoundaryFill(x1,y+1,fillColor,borderColor);//对这个最右边的点调用函数,进行扫描线种子填充(下面的同上)}}getPixel(x1,y-1,currentColor);if((!rgbColorEqual(currentColor,fillColor))&&

7、(!rgbColorEqual(currentColor,borderColor))){getPixel(x1+1,y-1,currentColor);if(rgbColorEqual(currentColor,borderColor)){BoundaryFill(x1,y-1,fillColor,borderColor);}}getPixel(x1,y,currentColor);while((!rgbColorEqual(currentColor,fillColor))&&(!rgbColorEqual(currentColo

8、r,borderColor))){setPixel(x1,y);x1++;getPixel(x1,y+1,currentColor);if((!rgbColorEqual(currentColor,fillColor))&&(!rgbColorEq

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

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

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