木其网络科技专业程序员代写http://www.xmsydw.com
程序员学历擅长经验网店链接
apenny硕士ASP.NET PHP 电子 通信设计 图像 编程 网络5年进入店铺
zheng_qianqian本科C语言 C++面向对象 Java5年进入店铺
guoguanl本科Java Web项目 JSP Hibernate Struts Mysql5年进入店铺

计算几何_多边形的有向面积和确保多边形的点是逆时针排列

原文地址:http://www.myexception.cn/program/776883.html

const double eps = 1e-8;
int sign(double d){
	return d < -eps ? -1 : (d > eps);
}
//多边形类
struct poly{
	static const int N = 1005; //点数的最大值
	point ps[N+5]; //逆时针存储多边形的点,[0,pn-1]存储点
	int pn;  //点数
	poly() { pn = 0; }
	//加进一个点 
	void push(point tp){
		ps[pn++] = tp;
	}
	//第k个位置
	int trim(int k){
		return (k+pn)%pn;
	}
	void clear(){ pn = 0; }
};
//多边形org的有向面积
double signArea(poly org){
	int i, g;
	double ans;
	point* ps = org.ps;
	for(ans = i = 0; i < org.pn; i++){
		g = org.trim(i+1);
		ans += (ps[g].y*ps[i].x-ps[g].x*ps[i].y);
	}
	return ans / 2.0;
}
//如果org的点是逆时针的,则调整为逆时针的
void makeAntclockwise(poly& org){
	if(sign(signArea(org)) < 0){
		reverse(org.ps, org.ps+org.pn);
	}
}

posted @ 2012-12-25 01:16  程序流程图  阅读(150)  评论(0编辑  收藏  举报
木其网络科技专业程序员代写http://www.xmsydw.com
程序员学历擅长经验网店链接
apenny硕士ASP.NET PHP 电子 通信设计 图像 编程 网络5年进入店铺
zheng_qianqian本科C语言 C++面向对象 Java5年进入店铺
guoguanl本科Java Web项目 JSP Hibernate Struts Mysql5年进入店铺