计算机图形学-有效边表填充算法实验报告.doc

计算机图形学-有效边表填充算法实验报告.doc

ID:55413760

大小:318.00 KB

页数:11页

时间:2020-05-12

计算机图形学-有效边表填充算法实验报告.doc_第1页
计算机图形学-有效边表填充算法实验报告.doc_第2页
计算机图形学-有效边表填充算法实验报告.doc_第3页
计算机图形学-有效边表填充算法实验报告.doc_第4页
计算机图形学-有效边表填充算法实验报告.doc_第5页
计算机图形学-有效边表填充算法实验报告.doc_第6页
计算机图形学-有效边表填充算法实验报告.doc_第7页
计算机图形学-有效边表填充算法实验报告.doc_第8页
计算机图形学-有效边表填充算法实验报告.doc_第9页
计算机图形学-有效边表填充算法实验报告.doc_第10页
资源描述:

《计算机图形学-有效边表填充算法实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验题目:实验二有效边表填充算法1.实验目的:设计有效边表结点和边表结点数据结构设计有效边表填充算法编程实现有效边表填充算法2.实验描述:下图1所示多边形覆盖了12条扫描线,共有7个顶点和7条边。7个顶点分别为:P0(7,8),P1(3,12),P2(1,7),P3(3,1),P4(6,5),P5(8,1),P6(12,9)。在1024×768的显示分辩率下,将多边形顶点放大为P0(500,400),P1(350,600),P2(250,350),P3(350,50),P4(500,250),P5(600,50),P6(800,450)。请使用有效边表算法填充该多边形。图1示例

2、多边形图2屏幕显示多边形3.算法设计:(1)建立AET和BUCKET类;(2)初始化桶,并在建立桶结点时为其表示的扫描线初始化为带头结点的链表;(3)对每个桶结点进行循环,将桶内每个结点的边表合并为有效边表,并进行有效边表循环;(4)按照扫描线从小到大的移动顺序,计算当前扫描线与多边形各边的交点,然后把这些交点按X值递增的顺序进行排序,配对,以确定填充区间;(5)用指定颜色点亮填充区间内的所有像素,即完成填充工作。4.源程序:1)//AET.hclassAET{public:AET();virtual~AET();doublex;intyMax;doublek;//代替1/kA

3、ET*next;};//AET..cppAET::AET(){}AET::~AET(){}2)//Bucket.h#include"AET.h"classBucket{public:Bucket();virtual~Bucket();intScanLine;AET*p;//桶上的边表指针Bucket*next;};//Bucket.cppBucket::Bucket(){}Bucket::~Bucket(){}3)//TestView.h#include"AET.h"//包含有效边表类#include"Bucket.h"//包含桶类#defineNumber7//N为闭合多边形

4、顶点数,顶点存放在整型二维数组Point[N]中classCTestView:publicCView{。。。。。。。。。public:voidPolygonFill();//上闭下开填充多边形voidCreatBucket();//建立桶结点桶voidEt();//构造边表voidAddEdge(AET*);//将边插入AET表voidEdgeOrder();//对AET表进行排序。。。。。。。。。。protected:COLORREFGetColor;//调色板CPointPoint[7];//定义多边形Bucket*HeadB,*CurrentB;//桶的头结点和当前结点A

5、ETE[Number],*HeadE,*CurrentE,*T1,*T2;//有效边表的结点}(4)TestView.cpp#defineROUND(a)int(a+0.5)//四舍五入CTestView::CTestView(){//设置多边形的7个顶点Point[0]=CPoint(550,400);//P0Point[1]=CPoint(350,600);//P1Point[2]=CPoint(250,350);//P2Point[3]=CPoint(350,50);//P3Point[4]=CPoint(500,250);//P4Point[5]=CPoint(600,

6、50);//P5Point[6]=CPoint(800,450);//P6}voidCTestView::OnDraw(CDC*pDC){CTestDoc*pDoc=GetDocument();ASSERT_VALID(pDoc);pDC->Polygon(Point,7);//绘制多边形//输出多边形的顶点编号pDC->TextOut(550,410,"P0");pDC->TextOut(350,600,"P1");pDC->TextOut(230,340,"P2");pDC->TextOut(350,30,"P3");pDC->TextOut(490,220,"P4");p

7、DC->TextOut(600,30,"P5");pDC->TextOut(805,450,"P6");}voidCTestView::OnMenuAET()//菜单函数{AfxGetMainWnd()->SetWindowText("多边形有效边表填充算法");//显示标题CColorDialogccd(GetColor);if(ccd.DoModal()==IDOK)//调用调色板选取前景色{GetColor=ccd.GetColor();}RedrawWindow();//刷新屏幕Cr

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

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

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