计算几何模板
maze_illusion
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
半平面交
//符号判断 int sgn( double x ) { if ( fabs(x)<eps ) return 0; if ( x<0 ) return -1; if ( x>0 ) return 1; } //点类定义 struct Point { double x,y; Point(){} Point( double _x ,...原创 2018-09-11 12:50:46 · 192 阅读 · 0 评论 -
线段移动(多边形内缩)
向左移动(对应逆时针): //求两点距离 double dist( Point a , Point b ) { return sqrt( (a-b)*(a-b) ); } //将线段ab往左移动距离r void change( Point a , Point b , Point &c , Point &d , double r ) { double dis = ...原创 2018-09-11 14:17:50 · 1771 阅读 · 0 评论 -
半平面交O(nlogn)版
int sgn( double x ) { if ( fabs(x)<eps ) return 0; if ( x<0 ) return -1; if ( x>0 ) return 1; } struct Point { double x,y; Point(){} Point( double _x , double _y ) ...原创 2018-09-11 17:59:18 · 289 阅读 · 0 评论 -
平面最近点对
初始要先按x升序y升序排个序 struct Point { double x,y; Point(){} Point( double _x , double _y ) { x = _x; y = _y; } Point operator -( const Point&b )const { retur...原创 2018-09-11 18:24:26 · 313 阅读 · 0 评论 -
凸包模板(Graham)
//凸包,Graham算法 //点编号0~n-1 //返回凸包结果Stack[0~Top-1] Point List[maxn],Stack[maxn]; int Top; bool cmp( Point a , Point b ) { double tmp = (a-List[0])^(b-List[0]); if ( tmp>0 ) return true; e...原创 2018-09-11 19:35:00 · 232 阅读 · 0 评论 -
旋转卡壳
一般套路:对散点跑一个凸包出来,然后在凸包上进行旋转卡壳。 例如:(旋转卡壳求两凸包最小距离完整代码) #include<map> #include<set> #include<ctime> #include<stack> #include<cmath> #include<queue> #include<vecto...原创 2018-09-11 20:25:16 · 373 阅读 · 0 评论 -
计算几何知识补充
1.以格子点为顶点的线段,覆盖的点的个数为GCD(dx,dy) 2.Pick公式:顶点坐标均是整点的简单多边形:面积=内部格点数目+边上格点数目/2-1 3.任意一个多边形的面积等于按顺序求相邻两个点与原点组成的向量的叉积之和 三点求圆心坐标(三角形外心) //三点求圆心坐标(三角形外心) Point waixin( Point a , Point b , Point c ) { d...原创 2018-09-12 09:43:10 · 250 阅读 · 0 评论 -
计算几何基本模板
const double eps = 1e-8; const double pi = acos(-1.0); //判浮点数符号 int sgn( double x ) { if ( fabs(x)<eps ) return 0; if ( x<0 ) return -1; if ( x>0 ) return 1; } //Point定义 struct ...原创 2018-09-10 14:35:32 · 234 阅读 · 0 评论 -
凸包模板
//凸包,Andrew算法 //点编号1~n //返回凸包结果Stack[1~Top] Point List[maxn<<1],Stack[maxn<<1]; int Top; bool cmp( Point a , Point b ) { if ( a.x==b.x ) return a.y<b.y; else return a.x<b.x;...原创 2018-07-22 17:01:08 · 313 阅读 · 0 评论 -
Pick公式相关
1.以整点为顶点的线段,覆盖的点的个数为GCD(dx,dy) 2.Pick公式:顶点坐标均是整点的简单多边形:面积=内部格点数+边上格点数/2-1 3.任意一个多边形的面积等于按顺序求相邻两个点与原点组成的向量的叉积之和...原创 2018-09-10 21:13:05 · 495 阅读 · 0 评论 -
多边形旋转模板
const double eps = 1e-8; const double pi = acos(-1); int sgn( double x ) { if ( fabs(x)<eps ) return 0; if ( x<0 ) return -1; if ( x>0 ) return 1; } struct point { double x...原创 2018-10-28 15:20:01 · 600 阅读 · 0 评论 -
线段规范相交与非规范相交
bool norm_Inter( Line l1 , Line l2 ) { double c1 = (l1.e-l1.s)^(l2.s-l1.s); double c2 = (l1.e-l1.s)^(l2.e-l1.s); double c3 = (l2.e-l2.s)^(l1.s-l2.s); double c4 = (l2.e-l2.s)^(l1.e-l2....原创 2018-11-01 14:12:21 · 964 阅读 · 0 评论
分享