现丑了! 公布部分代码! 希望有人用得上!
#include <math.h>
typedef struct tagXRECT
{
short xs,ys,xe,ye;
}XRECT;
typedef struct tagXPOINT
{
short x,y;
}XPOINT;
//给定任意点数组, 获取最小的包含所有点的凸图形点序列
//顺时针方向输出点数组
int GetConvexList(XPOINT* pPtDst, XPOINT* pPtSrc, int nSrc)
{
int nDst = -1;
int i,nStart, nPre, nCur, nNext;
XPOINT ptPre;
if(pPtDst == NULL || pPtSrc == NULL || nSrc < 3) return nDst;
nStart = 0;
for (i=1; i<nSrc; ++i)
{
if(pPtSrc[i].y < pPtSrc[nStart].y || (pPtSrc[i].y == pPtSrc[nStart].y && pPtSrc[i].x < pPtSrc[nStart].x))
nStart = i;
}
double* k = new double[nSrc];
BOOL* bUser= new BOOL[nSrc];
memset(bUser,0,nSrc*sizeof(BOOL));
double kMin=0;
nDst = 0;
pPtDst[0] = pPtSrc[nStart];
ptPre.x = pPtSrc[nStart].x-1000;
ptPre.y = pPtSrc[nStart].y+1;
nPre = nNext = -1;
nCur = nStart;
double ax,ay,bx,by,cx,cy;
BOOL bLine;
while(pPtSrc[nNext].x != pPtSrc[nStart].x || pPtSrc[nNext].y != pPtSrc[nStart].y)
{
bLine = FALSE;
memset(k,0,nSrc*sizeof(double));
for (i=0; i<nSrc; ++i)
{
if(bUser[i] || i == nCur || i == nPre)
{
k[i] = 0x7FFFFFFF;
}
else
{
ax = pPtSrc[nCur].x - pPtSrc[i].x;
ay = pPtSrc[nCur].y - pPtSrc[i].y;
bx = pPtSrc[nCur].x - ptPre.x;
by = pPtSrc[nCur].y - ptPre.y;
cx = pPtSrc[i].x - ptPre.x;
cy = pPtSrc[i].y - ptPre.y;
if(bx*cy == cx*by)
{
if(fabs(bx) > fabs(cx))
{
if(i != nStart) bUser[i] = TRUE;
bLine = TRUE;
break;
}
else if(fabs(bx) < fabs(cx))
{
pPtDst[nDst] = pPtSrc[i];
if(i != nStart) bUser[i] = TRUE;
bLine = TRUE;
break;
}
else if(fabs(by) < fabs(cy))
{
pPtDst[nDst] = pPtSrc[i];
if(i != nStart) bUser[i] = TRUE;
bLine = TRUE;
break;
}
k[i] = 0x7FFFFFFF;
}
else
{
ax=ax*ax; ay=ay*ay;
bx=bx*bx; by=by*by;
cx=cx*cx; cy=cy*cy;
k[i] = (ax+ay+bx+by-cx-cy)/ (2 * sqrt((ax+ay)*(bx+by)));
}
}
}
if(!bLine)
{
nNext = -1;
kMin = (double)0x7FFFFFFF;
for (i=0; i<nSrc; ++i)
{
if(!bUser[i] && k[i] < kMin)
{
kMin = k[i];
nNext = i;
}
}
nDst++;
pPtDst[nDst] = pPtSrc[nNext];
bUser[nNext] = TRUE;
ptPre = pPtSrc[nCur];
nPre = nCur;
nCur = nNext;
}
}
delete []k;
delete []bUser;
return nDst;
}
...全文
相关推荐
HungryAnt C语言游戏程序代码公布(扫雷/俄罗斯方块/贪吃蛇)
0分,代码我已经公布出来,希望大家好好学习,也向我学习,呵呵!兴奋吧!!!<br><br>请大家多多支持我!我也希望交一些和我有相同志趣的人,呵呵!
成绩公布后……作文.doc
【部分内容】:文章中,主人公在成绩揭晓后经历了失望、痛苦和自责,但他从自然现象(蜘蛛结网)中获得启示,意识到挫折是成长的一部分,应当勇敢面对。
TOEFL作文题库公布范文
ETS官方公布范文,包括题库中的所有题目,并且每个题目都有多篇范文供大家参考,希望对大家有用
小品剧本校园搞笑幽默-校园小品《希望》剧本.docx
校园小品《希望》剧本分析校园小品《希望》剧本是一场幽默搞笑的剧本,讲述了两个中学生李小明和张小虎的故事。这场戏剧通过他们的对话和互动,展现了他们在考试结果公布后所经历的喜怒哀乐。
向希望工程捐款的倡议书.docx
文章是向希望工程捐款的倡议书,介绍了希望工程等慈善项目,包括针对贫困大学生的助学计划。倡议全校团员和少先队员参与,提及结对资助等方式,还有实地走访审核等救助流程,公布资助咨询方式,强调社区共同参与传递


图形处理/算法
