- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
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)