计算几何模板 更新中
2012-03-29 23:34
211 查看
今天又切了一题,做题的同时当然也验证了各种模板
每次都感觉有所改进
View Code
每次都感觉有所改进
View Code
#include <math.h> #include <cstdio> #include<algorithm> using namespace std; const int maxn = 100010; const double eps = 1e-8; inline double sgn(double x) {return fabs(x)<eps?0:(x>0?1:-1);} struct point{ double x,y; bool operator == (const point& t) const { return sgn(x-t.x)==0 && sgn(y-t.y)==0; } }p[maxn],set[maxn]; inline double cross(point a,point b,point c){return (b.x-a.x)*(c.y-a.y)-(b.y-a.y)*(c.x-a.x);} bool dotOnSeg(point p, point s, point e) { if ( p == s || p == e ) return true; return sgn(cross(s,e,p))==0 && sgn((p.x-s.x)*(p.x-e.x))<=0 && sgn((p.y-s.y)*(p.y-e.y))<=0; } bool point_in_polygon(point o, point* p, int n) { int i, t; point a, b; p = p[0]; t = 0; for (i=0; i < n; i++) { if ( dotOnSeg(o, p[i], p[i+1]) ) return true; a = p[i]; b = p[i+1]; if ( a.y > b.y ) { point tmp = a; a = b; b = tmp; } if ( cross(o, a, b) < -eps && a.y < o.y-eps && o.y < b.y+eps ) t++; } return t&1; }
相关文章推荐
- 【模板整合】【及时更新】【天坑】计算几何模板
- 【计算几何】【计算几何模板】【持续更新】
- 计算几何基础模板(不间断更新)
- uva 10652 凸包 + 更新版计算几何模板
- 计算几何模板——不断更新
- 计算几何模板--更新中
- [置顶] 【计算几何各种小模板总结贴】[不定期更新]
- 计算几何模板 (更新中)
- 三维计算几何模板[不定期更新]
- 计算几何基础模板 以后还会更新
- 计算几何模板补充(三维空间体积、平面、直线、向量相关计算。附上hdu4741,求异面直线的最短距离与交点)
- 计算几何三维模板
- 计算几何中的精度问题(会不断更新)
- uva11178(二维几何计算模板)
- 计算几何-判断两线段是否相交(模板)
- 计算几何模板 - 大白书
- 计算几何模板
- 计算几何模板——点在线段判定
- 计算几何入门的几个模板
- 三维计算几何模板--表面三角形个数 表面多边形个数 三维凸包 表面积 凸包重心 点到面的距离