poj 2007 Scrambled Polygon--按极角排序

/*
给一个凸包,但是点序混乱,让你从(0,0)开始逆时针找到这个凸包

就是按极角从小到大排序  是求凸包算法的一部分
*/
#include
#include
struct point 
{
	int x,y;
}dian[55];
int n;
int cross(point p,point s,point e)
{
	return (e.x-s.x)*(p.y-s.y)-(p.x-s.x)*(e.y-s.y);
}
int dis(point a,point b){return (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);}
int cmp2(const void *a,const void *b)
{
	int ret;
	point *c=(point*)a,*d=(point*)b;
	ret=cross(*d,dian[0],*c);
	if(ret!=0) return -ret;
	else if(dis(*c,dian[0])>dis(*d,dian[0]))
		return 1;
	else return 0;
}
int main()
{
	int i;
	n=0;
	while(scanf("%d%d",&dian[n].x,&dian[n].y)!=EOF) 
		++n;
	qsort(dian+1,n-1,sizeof(dian[1]),cmp2);//就是这儿 按极角从小到大排序
	for(i=0;i

你可能感兴趣的:(计算几何,算法,ini,c)