任意给定五边形的5个顶点坐标,利用多边形填充的扫描算法,编写程序生成一个实心五边形

来源:百度知道 编辑:UC知道 时间:2024/05/16 06:03:03
任意给定五边形的5个顶点坐标,利用多边形填充的扫描算法,编写程序生成一个实心五边形.
本人急需答案!!请高手多多指教!!
谢谢!!!非常感谢!
huangjing214@sohu.com

//////////////////////////////////////////////////////////////////////////////////////////////////
// 功能: 填充多边形
//
// 参数: lpPoints: 指向顶点坐标数组的指针,数组类型为POINT,多边形由它们顺次封闭连接得到
// nCount: 顶点的个数
// nColor: 填充的颜色 默认为黑色
// pDC: 设备句柄指针
//
// 返回: 无返回值
//
// 说明: 可以是边相交的多边形
//
//////////////////////////////////////////////////////////////////////////////////////////////////
void FillPolygon(LPPOINT lpPoints,int nCount, CDC *pDC, int nColor/*=0*/)
{
// 检查参数合法性
ASSERT_VALID(pDC);
ASSERT(lpPoints);
ASSERT(nCount>2);
ASSERT(nColor>=0);

// 边结构数据类型
typedef struct Edge{
int ymax; // 边的最大y坐标
float x; // 与当前扫描线的交点x坐标
float dx; // 边所在直线斜率的倒数
struct Edge * pNext; // 指向下一条边
}Edge, * LPEdge;

int i=0,j=0,k=0;
int y0=0,y1=0; // 扫描线的最大和最小y坐标
LPEdge pAET=NULL; // 活化边表头指针
LPEdge * pET=NULL; // 边表头指针