y-x有效边表填充算法.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
y-x有效边表填充算法

有效边表填充算法 一、实验目的与要求: 设计有效边表节点和边表节点数据结构 二、实验描述: 使用有效边算法填充示例多边形 三、实验结果: 四、算法设计: 创建菜单栏,添加函数。 在VC++的class view 界面,新建两个类,VET和Bucket。其中AET类用于建立有效边表和边表节点,Bucket类用来建立桶节点。 AET.h文件。 class AET { public: AET(); virtual ~AET(); double x; int yMax; double k; AET *next; }; Bucket.h文件 #include AET.h class Bucket { public: Bucket(); virtual ~Bucket(); int ScanLine; AET *p; Bucket *next; }; CExp2View.h文件。其中添加了成员变量和函数的声明,以及库的导入。 #include AET.h #include Bucket.h #define Number 7 添加的成员变量和函数声明如下: public: void PolygonFill(); void CreatBucket(); void Et(); void AddEdge(AET *); void EdgeOrder(); protected: COLORREF GetColor; CPoint Point[7]; Bucket *HeadB,*CurrentB; AET E[Number],*HeadE,*CurrentE,*T1,*T2; CExp2View.cpp文件。包含构造方法、OnDraw方法和其他成员方法的描述 #define ROUND(a) int(a+0.5) CExp2View::CExp2View() { // TODO: add construction code here Point[0] = CPoint(500,400); Point[1] = CPoint(350,600); Point[2] = CPoint(250,350); Point[3] = CPoint(350,50); Point[4] = CPoint(500,250); Point[5] = CPoint(600,50); Point[6] = CPoint(800,450); } void CExp2View::OnDraw(CDC* pDC) { CExp2Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here pDC-TextOut(505,410,P0); pDC-TextOut(340,600,P1); pDC-TextOut(230,350,P2); pDC-TextOut(360,50,P3); pDC-TextOut(490,225,P4); pDC-TextOut(610,50,P5); pDC-TextOut(800,450,P6); } void CExp2View::OnMenuAET() { // TODO: Add your command handler code here AfxGetMainWnd()-SetWindowText(?à±?D?ì?3?£oóDD§±???·¨); CColorDialog ccd(GetColor); if(ccd.DoModal() == IDOK) GetColor = ccd.GetColor(); RedrawWindow(); CreatBucket(); Et(); PolygonFill(); } void CExp2View::CreatBucket() { int ScanMin,ScanMax; ScanMax = ScanMin = Point[0].y; for(int i=1;iNumber;i++) { if(Point[i].yScanMin) ScanMin = Point[i].y; if(Point[i].yScanMax) ScanMax = Point[i].y; } for(i=ScanMin;iScanMax;i++) { if(ScanMin == i) { HeadB = new Bucket; CurrentB = HeadB; CurrentB-ScanLine = ScanMin; CurrentB-p

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档