资源简介
该程序点击鼠标左键是为多边形添加顶点,顶点添加完成后点击右键即可填充!目前个人已经测试可以填充凹多边形,如果下载的朋友发现什么地方运行不对请及时回复本人(希望能够把运行不对时候整个屏幕拷下来,这样方便本人查找问题,谢谢)!
代码片段和文件信息
// Edge.cpp: implementation of the CEdge class.
//
//////////////////////////////////////////////////////////////////////
#include “stdafx.h“
#include “MulFillRect.h“
#include “Edge.h“
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CEdge::CEdge()
{
x=0;
ymax=0;
deltax=0;
HLine=FALSE;
nextEdge=NULL;
}
/*CEdge::Edge(CEdge&edge)
{
}*/
CEdge::~CEdge()
{
/*int i=GetLength(this);
for(;i>0;i--)
DelEdge(thisi);*/
}
BOOL CEdge::AddEdge(CEdge*headCEdge*edge)
//在分类链表中添加一条边对每一条边按x的值进行排序
{
CEdge *s=new CEdge();
//CEdge *s=edge;
s->deltax=edge->deltax;
s->HLine=edge->HLine;
s->x=edge->x;
s->ymax=edge->ymax;
/*s=edge;*/
CEdge *p=head;
while(NULL!=p->nextEdge && s->x>=p->nextEdge->x)
{
p=p->nextEdge;
}
if(NULL==p->nextEdge)
p->nextEdge=s;
else
{
s->nextEdge=p->nextEdge;
p->nextEdge=s;
}
return true;
}
BOOL CEdge::InsertEdge(CEdge*headint nCEdge*edge)
//在分类链表中插入一条边
{
return true;
}
BOOL CEdge::DelEdge(CEdge*headint n)
//从分类链表中删除一条边
{
int j=1;
if(n<1 || n>GetLength(head)+1)
return FALSE;
CEdge *p*q;
p=head;
for(;j p=p->nextEdge;
q=p->nextEdge;
p->nextEdge=q->nextEdge;
delete q;
return true;
}
CEdge *CEdge::DelEdge(CEdge *headCEdge *edge)
{
CEdge *p*q;
p=head;
for(;p->nextEdge!=NULL;)
{
if(p->nextEdge->x==edge->x
&& p->nextEdge->ymax==(edge->ymax))
{
q=p->nextEdge;
break;
}
else
p=p->nextEdge;
}//在链表中查找该结点
if(NULL==p->nextEdge)
return NULL;
p->nextEdge=q->nextEdge;
delete q;
return p->nextEdge;
}
BOOL CEdge::ListSort(CEdge*head)
//按x的值给链表排序
//使用冒泡排序方法
{
int i=GetLength(head);
CEdge *temp1;
temp1=head;
CEdge *temp2;
temp2=temp1->nextEdge;
if(temp2==NULL)
return true;
CEdge *temp3;
temp3=temp2->nextEdge;
CEdge *temp5;
CEdge *temp4;
temp4=head;
temp5=head;
int check=0;
for(int j=0;j {
while(temp3!=NULL)
{
if(temp3->xx)
{
check++;
temp4=temp3;//先记下要前移的结点
temp5=temp3;
temp2->nextEdge=temp5->nextEdge;
temp4->nextEdge=temp2;
temp1->nextEdge=temp4;
//通过链表的指针移动进行排序
}
temp1=temp1->nextEdge;
temp2=temp1->nextEdge;
temp3=temp2->nextEdge;
//临时变量均向指向下一个结点
}
temp1=head;
//一次冒泡排序结束,进行下一次排序
if(0==check)
break;
else check=0;
}
return true;
}
int CEdge::GetLength(CEdge*head)
//得到链表的长度
{
//得到链表长度有问题
int i=0;
CEdge *p=head->nextEdge;
while(p!=NULL)
{
i++;
p=p->nextEdge;
}
return i;
}
int CEdge::OnCreate(CPoint begPointCPoint endPoint)
//根据起点和终点构建条边,返回边的下端点
{
int ymin=0;
HLine=FALSE;
nextEdge=NULL;
CPoint tempPoint;
if(begPoint.y>endPoint.y)
{
tempPoint=b
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 403 2009-04-07 19:21 多边形填充扫描线算法\res\MulFillRect.rc2
文件 1078 2009-04-07 19:21 多边形填充扫描线算法\res\MulFillRectDoc.ico
文件 1078 2009-04-07 19:21 多边形填充扫描线算法\res\MulFillRect.ico
文件 1078 2009-04-07 19:21 多边形填充扫描线算法\res\Toolbar.bmp
文件 4221 2009-04-16 19:31 多边形填充扫描线算法\Edge.cpp
文件 1512 2009-04-16 18:25 多边形填充扫描线算法\Edge.h
文件 6023 2009-04-16 19:51 多边形填充扫描线算法\EdgeNet.cpp
文件 1156 2009-04-08 19:29 多边形填充扫描线算法\EdgeNet.h
文件 2512 2009-04-07 19:21 多边形填充扫描线算法\MainFrm.cpp
文件 1581 2009-04-07 19:21 多边形填充扫描线算法\MainFrm.h
文件 28880 2009-04-09 20:18 多边形填充扫描线算法\MulFillRect.aps
文件 2301 2009-04-09 20:54 多边形填充扫描线算法\MulFillRect.clw
文件 4382 2009-05-24 00:22 多边形填充扫描线算法\MulFillRect.cpp
文件 5034 2009-04-07 22:37 多边形填充扫描线算法\MulFillRect.dsp
文件 530 2009-04-07 19:21 多边形填充扫描线算法\MulFillRect.dsw
文件 1411 2009-04-07 19:21 多边形填充扫描线算法\MulFillRect.h
文件 230400 2009-05-24 00:24 多边形填充扫描线算法\MulFillRect.ncb
文件 49664 2009-05-24 00:24 多边形填充扫描线算法\MulFillRect.opt
文件 4044 2009-05-24 00:23 多边形填充扫描线算法\MulFillRect.plg
文件 10623 2009-04-07 19:21 多边形填充扫描线算法\MulFillRect.rc
文件 1842 2009-04-07 19:21 多边形填充扫描线算法\MulFillRectDoc.cpp
文件 1530 2009-04-07 19:21 多边形填充扫描线算法\MulFillRectDoc.h
文件 7938 2009-05-05 11:03 多边形填充扫描线算法\MulFillRectView.cpp
文件 2305 2009-05-05 10:36 多边形填充扫描线算法\MulFillRectView.h
文件 2376 2009-04-09 08:07 多边形填充扫描线算法\MulPoint.cpp
文件 1024 2009-04-07 21:09 多边形填充扫描线算法\MulPoint.h
文件 4431 2009-04-07 19:21 多边形填充扫描线算法\ReadMe.txt
文件 499 2009-04-07 19:21 多边形填充扫描线算法\Resource.h
文件 213 2009-04-07 19:21 多边形填充扫描线算法\StdAfx.cpp
文件 1054 2009-04-07 19:21 多边形填充扫描线算法\StdAfx.h
............此处省略6个文件信息
- 上一篇:c语言编写的货郎担算法
- 下一篇:用C语言实现高效日志
评论
共有 条评论