ACM_计算几何
文章平均质量分 67
runninghui
这个作者很懒,什么都没留下…
展开
-
判断两条线段是否相交
思路:即利用叉积判断线段两端点是否都相互横跨#include using namespace std;struct point{ double x,y;};double min(double x,double y){ return x}double max(double x,double y){ return x>原创 2013-04-16 12:44:10 · 859 阅读 · 0 评论 -
旋转卡壳——螺旋三角剖分
出处:http://blog.csdn.net/acmaker/article/details/3314146螺旋三角剖分点集的螺旋三角剖分是基于集合螺旋凸包的三角剖分图。 凸螺旋线可以通过如下方法构造:从一个特定的端点开始(比如给定方向上的最小点), 这里取有最小 x 坐标的点。通过那个点构造一条铅垂线。按照一个给定的方向旋转线(总保持顺时针或者是逆时针方向), 直到线“击”转载 2013-05-31 11:44:07 · 1143 阅读 · 0 评论 -
旋转卡壳——洋葱三角剖分
出处:http://blog.csdn.net/acmaker/article/details/3314201洋葱三角剖分给定一个平面上的点集, 目标是构造一个点集的三角剖分。 从Lennes 1911年二次时间复杂度的源算法到Chazelle 1991线性时间复杂度的算法, 前人已经做了许多关于提高三角剖分算法效率的研究。 这里的焦点是关于一种特殊的三角剖分, 一转载 2013-05-31 11:44:49 · 1184 阅读 · 0 评论 -
旋转卡壳——最薄横截带
出处:http://blog.csdn.net/acmaker/article/details/3561141最薄横截带考虑下述设备放置问题:一个“消费群体群”的集合是以个体呈现为平面上凸多边形的一个家庭 F 给出的。 我们的目标是找到一个“设备”, 一条平面上的直线, 使得线到消费者的最大距离最小。 最后一点需要澄清。 直线与任何一个多边形的距离都是指多边形上一点到线的正转载 2013-05-31 11:51:51 · 960 阅读 · 0 评论 -
旋转卡壳——凸多边形间最大距离
出处:http://blog.csdn.net/acmaker/article/details/3178794凸多边形间最大距离给定两个凸多边形 P 和 Q, 目标是需要找到点对 (p,q) (p 属于 P 且 q 属于 Q) 使得他们之间的距离最大。很直观地,这些点不可能属于他们各自多边形的内部。 这个条件事实上与直径问题非常相似: 两凸多边形 P 和 Q 间最大转载 2013-05-31 11:21:13 · 2453 阅读 · 0 评论 -
旋转卡壳——凸多边形最小周长外接矩形
出处:http://blog.csdn.net/acmaker/article/details/3188177凸多边形最小周长外接矩形这个问题和最小面积外接矩形相似。 我们的目标是找到一个最小盒子(就周长而言)外接多边形 P 。 有趣的是通常情况下最小面积的和最小周长的外接矩形是重合的。 有人不禁想问这是不是总成立的。 下面的例子回答了这个问题: 多边形(灰色的)及其最小面转载 2013-05-31 11:43:13 · 2480 阅读 · 0 评论 -
旋转卡壳——多边形间并踵点对(定义)
出处:http://blog.csdn.net/acmaker/article/details/3561150多边形间并踵点对有向切线一个有向切线就如同其名字所阐述的。 有向切线在区分平行切线同向与反向时候是十分必要的。 进一步假设多边形是顺时针序的(当顶点顺序排布时候是顺时针的)并且多边形的切线当多边形在线的右侧时候是正向的。 相反的, 当多边形在切线的左侧时转载 2013-05-31 11:53:33 · 1112 阅读 · 0 评论 -
计算几何模板
http://blog.csdn.net/mindmb/article/details/6384587转载 2013-08-18 21:30:23 · 803 阅读 · 0 评论 -
求质量分布均匀的n边形的重心
1、质量集中在顶点上, n个顶点坐标为(xi,yi),质量为mi,则重心 X = ∑( xi×mi ) / ∑mi Y = ∑( yi×mi ) / ∑mi 2.若每个点的质量相同则 X = ∑xi / n Y = ∑yi / n 2、质量分布均匀 3。特殊地,质量均匀的三角形重心: X = ( x0 + x1 + x2 ) / 3 Y = ( y0原创 2013-08-19 22:13:58 · 1770 阅读 · 0 评论 -
判断两条线段是否相交
模板(hdu1086)include using namespace std;struct point{ double x,y;};struct segment{ point begin,end;};double min(double x,double y){ return x<y?x:y;}double max(d原创 2013-08-18 13:19:28 · 1457 阅读 · 0 评论 -
旋转卡壳——凸多边形间对踵点对(定义)
出处:http://blog.csdn.net/acmaker/article/details/3561147凸多边形间对踵点对有向切线一个有向切线就如同其名字所阐述的。 有向切线在区分平行切线同向与反向时候是十分必要的。 进一步假设多边形是顺时针序的(当顶点顺序排布时候是顺时针的)并且多边形的切线当多边形在线的右侧时候是正向的。 相反的, 当多边形在切线的左侧转载 2013-05-31 11:52:48 · 1103 阅读 · 0 评论 -
旋转卡壳——凸多边形矢量和
出处:http://blog.csdn.net/acmaker/article/details/3561131凸多边形矢量和给定平面上两个凸多边形 P 和 Q , P 和 Q 的矢量和, 记为 P + Q 定义如下:P + Q = { p + q } 所有的分别属于 P 和 Q 的 p 和 q 。多边形矢量和在 motion planning 中也称为 Minkow转载 2013-05-31 11:50:57 · 1051 阅读 · 0 评论 -
旋转卡壳——临界切线
出处:http://blog.csdn.net/acmaker/article/details/3561127临界切线两个凸多边形间的临界切线(一般被叫做CS线)是使得两个多边形分居线不同侧的切线。 换句话说, 他们分隔了多边形。CS线可以应用于motion planning, visibility 和 range fitting。 下图是关于两个多边形和他们的两条临界切线转载 2013-05-31 11:50:00 · 1001 阅读 · 0 评论 -
旋转卡壳——对踵点对(定义)
出自:http://blog.csdn.net/acmaker/article/details/3561145对踵点对切线给定一个凸多边形 P, 切线 l 是一条与 P 相交并且 P 的内部在 l 的一侧的线。 这个概念与正交切线相似。 对踵点对如果两个点 p 和 q (属于 P) 在两条平行切线上, 那么他们就形成了一个对踵点对转载 2013-05-31 11:15:37 · 2086 阅读 · 0 评论 -
旋转卡壳——凸多边形直径
出处:http://blog.csdn.net/acmaker/article/details/3177045凸多边形直径我们将一个多边形上任意两点间的距离的最大值定义为多边形的直径。 确定这个直径的点对数可能多于一对。 事实上, 对于拥有 n 个顶点的多边形, 就可能有 n 对“直径点对”存在。 一个多边形直径的简单例子如左图所示。 直径点对在图中显示为被平行线转载 2013-05-31 11:17:42 · 1578 阅读 · 0 评论 -
旋转卡壳——凸多边形的宽度
出处:http://blog.csdn.net/acmaker/article/details/3177292凸多边形的宽度定义为平行切线间的最小距离。 这个定义从宽度这个词中已经略有体现。 虽然凸多边形的切线有不同的方向, 并且每个方向上的宽度(通常)是不同的。 但幸运的是, 不是每个方向上都必须被检测。 我们假设存在一个线段 [a,b], 以及两条通过 a 和 b 的平转载 2013-05-31 11:18:58 · 1924 阅读 · 0 评论 -
旋转卡壳——凸多边形间最小距离
出处:http://blog.csdn.net/acmaker/article/details/3178696凸多边形间最小距离给定两个非连接(比如不相交)的凸多边形 P 和 Q, 目标是找到拥有最小距离的点对 (p,q) (p 属于 P 且 q属于 Q)。 事实上, 多边形非连接十分重要, 因为我们所说的多边形包含其内部。 如果多边形相交, 那么最小距离就变得没有转载 2013-05-31 11:19:54 · 1569 阅读 · 0 评论 -
旋转卡壳——凸多边形最小面积外接矩形
出处:http://blog.csdn.net/acmaker/article/details/3188123凸多边形最小面积外接矩形给定一个凸多边形 P , 面积最小的能装下 P (就外围而言)的矩形是怎样的呢? 从技术上说, 给定一个方向, 能计算出 P 的端点并且构由此造出外接矩形。 但是我们需要测试每个情形来获得每个矩形来计算最小面积吗? 谢天谢地, 我们不必那么干。转载 2013-05-31 11:42:29 · 3363 阅读 · 0 评论 -
旋转卡壳——四边形剖分
出处:http://blog.csdn.net/acmaker/article/details/3314243四边形剖分虽然三角剖分是一个更常用的结构, 但最近四边形剖分在某些特定条件下显得更适用, 比如 scattered data interpolation 以及 finite element method 等。 一个四边形剖分实际上是一个点集的四边形分割。 一些与三角剖分本质转载 2013-05-31 11:45:30 · 1214 阅读 · 0 评论 -
旋转卡壳——合并凸包
出处:http://blog.csdn.net/acmaker/article/details/3561051合并凸包考虑如下问题: 给定两个凸多边形, 包含他们并的最小凸多边形是怎样的? 答案即合并凸包后得到的凸多边形。 合并凸包可以通过一个低效的方式实现: 给定两个多边形的所有顶点, 计算这些点对应的凸包。 更高效的方法是存在的, 他依赖于多边形间的 桥 的查找。 下图转载 2013-05-31 11:47:42 · 2139 阅读 · 0 评论 -
旋转卡壳——找公切线
出处:http://blog.csdn.net/acmaker/article/details/3561093找公切线公切线是同时与多边形相切的简单直线, 并且两个多边形都位于线的同一侧。 换句话说, 一条公切线是一条与两个多边形都相切的线。 一个例子如下图所示: 两个不相交的凸多边形和一条他们的公切线事实上, 公切线可以通过多边形间的一些确定桥的点对来转载 2013-05-31 11:48:24 · 1197 阅读 · 0 评论 -
旋转卡壳——凸多边形交
出处:http://blog.csdn.net/acmaker/article/details/3561112凸多边形交给定两个多边形, 我们第一个需要讨论的问题应该是:“他们相交吗?”。 Chazelle 和 Dobkin 1980年在他们的一篇叫做“Detection is easier than computation”的论文中发表了一个对数时间级的算法(论文的名字很贴切)。 对转载 2013-05-31 11:49:09 · 1112 阅读 · 0 评论 -
凸包
#include #include #include using namespace std;const int MAXN = 1005;const double PI = acos(-1.0);const double eps = 0.0000001;typedef struct Point{ int x; int y;}Point;Point p[MAXN]; // 保存原创 2013-08-19 10:59:42 · 1054 阅读 · 0 评论