随笔分类 - 计算几何
摘要:分治法,将所有点按x坐标进行排序,然后左右两半的点分别递归解决 考虑左边的点和右边的点的距离对答案产生的贡献:首先左右两半点分边计算得到的距离最小值为dis。显然只需要考虑和$P_$的x坐标相差不超过dis的点,对于这些点中的任意一点i,显然只需要考虑和i的y表座相差不超过dis的点,可以证明对于每
阅读全文
摘要:Graham 算法 先选一个y最小的点p(y相同选x最小) 然后将其他点以p为原点进行极角排序 从p点开始维护一个单调栈,如果栈顶两个元素和新加入点的叉积小于0就弹出。 Point tbBottom; bool cmpTB(Point a,Point b) {//上半平面极角排序; double x
阅读全文
摘要:定义: 给定平面上一个反演中心$O$,给定反演半径$r$,对于平面上任意一个点$A$,都可以找到一个点$A'$,使得$OA*OA'=r^2$,称$A'$为$A$关于$O$的反演点,以$O$为圆心$r$为半径的圆称为反演圆。(下图中圆K为反演圆,A和B互为反演点) 性质 过反演中心的直线反演后就是自身
阅读全文
摘要:HDU4773 Problem of Apollonius(反演变换) 题意: 给定两个相离的圆,一个点P,求出过点P并且和两个圆都外切的所有圆。 思路: 以P为反演中心将两个圆O1,O2分别反演,得到O1',O2',则和O1,O2相切的圆反演后是一条不经过P点且与O1'、O2‘相切的直线。显然这条
阅读全文
摘要:POJ1279 半平面交模板 题意 以顺时针或逆时针顺序给定一个多边形,求该多边形核的面积 解法 半平面交要求边要按逆时针顺序,首先利用叉积判断给定点顺序为逆时针还是顺时针,然后按逆时针方向建边,最后跑半平面交算法,得到多边形的核。对核中相邻边求交点,利用叉积计算面积。 代码: #include <
阅读全文
摘要:计算几何基础模板 基础类型 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; return 1; } st
阅读全文