随笔分类 - 计算几何
摘要:1 /*UVA10078 2 按顺序输入多边形上的点,判断它是一个凸边形还是凹多边形 3 方法:求凸包,如果凸包的点数少于原来多边形的点数,就一定是凹的,不变则是凸的。 4 所以这里的数目特别重要 5 所以凸包上共线的点要算上,在求凸包的函数中方向向量的旋转,记得是 9 #include 10 #...
阅读全文
摘要:1 /*UVA10002 2 求凸包的质心,而且这道题并没有说明是否按照顺序排序,还是最好求一下凸包 3 注意结构体的构造函数赋初值的问题 4 ps:整理模板 5 */ 6 #include 7 #include 8 #include 9 #include 10 #inc...
阅读全文
摘要:1 /*UVA10088 2 pick定理: 3 在坐标为整数的二维平面内,对于任意多边形,有s=a+b/2-1,其中b是落在边上的点数,a是内部点数,s是多边形的面积 4 两个整点连线上的整点的个数是gcd(dx,dy) 5 You may assume that none of the coo...
阅读全文
摘要:from:http://www.cnblogs.com/jbelial/archive/2011/08/08/2131165.html1. 1 累加和求重心设平面上有N 个离散数据点( xi , yi ) ( i = 1, 2, ., n) , 其多边形重心G( . x1, . y1) 为: 这是求多边形最简单直观的方法。可以直接利用离散数据点的x, y坐标就能求图形重心。但是缺陷在于没有对离散数据点所围图形做任何处理和分析,精度不够。1. 2 算法一:在讲该算法时,先要明白下面几个定理。定理1 已知三角形△A1A2A3的顶点坐标Ai ( xi , yi ) ( i =1, 2, 3) ...
阅读全文
摘要:from:http://blog.csdn.net/hanchengxi/article/details/8639476一、目录一些历史:1978年, M.I. Shamos's Ph.D. 的论文"Computational Geometry"标志着计算机科学的这一领域的诞生。 当时他发表成果的是一个寻找凸多边形直径的一个非常简单的算法, 即根据多边形的一对点距离的最大值来确定。后来直径演化为由一对对踵点对来确定。 Shamos提出了一个简单的O(n)时间的算法来确定一个凸n角形的对踵点对。 因为他们最多只有 3n/2 对, 直径可以在O(n)时间内算出。如同To
阅读全文
摘要:1 /*LA3263计算几何+欧拉定理的应用+线段交判边 2 欧拉定理:顶点+边数-面数=2 3 思路:先找到枚举的范围,减少判断的集合,再筛选。 4 巧妙之处:线段间产生的点如果被夹在原先定点的连线上,则产生一条新的边 5 易错处: 6 1、给出的第一个点和最后一个点是重合的,所以最终有n-1个初始点 7 2、应该统一所有的点,在去重,因为新增点可能和给定点相同 8 3、结构体重载== 时注意精度处理 9 */ 10 #include 11 #include 12 #include 13 #include 14 #include 15 #include 16 ...
阅读全文
摘要:1 /* 2 LA4127计算几何 3 离散化的思想。刘的书上已经说得很清楚。 4 重点是自己手写的函数: 5 1、判断线段和线段的交点 6 2、覆盖在最上面的线段的判断 7 离散化的思想和之前做的LA2527是一致的 8 */ 9 #include 10 #include ...
阅读全文
摘要:1 /*LA 4728 2 凸包算法-旋转卡壳的直径 3 没有其他技巧,可作为模板运用 4 注意operator 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 #include 16 #include 17 #include 18 #include 19 #include 20 #include 21 #define INF 0x3f3f3f3f 22 #define LL long long 23 #de...
阅读全文
摘要:1 /*UVA 11168计算几何 2 凸包+数学思维 3 在直线同一侧的点,带入直线方程后,正负性是一致的,这个是解题的关键 4 所以运用点到直线的距离公式,可以O(1)计算出距离,枚举出最短距离即可 5 这里比较容易犯错的是:1、点斜式竖线无意义(也可用精度处理掉)2、点到直线的距离公式 6 */ 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 #include 16 #include 17 #include...
阅读全文
摘要:1 /* 2 3 UVA 10652计算几何 4 凸包+面的旋转 5 就凸包部分而言,是模板。 6 这道题有个小障碍,就是有确定的图形中心点和转动角度,确定转动后的顶点的坐标。 7 我的方法是,先转动中心点向顶点的向量,再中心加上这个向量。这应该是普适的。 8 */ 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 #include 16 #include 17 #include 18 #include 19 #include 20 #include ...
阅读全文
摘要:1 /*UVA 10969计算几何 2 这道题和LA2572相似,但相对简单些。 3 思路:求圆间的交点,顺序枚举出圆上的圆弧,中点判断是否被覆盖。 4 */ 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 #include 16 #include 17 #include 18 #include 19 #include 20 #define INF 0x3f3...
阅读全文
摘要:1 /* 后来看到的极角排序,值得一看:http://blog.csdn.net/zxy_snow/article/details/6700847 2 LA2572计算几何 3 4 解题思路: 5 1、小圆面是由小圆弧围成。那么找出每条小圆弧,如果小圆弧,在小圆弧中点上下左右进行微小位移的所得的点一定在一个小圆面内。 6 找到最后覆盖这个小点的圆一定是可见的。 7 2、圆上的点按照相邻依次排序的关键量为极角(0,2PI) 8 3、用中心点代替圆弧本身是否被圆覆盖 9 10 11 感悟: 12 这道题是一道计算几何思维非常综合的题目,如下: 13 1、离散化和按顺序扫...
阅读全文
摘要:1 /* 2 LA2402: 3 题意:在矩形中给定横线(竖)之间不交叉的n对线,求被分割的小块的最大面积 4 读懂题意就可以发现是思路很简单的题目 5 枚举+几何计算,时间复杂度度不高 6 熟悉了部分函数的运用 7 8 */ 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 #include 16 #include 17 #include 18 #include 19 #include 20 #include 21 #include 22 #inc...
阅读全文
摘要:1 /*UVA10566 2 平面几何: 3 相似三角形,公式法。 4 但是关键是设变量角度rad,通过分析,可知计算出来的y是一个单调函数,当y恰好等于给定y时,对应的角度就是解题的关键 5 这样,就可以通过二分逼近答案了 6 but,but,but; 7 调试过程中,发现是一个凸函数,故转而用三分解决。 8 but,but,but; 9 答案不对,最终知道,还是二分,为什么像三分呢,因为二分变量的取值范围不对了。(这点是日后要注意的)10 所以下次尽量保证代数式的范围正确性11 */12 #include13 #include14 #include15 #include16 #inclu.
阅读全文
摘要:1 /*UVA11300 2 平面几何: 3 正n边形内的最长的线是哪条? 4 归纳推理: 5 举例n=3,4,5,6;n为偶数,因为正对的两个点在分割的圆上,所以最长 6 n为奇数,做顶点到对边的垂线,定点到相对点的连线,因为构成直角三角形,所以斜边大于直角边,得证对顶点连线最长 7 假设最长边长为2*x,则 8 S(n,x)=n*0.5*x*x*sin(2Pi/n);偶数 9 S(n,x) =n*0.5*r*r*sin(2pi/n);奇数10 r=x/(sin((int)n/2/n*2*pi))11 ps:想到最长边这个思路很关键12 */13 #inclu...
阅读全文
摘要:/*UVA11524平面几何:使用到的知识比较零碎:1、三角形内切圆是角平分线的交点,所以连接圆心和顶点,能产生3对全等三角形2、利用等量关系表示其他量3、求三角形的两种方法:海伦公式+周长*半径/24、当代数式太复杂,手动难以化简,考虑用计算方法二分解决。*/#include#include#include#include#include#include#include#include#include#define LL long longusing namespace std;//输入 r,m1, n1, m2, n2, m3 and n3double r,m1,n1,m2,n2,m3,n
阅读全文
摘要:1 /*LA4986 2 三分法求出凹性函数最小值: 3 三分法本身的写法不难,这道题的关键是数学: 4 1、找到表示量h,找到r与h的唯一确定关系,进而确定了h,就确定了相应的v 5 2、判断出v(h)是一个凹性函数。因为r受离散的点的影响,无法从列函数,确定凹性。 6 我也仅仅是从极限的思想上考虑的。当h无限小,由(0,0,h)连向点p的直线越平,r趋向于无穷; 7 当h无限大时,r的增长速度更不上h,h趋向于无穷。 8 3、故v(h)的两边是无限增大的 9 */10 #include11 #include12 #include13 #include14 #include15 #incl.
阅读全文
摘要:1 /*UVA11817 2 3 计算几何: 4 5 总结一下公式: 6 7 1、给定圆上两点坐标 8 9 设直线距离=d 10 11 圆弧距离=2*asin(d/2/r)*r 12 13 2、拓展到球体上 14 15 设直线距离=d 16 17 最短圆弧距离=和上面相同 18 19 这里有个弯要转一下,最短弧的切面必过圆心 20 21 3、地球上坐标点用经纬度表示 22 23 from:摘录 24 25 设第一点A的经纬度为(LonA, LatA),第二点B的经纬度为(LonB, LatB), 26 27 按照0度经线的基准,东经北纬取经度的正值...
阅读全文