【POJ2007】Scrambled Polygon【极角排序】

【POJ2007】Scrambled Polygon【极角排序】_第1张图片
【POJ2007】Scrambled Polygon【极角排序】_第2张图片
【POJ2007】Scrambled Polygon【极角排序】_第3张图片
l i n k link link

分析:

极角排序 原点就是 ( 0 , 0 ) (0,0) (0,0)

CODE:

#include
#include
#include
#include
#include
#define reg register
using namespace std;
typedef long long ll;
int n=1;
struct node{
	int x,y;
}p[55];
int m(node a,node b,node c){return (a.x-c.x)*(b.y-c.y)-(a.y-c.y)*(b.x-c.x);}
double dis(node a,node b){return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));}
bool cmp(node a,node b)
{
	double res=m(a,b,p[1]);
	if(res>0) return 1;
	if(res==0&&dis(p[1],a)<dis(p[1],b)) return 1;
	return 0;
}
int main(){
	while(scanf("%d%d",&p[n].x,&p[n].y)!=EOF) n++;
	n--;
	sort(p+2,p+n+1,cmp);
	for(int i=1;i<=n;i++)
		printf("(%d,%d)\n",p[i].x,p[i].y);
	return 0;
}

你可能感兴趣的:(计算几何,计算几何,叉积)